diff --git a/AUTS_AOI/bin/Debug/AUTS_AOI.exe b/AUTS_AOI/bin/Debug/AUTS_AOI.exe deleted file mode 100644 index 53686a0..0000000 Binary files a/AUTS_AOI/bin/Debug/AUTS_AOI.exe and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/AUTS_AOI.exe.config b/AUTS_AOI/bin/Debug/AUTS_AOI.exe.config deleted file mode 100644 index 3f28745..0000000 --- a/AUTS_AOI/bin/Debug/AUTS_AOI.exe.config +++ /dev/null @@ -1,57 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - - - 4 - - - True - - - - \ No newline at end of file diff --git a/AUTS_AOI/bin/Debug/AUTS_AOI.pdb b/AUTS_AOI/bin/Debug/AUTS_AOI.pdb deleted file mode 100644 index b0f5295..0000000 Binary files a/AUTS_AOI/bin/Debug/AUTS_AOI.pdb and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/BouncyCastle.Crypto.dll b/AUTS_AOI/bin/Debug/BouncyCastle.Crypto.dll deleted file mode 100644 index 05036dd..0000000 Binary files a/AUTS_AOI/bin/Debug/BouncyCastle.Crypto.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/FlexCell.dll b/AUTS_AOI/bin/Debug/FlexCell.dll deleted file mode 100644 index 0f6c38e..0000000 Binary files a/AUTS_AOI/bin/Debug/FlexCell.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/FluentFTP.dll b/AUTS_AOI/bin/Debug/FluentFTP.dll deleted file mode 100644 index 14597be..0000000 Binary files a/AUTS_AOI/bin/Debug/FluentFTP.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/Google.Protobuf.dll b/AUTS_AOI/bin/Debug/Google.Protobuf.dll deleted file mode 100644 index 39527f2..0000000 Binary files a/AUTS_AOI/bin/Debug/Google.Protobuf.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/Google.Protobuf.pdb b/AUTS_AOI/bin/Debug/Google.Protobuf.pdb deleted file mode 100644 index c6f83b3..0000000 Binary files a/AUTS_AOI/bin/Debug/Google.Protobuf.pdb and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/Google.Protobuf.xml b/AUTS_AOI/bin/Debug/Google.Protobuf.xml deleted file mode 100644 index eb6b0d4..0000000 --- a/AUTS_AOI/bin/Debug/Google.Protobuf.xml +++ /dev/null @@ -1,11896 +0,0 @@ - - - - Google.Protobuf - - - - - Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy - - - - - The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy - - - - - Determines which copy routine to use based on the number of bytes to be copied. - - - - - Reverses the order of bytes in the array - - - - - Immutable array of bytes. - - - - - Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. - - - - - Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. - This method encapsulates converting array to memory. Reduces need for SecuritySafeCritical - in .NET Framework. - - - - - Constructs a new ByteString from the given memory. The memory is - *not* copied, and must not be modified after this constructor is called. - - - - - Returns an empty ByteString. - - - - - Returns the length of this ByteString in bytes. - - - - - Returns true if this byte string is empty, false otherwise. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Converts this into a byte array. - - The data is copied - changes to the returned array will not be reflected in this ByteString. - A byte array with the same data as this ByteString. - - - - Converts this into a standard base64 representation. - - A base64 representation of this ByteString. - - - - Constructs a from the Base64 Encoded String. - - - - - Constructs a from data in the given stream, synchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - A ByteString with content read from the given stream. - - - - Constructs a from data in the given stream, asynchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - The cancellation token to use when reading from the stream, if any. - A ByteString with content read from the given stream. - - - - Constructs a from the given array. The contents - are copied, so further modifications to the array will not - be reflected in the returned ByteString. - This method can also be invoked in ByteString.CopyFrom(0xaa, 0xbb, ...) form - which is primarily useful for testing. - - - - - Constructs a from a portion of a byte array. - - - - - Constructs a from a read only span. The contents - are copied, so further modifications to the span will not - be reflected in the returned . - - - - - Creates a new by encoding the specified text with - the given encoding. - - - - - Creates a new by encoding the specified text in UTF-8. - - - - - Returns the byte at the given index. - - - - - Converts this into a string by applying the given encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with the given encoding. - - The encoding to use to decode the binary data into text. - The result of decoding the binary data with the given decoding. - - - - Converts this into a string by applying the UTF-8 encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with UTF-8. - - The result of decoding the binary data with the given decoding. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Creates a CodedInputStream from this ByteString's data. - - - - - Compares two byte strings for equality. - - The first byte string to compare. - The second byte string to compare. - true if the byte strings are equal; false otherwise. - - - - Compares two byte strings for inequality. - - The first byte string to compare. - The second byte string to compare. - false if the byte strings are equal; true otherwise. - - - - Compares this byte string with another object. - - The object to compare this with. - true if refers to an equal ; false otherwise. - - - - Returns a hash code for this object. Two equal byte strings - will return the same hash code. - - A hash code for this object. - - - - Compares this byte string with another. - - The to compare this with. - true if refers to an equal byte string; false otherwise. - - - - Copies the entire byte array to the destination array provided at the offset specified. - - - - - Writes the entire byte array to the provided stream - - - - - SecuritySafeCritical attribute can not be placed on types with async methods. - This class has ByteString's async methods so it can be marked with SecuritySafeCritical. - - - - - Reads and decodes protocol message fields. - - - - This class is generally used by generated code to read appropriate - primitives from the stream. It effectively encapsulates the lowest - levels of protocol buffer format. - - - Repeated fields and map fields are not handled by this class; use - and to serialize such fields. - - - - - - Whether to leave the underlying stream open when disposing of this stream. - This is always true when there's no stream. - - - - - Buffer of data read from the stream or provided at construction time. - - - - - The stream to read further input from, or null if the byte array buffer was provided - directly on construction, with no further data available. - - - - - The parser state is kept separately so that other parse implementations can reuse the same - parsing primitives. - - - - - Creates a new CodedInputStream reading data from the given byte array. - - - - - Creates a new that reads from the given byte array slice. - - - - - Creates a new reading data from the given stream, which will be disposed - when the returned object is disposed. - - The stream to read from. - - - - Creates a new reading data from the given stream. - - The stream to read from. - true to leave open when the returned - is disposed; false to dispose of the given stream when the - returned object is disposed. - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the default limits. - - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the specified limits. - - - This chains to the version with the default limits instead of vice versa to avoid - having to check that the default values are valid every time. - - - - - Creates a with the specified size and recursion limits, reading - from an input stream. - - - This method exists separately from the constructor to reduce the number of constructor overloads. - It is likely to be used considerably less frequently than the constructors, as the default limits - are suitable for most use cases. - - The input stream to read from - The total limit of data to read from the stream. - The maximum recursion depth to allow while reading. - A CodedInputStream reading from with the specified size - and recursion limits. - - - - Returns the current position in the input stream, or the position in the input buffer - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the stream. - - - - - Returns the size limit for this stream. - - - This limit is applied when reading from the underlying stream, as a sanity check. It is - not applied when reading from a byte array data source without an underlying stream. - The default value is Int32.MaxValue. - - - The size limit. - - - - - Returns the recursion limit for this stream. This limit is applied whilst reading messages, - to avoid maliciously-recursive data. - - - The default limit is 100. - - - The recursion limit for this stream. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Disposes of this instance, potentially closing any underlying stream. - - - As there is no flushing to perform here, disposing of a which - was constructed with the leaveOpen option parameter set to true (or one which - was constructed to read from a byte array) has no effect. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Reads a field tag, returning the tag of 0 for "end of stream". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputStream; it may be the end of the logical stream - for an embedded message, for example. - - The next field tag, or 0 for end of stream. (0 is never a valid tag.) - - - - Skips the data for the field with the tag we've just read. - This should be called directly after , when - the caller wishes to skip an unknown field. - - - This method throws if the last-read tag was an end-group tag. - If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the - start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly - resulting in an error if an end-group tag has not been paired with an earlier start-group tag. - - The last tag was an end-group tag - The last read operation read to the end of the logical stream - - - - Skip a group. - - - - - Reads a double field from the stream. - - - - - Reads a float field from the stream. - - - - - Reads a uint64 field from the stream. - - - - - Reads an int64 field from the stream. - - - - - Reads an int32 field from the stream. - - - - - Reads a fixed64 field from the stream. - - - - - Reads a fixed32 field from the stream. - - - - - Reads a bool field from the stream. - - - - - Reads a string field from the stream. - - - - - Reads an embedded message field value from the stream. - - - - - Reads an embedded group field from the stream. - - - - - Reads a bytes field value from the stream. - - - - - Reads a uint32 field value from the stream. - - - - - Reads an enum field value from the stream. - - - - - Reads an sfixed32 field value from the stream. - - - - - Reads an sfixed64 field value from the stream. - - - - - Reads an sint32 field value from the stream. - - - - - Reads an sint64 field value from the stream. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Reads a raw varint from the stream. - - - - - Reads a 32-bit little-endian integer from the stream. - - - - - Reads a 64-bit little-endian integer from the stream. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads a top-level message or a nested message after the limits for this message have been pushed. - (parser will proceed until the end of the current limit) - NOTE: this method needs to be public because it's invoked by the generated code - e.g. msg.MergeFrom(CodedInputStream input) method - - - - - Encodes and writes protocol message fields. - - - - This class is generally used by generated code to write appropriate - primitives to the stream. It effectively encapsulates the lowest - levels of protocol buffer format. Unlike some other implementations, - this does not include combined "write tag and value" methods. Generated - code knows the exact byte representations of the tags they're going to write, - so there's no need to re-encode them each time. Manually-written code calling - this class should just call one of the WriteTag overloads before each value. - - - Repeated fields and map fields are not handled by this class; use RepeatedField<T> - and MapField<TKey, TValue> to serialize such fields. - - - - - - Computes the number of bytes that would be needed to encode a - double field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - float field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bool field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - string field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - group field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - embedded message field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bytes field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - enum field, including the tag. The caller is responsible for - converting the enum value to its numeric value. - - - - - Computes the number of bytes that would be needed to encode an - sfixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sfixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a length, - as written by . - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a tag. - - - - - The buffer size used by CreateInstance(Stream). - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array slice. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new which write to the given stream, and disposes of that - stream when the returned CodedOutputStream is disposed. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - The size of buffer to use internally. - - - - Creates a new CodedOutputStream which write to the given stream. - - The stream to write to. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. - The size of buffer to use internally. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Returns the current position in the stream, or the position in the output buffer - - - - - Configures whether or not serialization is deterministic. - - - Deterministic serialization guarantees that for a given binary, equal messages (defined by the - equals methods in protos) will always be serialized to the same bytes. This implies: - - Repeated serialization of a message will return the same bytes. - Different processes of the same binary (which may be executing on different machines) - will serialize equal messages to the same bytes. - - Note the deterministic serialization is NOT canonical across languages; it is also unstable - across different builds with schema changes due to unknown fields. Users who need canonical - serialization, e.g. persistent storage in a canonical form, fingerprinting, etc, should define - their own canonicalization specification and implement the serializer using reflection APIs - rather than relying on this API. - Once set, the serializer will: (Note this is an implementation detail and may subject to - change in the future) - - Sort map entries by keys in lexicographical order or numerical order. Note: For string - keys, the order is based on comparing the UTF-16 code unit value of each character in the strings. - The order may be different from the deterministic serialization in other languages where - maps are sorted on the lexicographical order of the UTF8 encoded keys. - - - - - - Writes a double field value, without a tag, to the stream. - - The value to write - - - - Writes a float field value, without a tag, to the stream. - - The value to write - - - - Writes a uint64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int32 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed64 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed32 field value, without a tag, to the stream. - - The value to write - - - - Writes a bool field value, without a tag, to the stream. - - The value to write - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - Only the message data is written, without a length-delimiter. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag, to the stream. - - The value to write - - - - Writes an enum value, without a tag, to the stream. - - The value to write - - - - Writes an sfixed32 value, without a tag, to the stream. - - The value to write. - - - - Writes an sfixed64 value, without a tag, to the stream. - - The value to write - - - - Writes an sint32 value, without a tag, to the stream. - - The value to write - - - - Writes an sint64 value, without a tag, to the stream. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag directly to the stream. - - The encoded tag - - - - Writes the given two-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Indicates that a CodedOutputStream wrapping a flat byte array - ran out of space. - - - - - Flushes any buffered data and optionally closes the underlying stream, if any. - - - - By default, any underlying stream is closed by this method. To configure this behaviour, - use a constructor overload with a leaveOpen parameter. If this instance does not - have an underlying stream, this method does nothing. - - - For the sake of efficiency, calling this method does not prevent future write calls - but - if a later write ends up writing to a stream which has been disposed, that is likely to - fail. It is recommend that you not call any other methods after this. - - - - - - Flushes any buffered data to the underlying stream (if there is one). - - - - - Verifies that SpaceLeft returns zero. It's common to create a byte array - that is exactly big enough to hold a message, then write to it with - a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that - the message was actually as big as expected, which can help finding bugs. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - Utility to compare if two Lists are the same, and the hash code - of a List. - - - - - Checks if two lists are equal. - - - - - Gets the list's hash code. - - - - - Representation of a map field in a Protocol Buffer message. - - Key type in the map. Must be a type supported by Protocol Buffer map keys. - Value type in the map. Must be a type supported by Protocol Buffers. - - - For string keys, the equality comparison is provided by . - - - Null values are not permitted in the map, either for wrapper types or regular messages. - If a map is deserialized from a data stream and the value is missing from an entry, a default value - is created instead. For primitive types, that is the regular default value (0, the empty string and so - on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length - encoded value for the field. - - - This implementation does not generally prohibit the use of key/value types which are not - supported by Protocol Buffers (e.g. using a key type of byte) but nor does it guarantee - that all operations will work in such cases. - - - The order in which entries are returned when iterating over this object is undefined, and may change - in future versions. - - - - - - Creates a deep clone of this object. - - - A deep clone of this object. - - - - - Adds the specified key/value pair to the map. - - - This operation fails if the key already exists in the map. To replace an existing entry, use the indexer. - - The key to add - The value to add. - The given key already exists in map. - - - - Determines whether the specified key is present in the map. - - The key to check. - true if the map contains the given key; false otherwise. - - - - Removes the entry identified by the given key from the map. - - The key indicating the entry to remove from the map. - true if the map contained the given key before the entry was removed; false otherwise. - - - - Gets the value associated with the specified key. - - The key whose value to get. - When this method returns, the value associated with the specified key, if the key is found; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - true if the map contains an element with the specified key; otherwise, false. - - - - Gets or sets the value associated with the specified key. - - The key of the value to get or set. - The property is retrieved and key does not exist in the collection. - The value associated with the specified key. If the specified key is not found, - a get operation throws a , and a set operation creates a new element with the specified key. - - - - Gets a collection containing the keys in the map. - - - - - Gets a collection containing the values in the map. - - - - - Adds the specified entries to the map. The keys and values are not automatically cloned. - - The entries to add to the map. - - - - Adds the specified entries to the map, replacing any existing entries with the same keys. - The keys and values are not automatically cloned. - - This method primarily exists to be called from MergeFrom methods in generated classes for messages. - The entries to add to the map. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Adds the specified item to the map. - - The item to add to the map. - - - - Removes all items from the map. - - - - - Determines whether map contains an entry equivalent to the given key/value pair. - - The key/value pair to find. - - - - - Copies the key/value pairs in this map to an array. - - The array to copy the entries into. - The index of the array at which to start copying values. - - - - Removes the specified key/value pair from the map. - - Both the key and the value must be found for the entry to be removed. - The key/value pair to remove. - true if the key/value pair was found and removed; false otherwise. - - - - Gets the number of elements contained in the map. - - - - - Gets a value indicating whether the map is read-only. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this map with another for equality. - - - The order of the key/value pairs in the maps is not deemed significant in this comparison. - - The map to compare this with. - true if refers to an equal map; false otherwise. - - - - Adds entries to the map from the given stream. - - - It is assumed that the stream is initially positioned after the tag specified by the codec. - This method will continue reading entries from the stream until the end is reached, or - a different tag is encountered. - - Stream to read from - Codec describing how the key/value pairs are encoded - - - - Adds entries to the map from the given parse context. - - - It is assumed that the input is initially positioned after the tag specified by the codec. - This method will continue reading entries from the input until the end is reached, or - a different tag is encountered. - - Input to read from - Codec describing how the key/value pairs are encoded - - - - Writes the contents of this map to the given coded output stream, using the specified codec - to encode each entry. - - The output stream to write to. - The codec to use for each entry. - - - - Writes the contents of this map to the given write context, using the specified codec - to encode each entry. - - The write context to write to. - The codec to use for each entry. - - - - Calculates the size of this map based on the given entry codec. - - The codec to use to encode each entry. - - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - A codec for a specific map field. This contains all the information required to encode and - decode the nested messages. - - - - - Creates a new entry codec based on a separate key codec and value codec, - and the tag to use for each map entry. - - The key codec. - The value codec. - The map tag to use to introduce each map entry. - - - - The key codec. - - - - - The value codec. - - - - - The tag used in the enclosing message to indicate map entries. - - - - - Provides a central place to implement equality comparisons, primarily for bitwise float/double equality. - - - - - Returns an equality comparer for suitable for Protobuf equality comparisons. - This is usually just the default equality comparer for the type, but floating point numbers are compared - bitwise. - - The type of equality comparer to return. - The equality comparer. - - - - Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - The contents of a repeated field: essentially, a collection with some extra - restrictions (no null values) and capabilities (deep cloning). - - - This implementation does not generally prohibit the use of types which are not - supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases. - - The element type of the repeated field. - - - - Creates a deep clone of this repeated field. - - - If the field type is - a message type, each element is also cloned; otherwise, it is - assumed that the field type is primitive (including string and - bytes, both of which are immutable) and so a simple copy is - equivalent to a deep clone. - - A deep clone of this repeated field. - - - - Adds the entries from the given input stream, decoding them with the specified codec. - - The input stream to read from. - The codec to use in order to read each entry. - - - - Adds the entries from the given parse context, decoding them with the specified codec. - - The input to read from. - The codec to use in order to read each entry. - - - - Calculates the size of this collection based on the given codec. - - The codec to use when encoding each field. - The number of bytes that would be written to an output by one of the WriteTo methods, - using the same codec. - - - - Writes the contents of this collection to the given , - encoding each value using the specified codec. - - The output stream to write to. - The codec to use when encoding each value. - - - - Writes the contents of this collection to the given write context, - encoding each value using the specified codec. - - The write context to write to. - The codec to use when encoding each value. - - - - Gets and sets the capacity of the RepeatedField's internal array. - When set, the internal array is reallocated to the given capacity. - The new value is less than . - - - - - Adds the specified item to the collection. - - The item to add. - - - - Removes all items from the collection. - - - - - Determines whether this collection contains the given item. - - The item to find. - true if this collection contains the given item; false otherwise. - - - - Copies this collection to the given array. - - The array to copy to. - The first index of the array to copy to. - - - - Removes the specified item from the collection - - The item to remove. - true if the item was found and removed; false otherwise. - - - - Gets the number of elements contained in the collection. - - - - - Gets a value indicating whether the collection is read-only. - - - - - Adds all of the specified values into this collection. - - The values to add to this collection. - - - - Adds the elements of the specified span to the end of the collection. - - The span whose elements should be added to the end of the collection. - - - - Adds all of the specified values into this collection. This method is present to - allow repeated fields to be constructed from queries within collection initializers. - Within non-collection-initializer code, consider using the equivalent - method instead for clarity. - - The values to add to this collection. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this repeated field with another for equality. - - The repeated field to compare this with. - true if refers to an equal repeated field; false otherwise. - - - - Returns the index of the given item within the collection, or -1 if the item is not - present. - - The item to find in the collection. - The zero-based index of the item, or -1 if it is not found. - - - - Inserts the given item at the specified index. - - The index at which to insert the item. - The item to insert. - - - - Removes the item at the given index. - - The zero-based index of the item to remove. - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - Gets or sets the item at the specified index. - - - The element at the specified index. - - The zero-based index of the element to get or set. - The item at the specified index. - - - - Extension methods for , effectively providing - the familiar members from previous desktop framework versions while - targeting the newer releases, .NET Core etc. - - - - - Returns the public getter of a property, or null if there is no such getter - (either because it's read-only, or the getter isn't public). - - - - - Returns the public setter of a property, or null if there is no such setter - (either because it's write-only, or the setter isn't public). - - - - - Provides extension methods on Type that just proxy to TypeInfo. - These are used to support the new type system from .NET 4.5, without - having calls to GetTypeInfo all over the place. While the methods here are meant to be - broadly compatible with the desktop framework, there are some subtle differences in behaviour - but - they're not expected to affect our use cases. While the class is internal, that should be fine: we can - evaluate each new use appropriately. - - - - - See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom - - - - - Returns a representation of the public property associated with the given name in the given type, - including inherited properties or null if there is no such public property. - Here, "public property" means a property where either the getter, or the setter, or both, is public. - - - - - Returns a representation of the public method associated with the given name in the given type, - including inherited methods. - - - This has a few differences compared with Type.GetMethod in the desktop framework. It will throw - if there is an ambiguous match even between a private method and a public one, but it *won't* throw - if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and - class Child : Base declares public void Foo(long)). - - One type in the hierarchy declared more than one method with the same name - - - Holder for reflection information generated from google/protobuf/compiler/plugin.proto - - - File descriptor for google/protobuf/compiler/plugin.proto - - - - The version number of protocol compiler. - - - - Field number for the "major" field. - - - Gets whether the "major" field is set - - - Clears the value of the "major" field - - - Field number for the "minor" field. - - - Gets whether the "minor" field is set - - - Clears the value of the "minor" field - - - Field number for the "patch" field. - - - Gets whether the "patch" field is set - - - Clears the value of the "patch" field - - - Field number for the "suffix" field. - - - - A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - be empty for mainline stable releases. - - - - Gets whether the "suffix" field is set - - - Clears the value of the "suffix" field - - - - An encoded CodeGeneratorRequest is written to the plugin's stdin. - - - - Field number for the "file_to_generate" field. - - - - The .proto files that were explicitly listed on the command-line. The - code generator should generate code only for these files. Each file's - descriptor will be included in proto_file, below. - - - - Field number for the "parameter" field. - - - - The generator parameter passed on the command-line. - - - - Gets whether the "parameter" field is set - - - Clears the value of the "parameter" field - - - Field number for the "proto_file" field. - - - - FileDescriptorProtos for all files in files_to_generate and everything - they import. The files will appear in topological order, so each file - appears before any file that imports it. - - Note: the files listed in files_to_generate will include runtime-retention - options only, but all other files will include source-retention options. - The source_file_descriptors field below is available in case you need - source-retention options for files_to_generate. - - protoc guarantees that all proto_files will be written after - the fields above, even though this is not technically guaranteed by the - protobuf wire format. This theoretically could allow a plugin to stream - in the FileDescriptorProtos and handle them one by one rather than read - the entire set into memory at once. However, as of this writing, this - is not similarly optimized on protoc's end -- it will store all fields in - memory at once before sending them to the plugin. - - Type names of fields and extensions in the FileDescriptorProto are always - fully qualified. - - - - Field number for the "source_file_descriptors" field. - - - - File descriptors with all options, including source-retention options. - These descriptors are only provided for the files listed in - files_to_generate. - - - - Field number for the "compiler_version" field. - - - - The version number of protocol compiler. - - - - - The plugin writes an encoded CodeGeneratorResponse to stdout. - - - - Field number for the "error" field. - - - - Error message. If non-empty, code generation failed. The plugin process - should exit with status code zero even if it reports an error in this way. - - This should be used to indicate errors in .proto files which prevent the - code generator from generating correct code. Errors which indicate a - problem in protoc itself -- such as the input CodeGeneratorRequest being - unparseable -- should be reported by writing a message to stderr and - exiting with a non-zero status code. - - - - Gets whether the "error" field is set - - - Clears the value of the "error" field - - - Field number for the "supported_features" field. - - - - A bitmask of supported features that the code generator supports. - This is a bitwise "or" of values from the Feature enum. - - - - Gets whether the "supported_features" field is set - - - Clears the value of the "supported_features" field - - - Field number for the "minimum_edition" field. - - - - The minimum edition this plugin supports. This will be treated as an - Edition enum, but we want to allow unknown values. It should be specified - according the edition enum value, *not* the edition number. Only takes - effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. - - - - Gets whether the "minimum_edition" field is set - - - Clears the value of the "minimum_edition" field - - - Field number for the "maximum_edition" field. - - - - The maximum edition this plugin supports. This will be treated as an - Edition enum, but we want to allow unknown values. It should be specified - according the edition enum value, *not* the edition number. Only takes - effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. - - - - Gets whether the "maximum_edition" field is set - - - Clears the value of the "maximum_edition" field - - - Field number for the "file" field. - - - Container for nested types declared in the CodeGeneratorResponse message type. - - - - Sync with code_generator.h. - - - - - Represents a single generated file. - - - - Field number for the "name" field. - - - - The file name, relative to the output directory. The name must not - contain "." or ".." components and must be relative, not be absolute (so, - the file cannot lie outside the output directory). "/" must be used as - the path separator, not "\". - - If the name is omitted, the content will be appended to the previous - file. This allows the generator to break large files into small chunks, - and allows the generated text to be streamed back to protoc so that large - files need not reside completely in memory at one time. Note that as of - this writing protoc does not optimize for this -- it will read the entire - CodeGeneratorResponse before writing files to disk. - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "insertion_point" field. - - - - If non-empty, indicates that the named file should already exist, and the - content here is to be inserted into that file at a defined insertion - point. This feature allows a code generator to extend the output - produced by another code generator. The original generator may provide - insertion points by placing special annotations in the file that look - like: - @@protoc_insertion_point(NAME) - The annotation can have arbitrary text before and after it on the line, - which allows it to be placed in a comment. NAME should be replaced with - an identifier naming the point -- this is what other generators will use - as the insertion_point. Code inserted at this point will be placed - immediately above the line containing the insertion point (thus multiple - insertions to the same point will come out in the order they were added). - The double-@ is intended to make it unlikely that the generated code - could contain things that look like insertion points by accident. - - For example, the C++ code generator places the following line in the - .pb.h files that it generates: - // @@protoc_insertion_point(namespace_scope) - This line appears within the scope of the file's package namespace, but - outside of any particular class. Another plugin can then specify the - insertion_point "namespace_scope" to generate additional classes or - other declarations that should be placed in this scope. - - Note that if the line containing the insertion point begins with - whitespace, the same whitespace will be added to every line of the - inserted text. This is useful for languages like Python, where - indentation matters. In these languages, the insertion point comment - should be indented the same amount as any inserted code will need to be - in order to work correctly in that context. - - The code generator that generates the initial file and the one which - inserts into it must both run as part of a single invocation of protoc. - Code generators are executed in the order in which they appear on the - command line. - - If |insertion_point| is present, |name| must also be present. - - - - Gets whether the "insertion_point" field is set - - - Clears the value of the "insertion_point" field - - - Field number for the "content" field. - - - - The file contents. - - - - Gets whether the "content" field is set - - - Clears the value of the "content" field - - - Field number for the "generated_code_info" field. - - - - Information describing the file content being inserted. If an insertion - point is used, this information will be appropriately offset and inserted - into the code generation metadata for the generated files. - - - - - Represents a non-generic extension definition. This API is experimental and subject to change. - - - - - Internal use. Creates a new extension with the specified field number. - - - - - Gets the field number of this extension - - - - - Represents a type-safe extension identifier used for getting and setting single extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The field value type of this extension - - - - Creates a new extension identifier with the specified field number and codec - - - - - Represents a type-safe extension identifier used for getting repeated extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The repeated field value type of this extension - - - - Creates a new repeated extension identifier with the specified field number and codec - - - - - Provides extensions to messages while parsing. This API is experimental and subject to change. - - - - - Creates a new empty extension registry - - - - - Gets the total number of extensions in this extension registry - - - - - Returns whether the registry is readonly - - - - - Adds the specified extension to the registry - - - - - Adds the specified extensions to the registry - - - - - Clears the registry of all values - - - - - Gets whether the extension registry contains the specified extension - - - - - Copies the arrays in the registry set to the specified array at the specified index - - The array to copy to - The array index to start at - - - - Returns an enumerator to enumerate through the items in the registry - - Returns an enumerator for the extensions in this registry - - - - Removes the specified extension from the set - - The extension - true if the extension was removed, otherwise false - - - - Clones the registry into a new registry - - - - - Methods for managing s with null checking. - - Most users will not use this class directly and its API is experimental and subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if it doesn't exist in this set - - - - - Gets the value of the specified repeated extension, registering it if it doesn't exist - - - - - Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null. - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified extension - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Merges the second set into the first set, creating a new instance if first is null - - - - - Clones the set into a new set. If the set is null, this returns null - - - - - Used for keeping track of extensions in messages. - methods route to this set. - - Most users will not need to use this class directly - - The message type that extensions in this set target - - - - Gets a hash code of the set - - - - - Returns whether this set is equal to the other object - - - - - Calculates the size of this extension set - - - - - Writes the extension values in this set to the output stream - - - - - Writes the extension values in this set to the write context - - - - - Factory methods for . - - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - A codec for the given tag. - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a message field with the given tag. - - The tag. - A parser to use for the message type. - A codec for the given tag. - - - - Retrieves a codec suitable for a group field with the given tag. - - The start group tag. - The end group tag. - A parser to use for the group message type. - A codec for given tag - - - - Creates a codec for a wrapper type of a class - which must be string or ByteString. - - - - - Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64, - Bool, Single or Double. - - - - - Helper code to create codecs for wrapper types. - - - Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it - slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place, - we can refactor later if we come up with something cleaner. - - - - - Returns a field codec which effectively wraps a value of type T in a message. - - - - - - - An encode/decode pair for a single field. This effectively encapsulates - all the information needed to read or write the field value from/to a coded - stream. - - - This class is public and has to be as it is used by generated code, but its public - API is very limited - just what the generated code needs to call directly. - - - - This never writes default values to the stream, and does not address "packedness" - in repeated fields itself, other than to know whether or not the field *should* be packed. - - - - - Merges an input stream into a value - - - - - Merges a value into a reference to another value, returning a boolean if the value was set - - - - - Returns a delegate to write a value (unconditionally) to a coded output stream. - - - - - Returns the size calculator for just a value. - - - - - Returns a delegate to read a value from a coded input stream. It is assumed that - the stream is already positioned on the appropriate tag. - - - - - Returns a delegate to merge a value from a coded input stream. - It is assumed that the stream is already positioned on the appropriate tag - - - - - Returns a delegate to merge two values together. - - - - - Returns the fixed size for an entry, or 0 if sizes vary. - - - - - Gets the tag of the codec. - - - The tag of the codec. - - - - - Gets the end tag of the codec or 0 if there is no end tag - - - The end tag of the codec. - - - - - Default value for this codec. Usually the same for every instance of the same type, but - for string/ByteString wrapper fields the codec's default value is null, whereas for - other string/ByteString fields it's "" or ByteString.Empty. - - - The default value of the codec's type. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Reads a value of the codec type from the given . - - The input stream to read from. - The value read from the stream. - - - - Reads a value of the codec type from the given . - - The parse context to read from. - The value read. - - - - Calculates the size required to write the given value, with a tag, - if the value is not the default. - - - - - Calculates the size required to write the given value, with a tag, even - if the value is the default. - - - - - A tree representation of a FieldMask. Each leaf node in this tree represent - a field path in the FieldMask. - - For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be: - - [root] -+- foo -+- bar - | | - | +- baz - | - +- bar --- baz - - - By representing FieldMasks with this tree structure we can easily convert - a FieldMask to a canonical form, merge two FieldMasks, calculate the - intersection to two FieldMasks and traverse all fields specified by the - FieldMask in a message tree. - - - - - Creates an empty FieldMaskTree. - - - - - Creates a FieldMaskTree for a given FieldMask. - - - - - Adds a field path to the tree. In a FieldMask, every field path matches the - specified field as well as all its sub-fields. For example, a field path - "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding - a field path to the tree, redundant sub-paths will be removed. That is, - after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it - exists, which will turn the tree node for "foo.bar" to a leaf node. - Likewise, if the field path to add is a sub-path of an existing leaf node, - nothing will be changed in the tree. - - - - - Merges all field paths in a FieldMask into this tree. - - - - - Converts this tree to a FieldMask. - - - - - Gathers all field paths in a sub-tree. - - - - - Adds the intersection of this tree with the given to . - - - - - Merges all fields specified by this FieldMaskTree from to . - - - - - Merges all fields specified by a sub-tree from to . - - - - - Class containing helpful workarounds for various platform compatibility - - - - - Interface for a Protocol Buffers message, supporting - parsing from and writing to . - - - - - Internal implementation of merging data from given parse context into this message. - Users should never invoke this method directly. - - - - - Internal implementation of writing this message to a given write context. - Users should never invoke this method directly. - - - - - A message type that has a custom string format for diagnostic purposes. - - - - Calling on a generated message type normally - returns the JSON representation. If a message type implements this interface, - then the method will be called instead of the regular - JSON formatting code, but only when ToString() is called either on the message itself - or on another message which contains it. This does not affect the normal JSON formatting of - the message. - - - For example, if you create a proto message representing a GUID, the internal - representation may be a bytes field or four fixed32 fields. However, when debugging - it may be more convenient to see a result in the same format as provides. - - This interface extends to avoid it accidentally being implemented - on types other than messages, where it would not be used by anything in the framework. - - - - - Returns a string representation of this object, for diagnostic purposes. - - - This method is called when a message is formatted as part of a - call. It does not affect the JSON representation used by other than - in calls to . While it is recommended - that the result is valid JSON, this is never assumed by the Protobuf library. - - A string representation of this object, for diagnostic purposes. - - - - Generic interface for a deeply cloneable type. - - - - All generated messages implement this interface, but so do some non-message types. - Additionally, due to the type constraint on T in , - it is simpler to keep this as a separate interface. - - - The type itself, returned by the method. - - - - Creates a deep clone of this object. - - A deep clone of this object. - - - - Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class. - This interface is experiemental and is subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if the extension isn't registered in this set. - For a version of this method that never returns null, use - - - - - Gets the value of the specified repeated extension, registering it if it hasn't already been registered. - - - - - Sets the value of the specified extension - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified repeated extension - - - - - Interface for a Protocol Buffers message, supporting - basic operations required for serialization. - - - - - Merges the data from the specified coded input stream with the current message. - - See the user guide for precise merge semantics. - - - - - Writes the data to the given coded output stream. - - Coded output stream to write the data to. Must not be null. - - - - Calculates the size of this message in Protocol Buffer wire format, in bytes. - - The number of bytes required to write this message - to a coded output stream. - - - - Descriptor for this message. All instances are expected to return the same descriptor, - and for generated types this will be an explicitly-implemented member, returning the - same value as the static property declared on the type. - - - - - Generic interface for a Protocol Buffers message, - where the type parameter is expected to be the same type as - the implementation class. - - The message type. - - - - Merges the given message into this one. - - See the user guide for precise merge semantics. - The message to merge with this one. Must not be null. - - - - Thrown when an attempt is made to parse invalid JSON, e.g. using - a non-string property key, or including a redundant comma. Parsing a protocol buffer - message represented in JSON using can throw both this - exception and depending on the situation. This - exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException - is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer - message. - - - - - Thrown when a protocol message being parsed is invalid in some way, - e.g. it contains a malformed varint or a negative byte length. - - - - - Creates an exception for an error condition of an invalid tag being encountered. - - - - - Reflection-based converter from messages to JSON. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON formatting working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - The JSON representation of the first 160 characters of Unicode. - Empty strings are replaced by the static constructor. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Formats the specified message as JSON. - - The message to format. - This method delegates to Format(IMessage, int) with indentationLevel = - 0. The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - Indentation level to start at. - To keep consistent indentation when embedding a message inside another JSON string, - set . E.g: var response = $@"{{ - ""data"": { Format(message, indentationLevel: 1) } - }}" - - The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - The TextWriter to write the formatted message to. - This method delegates to Format(IMessage, TextWriter, int) with - indentationLevel = 0. The formatted message. - - - - Formats the specified message as JSON. When is not null, - start indenting at the specified . - - The message to format. - The TextWriter to write the formatted message to. - Indentation level to start at. - To keep consistent indentation when embedding a message inside another JSON string, - set . - - - - Converts a message to JSON for diagnostic purposes with no extra context. - - - - This differs from calling on the default JSON - formatter in its handling of . As no type registry is available - in calls, the normal way of resolving the type of - an Any message cannot be applied. Instead, a JSON property named @value - is included with the base64 data from the property of the message. - - The value returned by this method is only designed to be used for diagnostic - purposes. It may not be parsable by , and may not be parsable - by other Protocol Buffer implementations. - - The message to format for diagnostic purposes. - The diagnostic-only JSON representation of the message - - - - Determines whether or not a field value should be serialized according to the field, - its value in the message, and the settings of this formatter. - - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - Delegates to WriteValue(TextWriter, object, int) with indentationLevel = - 0. - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - The current indentationLevel. Not used when is null. - - - - Central interception point for well-known type formatting. Any well-known types which - don't need special handling can fall back to WriteMessage. We avoid assuming that the - values are using the embedded well-known types, in order to allow for dynamic messages - in the future. - - - - - Writes a string (including leading and trailing double quotes) to a builder, escaping as - required. - - - Other than surrogate pair handling, this code is mostly taken from - src/google/protobuf/util/internal/json_escaping.cc. - - - - - Settings controlling JSON formatting. - - - - - Default settings, as used by - - - - - Whether fields which would otherwise not be included in the formatted data - should be formatted even when the value is not present, or has the default value. - This option only affects fields which don't support "presence" (e.g. - singular non-optional proto3 primitive fields). - - - - - The type registry used to format messages. - - - - - Whether to format enums as ints. Defaults to false. - - - - - Whether to use the original proto field names as defined in the .proto file. Defaults to - false. - - - - - Indentation string, used for formatting. Setting null disables indentation. - - - - - Creates a new object with the specified formatting of default - values and an empty type registry. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. - - - - Creates a new object with the specified formatting of default - values and type registry. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. The to use when formatting messages. - - - - Creates a new object with the specified parameters. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. The to use when formatting messages. - TypeRegistry.Empty will be used if it is null. true to format the enums as integers; false to - format enums as enum names. true to - preserve proto field names; false to convert them to lowerCamelCase. The indentation string to use for multi-line formatting. null to - disable multi-line format. - - - - Creates a new object with the specified formatting of default - values and the current settings. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. - - - - Creates a new object with the specified type registry and the - current settings. - - The to use when formatting messages. - - - - Creates a new object with the specified enums formatting option and - the current settings. - - true to format the enums as integers; - false to format enums as enum names. - - - - Creates a new object with the specified field name formatting - option and the current settings. - - true to preserve proto field names; - false to convert them to lowerCamelCase. - - - - Creates a new object with the specified indentation and the current - settings. - - The string to output for each level of indentation (nesting). - The default is two spaces per level. Use null to disable indentation entirely. - A non-null value for will insert additional line-breaks - to the JSON output. Each line will contain either a single value, or braces. The default - line-break is determined by , which is "\n" on - Unix platforms, and "\r\n" on Windows. If seems to - produce empty lines, you need to pass a that uses a "\n" - newline. See . - - - - - Reflection-based converter from JSON to messages. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON parsing working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Parses and merges the information into the given message. - - The message to merge the JSON information into. - The JSON to parse. - - - - Parses JSON read from and merges the information into the given message. - - The message to merge the JSON information into. - Reader providing the JSON to parse. - - - - Merges the given message using data from the given tokenizer. In most cases, the next - token should be a "start object" token, but wrapper types and nullity can invalidate - that assumption. This is implemented as an LL(1) recursive descent parser over the stream - of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the - tokenizer performing that validation - but not every token stream is valid "protobuf JSON". - - - - - Attempts to parse a single value from the JSON. When the value is completely invalid, - this will still throw an exception; when it's "conditionally invalid" (currently meaning - "when there's an unknown enum string value") the method returns false instead. - - - true if the value was parsed successfully; false for an ignorable parse failure. - - - - - Parses into a new message. - - The type of message to create. - The JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - The type of message to create. - Reader providing the JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses into a new message. - - The JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - Reader providing the JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new instance of the message type for the given field. - - - - - Checks that any infinite/NaN values originated from the correct text. - This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the - way that Mono parses out-of-range values as infinity. - - - - - Settings controlling JSON parsing. - - - - - Default settings, as used by . This has the same default - recursion limit as , and an empty type registry. - - - - - The maximum depth of messages to parse. Note that this limit only applies to parsing - messages, not collections - so a message within a collection within a message only counts as - depth 2, not 3. - - - - - The type registry used to parse messages. - - - - - Whether the parser should ignore unknown fields (true) or throw an exception when - they are encountered (false). - - - - - Creates a new object with the specified recursion limit. - - The maximum depth of messages to parse - - - - Creates a new object with the specified recursion limit and type registry. - - The maximum depth of messages to parse - The type registry used to parse messages - - - - Creates a new object set to either ignore unknown fields, or throw an exception - when unknown fields are encountered. - - true if unknown fields should be ignored when parsing; false to throw an exception. - - - - Creates a new object based on this one, but with the specified recursion limit. - - The new recursion limit. - - - - Creates a new object based on this one, but with the specified type registry. - - The new type registry. Must not be null. - - - - Simple but strict JSON tokenizer, rigidly following RFC 7159. - - - - This tokenizer is stateful, and only returns "useful" tokens - names, values etc. - It does not create tokens for the separator between names and values, or for the comma - between values. It validates the token stream as it goes - so callers can assume that the - tokens it produces are appropriate. For example, it would never produce "start object, end array." - - Implementation details: the base class handles single token push-back and - Not thread-safe. - - - - - Creates a tokenizer that reads from the given text reader. - - - - - Creates a tokenizer that first replays the given list of tokens, then continues reading - from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back - on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was - created for the sake of Any parsing. - - - - - Returns the depth of the stack, purely in objects (not collections). - Informally, this is the number of remaining unclosed '{' characters we have. - - - - - Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream, - after which point Next() should not be called again. - - This implementation provides single-token buffering, and calls if there is no buffered token. - The next token in the stream. This is never null. - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Returns the next JSON token in the stream, when requested by the base class. (The method delegates - to this if it doesn't have a buffered token.) - - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Skips the value we're about to read. This must only be called immediately after reading a property name. - If the value is an object or an array, the complete object/array is skipped. - - - - - Tokenizer which first exhausts a list of tokens, then consults another tokenizer. - - - - - Tokenizer which does all the *real* work of parsing JSON. - - - - - This method essentially just loops through characters skipping whitespace, validating and - changing state (e.g. from ObjectBeforeColon to ObjectAfterColon) - until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point - it returns the token. Although the method is large, it would be relatively hard to break down further... most - of it is the large switch statement, which sometimes returns and sometimes doesn't. - - - - - Reads a string token. It is assumed that the opening " has already been read. - - - - - Reads an escaped character. It is assumed that the leading backslash has already been read. - - - - - Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read. - - - - - Consumes a text-only literal, throwing an exception if the read text doesn't match it. - It is assumed that the first letter of the literal has already been read. - - - - - Copies an integer into a StringBuilder. - - The builder to read the number into - The character following the integer, or -1 for end-of-text. - - - - Copies the fractional part of an integer into a StringBuilder, assuming reader is positioned after a period. - - The builder to read the number into - The character following the fractional part, or -1 for end-of-text. - - - - Copies the exponent part of a number into a StringBuilder, with an assumption that the reader is already positioned after the "e". - - The builder to read the number into - The character following the exponent, or -1 for end-of-text. - - - - Copies a sequence of digits into a StringBuilder. - - The builder to read the number into - The number of digits appended to the builder - The character following the digits, or -1 for end-of-text. - - - - Validates that we're in a valid state to read a value (using the given error prefix if necessary) - and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty. - - - - - Pops the top-most container, and sets the state to the appropriate one for the end of a value - in the parent container. - - - - - Possible states of the tokenizer. - - - This is a flags enum purely so we can simply and efficiently represent a set of valid states - for checking. - - Each is documented with an example, - where ^ represents the current position within the text stream. The examples all use string values, - but could be any value, including nested objects/arrays. - The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects). - Any additional notional state of "AfterValue" indicates that a value has been completed, at which - point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue. - - - These states were derived manually by reading RFC 7159 carefully. - - - - - - ^ { "foo": "bar" } - Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue" - - - - - { "foo": "bar" } ^ - After the value in a document. Next states: ReaderExhausted - - - - - { "foo": "bar" } ^ (and already read to the end of the reader) - Terminal state. - - - - - { ^ "foo": "bar" } - Before the *first* property in an object. - Next states: - "AfterValue" (empty object) - ObjectBeforeColon (read a name) - - - - - { "foo" ^ : "bar", "x": "y" } - Next state: ObjectAfterColon - - - - - { "foo" : ^ "bar", "x": "y" } - Before any property other than the first in an object. - (Equivalently: after any property in an object) - Next states: - "AfterValue" (value is simple) - ObjectStart (value is object) - ArrayStart (value is array) - - - - - { "foo" : "bar" ^ , "x" : "y" } - At the end of a property, so expecting either a comma or end-of-object - Next states: ObjectAfterComma or "AfterValue" - - - - - { "foo":"bar", ^ "x":"y" } - Read the comma after the previous property, so expecting another property. - This is like ObjectStart, but closing brace isn't valid here - Next state: ObjectBeforeColon. - - - - - [ ^ "foo", "bar" ] - Before the *first* value in an array. - Next states: - "AfterValue" (read a value) - "AfterValue" (end of array; will pop stack) - - - - - [ "foo" ^ , "bar" ] - After any value in an array, so expecting either a comma or end-of-array - Next states: ArrayAfterComma or "AfterValue" - - - - - [ "foo", ^ "bar" ] - After a comma in an array, so there *must* be another value (simple or complex). - Next states: "AfterValue" (simple value), StartObject, StartArray - - - - - Wrapper around a text reader allowing small amounts of buffering and location handling. - - - - - The buffered next character, if we have one, or -1 if there is no buffered character. - - - - - Returns the next character in the stream, or -1 if we have reached the end of the stream. - - - - - Reads the next character from the underlying reader, throwing an - with the specified message if there are no more characters available. - - - - - Creates a new exception appropriate for the current state of the reader. - - - - - Provide a cached reusable instance of stringbuilder per thread. - Copied from https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/System/Text/StringBuilderCache.cs - - - - Get a StringBuilder for the specified capacity. - If a StringBuilder of an appropriate size is cached, it will be returned and the cache emptied. - - - Place the specified builder in the cache if it is not too big. - - - ToString() the stringbuilder, Release it to the cache, and return the resulting string. - - - - Stream implementation which proxies another stream, only allowing a certain amount - of data to be read. Note that this is only used to read delimited streams, so it - doesn't attempt to implement everything. - - - - - Extension methods on and . - - - - - Merges data from the given byte array into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given byte array slice into an existing message. - - The message to merge the data into. - The data containing the slice to merge, which must be protobuf-encoded binary data. - The offset of the slice to merge. - The length of the slice to merge. - - - - Merges data from the given byte string into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given stream into an existing message. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given span into an existing message. - - The message to merge the data into. - Span containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given sequence into an existing message. - - The message to merge the data into. - Sequence from the specified data to merge, which must be protobuf-encoded binary data. - - - - Merges length-delimited data from the given stream into an existing message. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Converts the given message into a byte array in protobuf encoding. - - The message to convert. - The message data as a byte array. - - - - Writes the given message data to the given stream in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the length and then data of the given message to a stream. - - The message to write. - The output stream to write to. - - - - Converts the given message into a byte string in protobuf encoding. - - The message to convert. - The message data as a byte string. - - - - Writes the given message data to the given buffer writer in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the given message data to the given span in protobuf encoding. - The size of the destination span needs to fit the serialized size - of the message exactly, otherwise an exception is thrown. - - The message to write to the stream. - The span to write to. Size must match size of the message exactly. - - - - Checks if all required fields in a message have values set. For proto3 messages, this returns true. - - - - - A general message parser, typically used by reflection-based code as all the methods - return simple . - - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a message from the given span. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - This method always uses the default JSON parser; it is not affected by . - To ignore unknown fields when parsing JSON, create a using a - with set to true and call directly. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Note that this does not affect the behavior of - at all. To ignore unknown fields when parsing JSON, create a using a - with set to true and call directly. - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - A parser for a specific message type. - - -

- This delegates most behavior to the - implementation within the original type, but - provides convenient overloads to parse from a variety of sources. -

-

- Most applications will never need to create their own instances of this type; - instead, use the static Parser property of a generated message type to obtain a - parser for that type. -

-
- The type of message to be parsed. -
- - - Creates a new parser. - - - The factory method is effectively an optimization over using a generic constraint - to require a parameterless constructor: delegates are significantly faster to execute. - - Function to invoke when a new, empty message is required. - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a message from the given span. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the - extensionByNumber table in ExtensionRegistry. - - - - - An opaque struct that represents the current parsing state and is passed along - as the parsing proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Initialize a , building all from defaults and - the given . - - - - - Initialize a using existing , e.g. from . - - - - - Creates a ParseContext instance from CodedInputStream. - WARNING: internally this copies the CodedInputStream's state, so after done with the ParseContext, - the CodedInputStream's state needs to be updated. - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the input. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Reads a field tag, returning the tag of 0 for "end of input". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputReader; it may be the end of the logical input - for an embedded message, for example. - - The next field tag, or 0 for end of input. (0 is never a valid tag.) - - - - Reads a double field from the input. - - - - - Reads a float field from the input. - - - - - Reads a uint64 field from the input. - - - - - Reads an int64 field from the input. - - - - - Reads an int32 field from the input. - - - - - Reads a fixed64 field from the input. - - - - - Reads a fixed32 field from the input. - - - - - Reads a bool field from the input. - - - - - Reads a string field from the input. - - - - - Reads an embedded message field value from the input. - - - - - Reads an embedded group field from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a uint32 field value from the input. - - - - - Reads an enum field value from the input. - - - - - Reads an sfixed32 field value from the input. - - - - - Reads an sfixed64 field value from the input. - - - - - Reads an sint32 field value from the input. - - - - - Reads an sint64 field value from the input. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - The position within the current buffer (i.e. the next byte to read) - - - - - Size of the current buffer - - - - - If we are currently inside a length-delimited block, this is the number of - bytes in the buffer that are still available once we leave the delimited block. - - - - - The absolute position of the end of the current length-delimited block (including totalBytesRetired) - - - - - The total number of consumed before the start of the current buffer. The - total bytes read up to the current position can be computed as - totalBytesRetired + bufferPos. - - - - - The last tag we read. 0 indicates we've read to the end of the stream - (or haven't read anything yet). - - - - - The next tag, used to store the value read by PeekTag. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Primitives for parsing protobuf wire format. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Parses the next tag. - If the end of logical stream was reached, an invalid tag of 0 is returned. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Parses a raw varint. - - - - - Parses a raw Varint. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Parses a 32-bit little-endian integer. - - - - - Parses a 64-bit little-endian integer. - - - - - Parses a double value. - - - - - Parses a float value. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads and discards bytes. - - the end of the stream - or the current limit was reached - - - - Reads a string field value from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a UTF-8 string from the next "length" bytes. - - - the end of the stream or the current limit was reached - - - - - Reads a string assuming that it is spread across multiple spans in a . - - - - - Validates that the specified size doesn't exceed the current limit. If it does then remaining bytes - are skipped and an error is thrown. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Decode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 32 bits to be varint encoded, thus always taking - 5 bytes on the wire.) - - - - - Decode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Checks whether there is known data available of the specified size remaining to parse. - When parsing from a Stream this can return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Checks whether there is known data available of the specified size remaining to parse - in the underlying data source. - When parsing from a Stream this will return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Read raw bytes of the specified length into a span. The amount of data available and the current limit should - be checked before calling this method. - - - - - Reading and skipping messages / groups - - - - - Skip a group. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Fast parsing primitives for wrapper types - - - - - Helper methods for throwing exceptions when preconditions are not met. - - - This class is used internally and by generated code; it is not particularly - expected to be used from application code, although nothing prevents it - from being used that way. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - This is equivalent to but without the type parameter - constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull - with a value type - but it gets in the way if either you want to use it with a nullable - value type, or you want to use it with an unconstrained type parameter. - - - - - Container for a set of custom options specified within a message, field etc. - - - - This type is publicly immutable, but internally mutable. It is only populated - by the descriptor parsing code - by the time any user code is able to see an instance, - it will be fully initialized. - - - If an option is requested using the incorrect method, an answer may still be returned: all - of the numeric types are represented internally using 64-bit integers, for example. It is up to - the caller to ensure that they make the appropriate method call for the option they're interested in. - Note that enum options are simply stored as integers, so the value should be fetched using - and then cast appropriately. - - - Repeated options are currently not supported. Asking for a single value of an option - which was actually repeated will return the last value, except for message types where - all the set values are merged together. - - - - - - Retrieves a Boolean value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 32-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 64-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a string value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a bytes value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a message value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - Holder for reflection information generated from google/protobuf/descriptor.proto - - - File descriptor for google/protobuf/descriptor.proto - - - - The full set of known editions. - - - - - A placeholder for an unknown edition value. - - - - - A placeholder edition for specifying default behaviors *before* a feature - was first introduced. This is effectively an "infinite past". - - - - - Legacy syntax "editions". These pre-date editions, but behave much like - distinct editions. These can't be used to specify the edition of proto - files, but feature definitions must supply proto2/proto3 defaults for - backwards compatibility. - - - - - Editions that have been released. The specific values are arbitrary and - should not be depended on, but they will always be time-ordered for easy - comparison. - - - - - Placeholder editions for testing feature resolution. These should not be - used or relied on outside of tests. - - - - - Placeholder for specifying unbounded edition support. This should only - ever be used by plugins that can expect to never require any changes to - support a new edition. - - - - - The protocol compiler can output a FileDescriptorSet containing the .proto - files it parses. - - - - Field number for the "file" field. - - - - Describes a complete .proto file. - - - - Field number for the "name" field. - - - - file name, relative to root of source tree - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "package" field. - - - - e.g. "foo", "foo.bar", etc. - - - - Gets whether the "package" field is set - - - Clears the value of the "package" field - - - Field number for the "dependency" field. - - - - Names of files imported by this file. - - - - Field number for the "public_dependency" field. - - - - Indexes of the public imported files in the dependency list above. - - - - Field number for the "weak_dependency" field. - - - - Indexes of the weak imported files in the dependency list. - For Google-internal migration only. Do not use. - - - - Field number for the "message_type" field. - - - - All top-level definitions in this file. - - - - Field number for the "enum_type" field. - - - Field number for the "service" field. - - - Field number for the "extension" field. - - - Field number for the "options" field. - - - Field number for the "source_code_info" field. - - - - This field contains optional information about the original source code. - You may safely remove this entire field without harming runtime - functionality of the descriptors -- the information is needed only by - development tools. - - - - Field number for the "syntax" field. - - - - The syntax of the proto file. - The supported values are "proto2", "proto3", and "editions". - - If `edition` is present, this value must be "editions". - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Gets whether the "syntax" field is set - - - Clears the value of the "syntax" field - - - Field number for the "edition" field. - - - - The edition of the proto file. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - - Describes a message type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "field" field. - - - Field number for the "extension" field. - - - Field number for the "nested_type" field. - - - Field number for the "enum_type" field. - - - Field number for the "extension_range" field. - - - Field number for the "oneof_decl" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - Field number for the "reserved_name" field. - - - - Reserved field names, which may not be used by fields in the same message. - A given name may only be reserved once. - - - - Container for nested types declared in the DescriptorProto message type. - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "options" field. - - - - Range of reserved tag numbers. Reserved tag numbers may not be used by - fields or extension ranges in the same message. Reserved ranges may - not overlap. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "declaration" field. - - - - For external users: DO NOT USE. We are in the process of open sourcing - extension declaration and executing internal cleanups before it can be - used externally. - - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - - - - Field number for the "verification" field. - - - - The verification state of the range. - TODO: flip the default to DECLARATION once all empty ranges - are marked as UNVERIFIED. - - - - Gets whether the "verification" field is set - - - Clears the value of the "verification" field - - - Container for nested types declared in the ExtensionRangeOptions message type. - - - - The verification state of the extension range. - - - - - All the extensions of the range must be declared. - - - - Field number for the "number" field. - - - - The extension number declared within the extension range. - - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "full_name" field. - - - - The fully-qualified name of the extension field. There must be a leading - dot in front of the full name. - - - - Gets whether the "full_name" field is set - - - Clears the value of the "full_name" field - - - Field number for the "type" field. - - - - The fully-qualified type name of the extension field. Unlike - Metadata.type, Declaration.type must have a leading dot for messages - and enums. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "reserved" field. - - - - If true, indicates that the number is reserved in the extension range, - and any extension field with the number will fail to compile. Set this - when a declared extension field is deleted. - - - - Gets whether the "reserved" field is set - - - Clears the value of the "reserved" field - - - Field number for the "repeated" field. - - - - If true, indicates that the extension must be defined as repeated. - Otherwise the extension must be defined as optional. - - - - Gets whether the "repeated" field is set - - - Clears the value of the "repeated" field - - - - Describes a field within a message. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "label" field. - - - Gets whether the "label" field is set - - - Clears the value of the "label" field - - - Field number for the "type" field. - - - - If type_name is set, this need not be set. If both this and type_name - are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "type_name" field. - - - - For message and enum types, this is the name of the type. If the name - starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - rules are used to find the type (i.e. first the nested types within this - message are searched, then within the parent, on up to the root - namespace). - - - - Gets whether the "type_name" field is set - - - Clears the value of the "type_name" field - - - Field number for the "extendee" field. - - - - For extensions, this is the name of the type being extended. It is - resolved in the same manner as type_name. - - - - Gets whether the "extendee" field is set - - - Clears the value of the "extendee" field - - - Field number for the "default_value" field. - - - - For numeric types, contains the original text representation of the value. - For booleans, "true" or "false". - For strings, contains the default text contents (not escaped in any way). - For bytes, contains the C escaped value. All bytes >= 128 are escaped. - - - - Gets whether the "default_value" field is set - - - Clears the value of the "default_value" field - - - Field number for the "oneof_index" field. - - - - If set, gives the index of a oneof in the containing type's oneof_decl - list. This field is a member of that oneof. - - - - Gets whether the "oneof_index" field is set - - - Clears the value of the "oneof_index" field - - - Field number for the "json_name" field. - - - - JSON name of this field. The value is set by protocol compiler. If the - user has set a "json_name" option on this field, that option's value - will be used. Otherwise, it's deduced from the field's name by converting - it to camelCase. - - - - Gets whether the "json_name" field is set - - - Clears the value of the "json_name" field - - - Field number for the "options" field. - - - Field number for the "proto3_optional" field. - - - - If true, this is a proto3 "optional". When a proto3 field is optional, it - tracks presence regardless of field type. - - When proto3_optional is true, this field must belong to a oneof to signal - to old proto3 clients that presence is tracked for this field. This oneof - is known as a "synthetic" oneof, and this field must be its sole member - (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs - exist in the descriptor only, and do not generate any API. Synthetic oneofs - must be ordered after all "real" oneofs. - - For message fields, proto3_optional doesn't create any semantic change, - since non-repeated message fields always track presence. However it still - indicates the semantic detail of whether the user wrote "optional" or not. - This can be useful for round-tripping the .proto file. For consistency we - give message fields a synthetic oneof also, even though it is not required - to track presence. This is especially important because the parser can't - tell if a field is a message or an enum, so it must always create a - synthetic oneof. - - Proto2 optional fields do not set this flag, because they already indicate - optional with `LABEL_OPTIONAL`. - - - - Gets whether the "proto3_optional" field is set - - - Clears the value of the "proto3_optional" field - - - Container for nested types declared in the FieldDescriptorProto message type. - - - - 0 is reserved for errors. - Order is weird for historical reasons. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - negative values are likely. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - negative values are likely. - - - - - Tag-delimited aggregate. - Group type is deprecated and not supported after google.protobuf. However, Proto3 - implementations should still be able to parse the group wire format and - treat group fields as unknown fields. In Editions, the group wire format - can be enabled via the `message_encoding` feature. - - - - - Length-delimited aggregate. - - - - - New in version 2. - - - - - Uses ZigZag encoding. - - - - - Uses ZigZag encoding. - - - - - 0 is reserved for errors - - - - - The required label is only allowed in google.protobuf. In proto3 and Editions - it's explicitly prohibited. In Editions, the `field_presence` feature - can be used to get this behavior. - - - - - Describes a oneof. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "options" field. - - - - Describes an enum type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "value" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - - Range of reserved numeric values. Reserved numeric values may not be used - by enum values in the same enum declaration. Reserved ranges may not - overlap. - - - - Field number for the "reserved_name" field. - - - - Reserved enum value names, which may not be reused. A given name may only - be reserved once. - - - - Container for nested types declared in the EnumDescriptorProto message type. - - - - Range of reserved numeric values. Reserved values may not be used by - entries in the same enum. Reserved ranges may not overlap. - - Note that this is distinct from DescriptorProto.ReservedRange in that it - is inclusive such that it can appropriately represent the entire int32 - domain. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Inclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - - Describes a value within an enum. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "options" field. - - - - Describes a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "method" field. - - - Field number for the "options" field. - - - - Describes a method of a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "input_type" field. - - - - Input and output type names. These are resolved in the same way as - FieldDescriptorProto.type_name, but must refer to a message type. - - - - Gets whether the "input_type" field is set - - - Clears the value of the "input_type" field - - - Field number for the "output_type" field. - - - Gets whether the "output_type" field is set - - - Clears the value of the "output_type" field - - - Field number for the "options" field. - - - Field number for the "client_streaming" field. - - - - Identifies if client streams multiple client messages - - - - Gets whether the "client_streaming" field is set - - - Clears the value of the "client_streaming" field - - - Field number for the "server_streaming" field. - - - - Identifies if server streams multiple server messages - - - - Gets whether the "server_streaming" field is set - - - Clears the value of the "server_streaming" field - - - Field number for the "java_package" field. - - - - Sets the Java package where classes generated from this .proto will be - placed. By default, the proto package is used, but this is often - inappropriate because proto packages do not normally start with backwards - domain names. - - - - Gets whether the "java_package" field is set - - - Clears the value of the "java_package" field - - - Field number for the "java_outer_classname" field. - - - - Controls the name of the wrapper Java class generated for the .proto file. - That class will always contain the .proto file's getDescriptor() method as - well as any top-level extensions defined in the .proto file. - If java_multiple_files is disabled, then all the other classes from the - .proto file will be nested inside the single wrapper outer class. - - - - Gets whether the "java_outer_classname" field is set - - - Clears the value of the "java_outer_classname" field - - - Field number for the "java_multiple_files" field. - - - - If enabled, then the Java code generator will generate a separate .java - file for each top-level message, enum, and service defined in the .proto - file. Thus, these types will *not* be nested inside the wrapper class - named by java_outer_classname. However, the wrapper class will still be - generated to contain the file's getDescriptor() method as well as any - top-level extensions defined in the file. - - - - Gets whether the "java_multiple_files" field is set - - - Clears the value of the "java_multiple_files" field - - - Field number for the "java_generate_equals_and_hash" field. - - - - This option does nothing. - - - - Gets whether the "java_generate_equals_and_hash" field is set - - - Clears the value of the "java_generate_equals_and_hash" field - - - Field number for the "java_string_check_utf8" field. - - - - A proto2 file can set this to true to opt in to UTF-8 checking for Java, - which will throw an exception if invalid UTF-8 is parsed from the wire or - assigned to a string field. - - TODO: clarify exactly what kinds of field types this option - applies to, and update these docs accordingly. - - Proto3 files already perform these checks. Setting the option explicitly to - false has no effect: it cannot be used to opt proto3 files out of UTF-8 - checks. - - - - Gets whether the "java_string_check_utf8" field is set - - - Clears the value of the "java_string_check_utf8" field - - - Field number for the "optimize_for" field. - - - Gets whether the "optimize_for" field is set - - - Clears the value of the "optimize_for" field - - - Field number for the "go_package" field. - - - - Sets the Go package where structs generated from this .proto will be - placed. If omitted, the Go package will be derived from the following: - - The basename of the package import path, if provided. - - Otherwise, the package statement in the .proto file, if present. - - Otherwise, the basename of the .proto file, without extension. - - - - Gets whether the "go_package" field is set - - - Clears the value of the "go_package" field - - - Field number for the "cc_generic_services" field. - - - - Should generic services be generated in each language? "Generic" services - are not specific to any particular RPC system. They are generated by the - main code generators in each language (without additional plugins). - Generic services were the only kind of service generation supported by - early versions of google.protobuf. - - Generic services are now considered deprecated in favor of using plugins - that generate code specific to your particular RPC system. Therefore, - these default to false. Old code which depends on generic services should - explicitly set them to true. - - - - Gets whether the "cc_generic_services" field is set - - - Clears the value of the "cc_generic_services" field - - - Field number for the "java_generic_services" field. - - - Gets whether the "java_generic_services" field is set - - - Clears the value of the "java_generic_services" field - - - Field number for the "py_generic_services" field. - - - Gets whether the "py_generic_services" field is set - - - Clears the value of the "py_generic_services" field - - - Field number for the "deprecated" field. - - - - Is this file deprecated? - Depending on the target platform, this can emit Deprecated annotations - for everything in the file, or it will be completely ignored; in the very - least, this is a formalization for deprecating files. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "cc_enable_arenas" field. - - - - Enables the use of arenas for the proto messages in this file. This applies - only to generated classes for C++. - - - - Gets whether the "cc_enable_arenas" field is set - - - Clears the value of the "cc_enable_arenas" field - - - Field number for the "objc_class_prefix" field. - - - - Sets the objective c class prefix which is prepended to all objective c - generated classes from this .proto. There is no default. - - - - Gets whether the "objc_class_prefix" field is set - - - Clears the value of the "objc_class_prefix" field - - - Field number for the "csharp_namespace" field. - - - - Namespace for generated classes; defaults to the package. - - - - Gets whether the "csharp_namespace" field is set - - - Clears the value of the "csharp_namespace" field - - - Field number for the "swift_prefix" field. - - - - By default Swift generators will take the proto package and CamelCase it - replacing '.' with underscore and use that to prefix the types/symbols - defined. When this options is provided, they will use this value instead - to prefix the types/symbols defined. - - - - Gets whether the "swift_prefix" field is set - - - Clears the value of the "swift_prefix" field - - - Field number for the "php_class_prefix" field. - - - - Sets the php class prefix which is prepended to all php generated classes - from this .proto. Default is empty. - - - - Gets whether the "php_class_prefix" field is set - - - Clears the value of the "php_class_prefix" field - - - Field number for the "php_namespace" field. - - - - Use this option to change the namespace of php generated classes. Default - is empty. When this option is empty, the package name will be used for - determining the namespace. - - - - Gets whether the "php_namespace" field is set - - - Clears the value of the "php_namespace" field - - - Field number for the "php_metadata_namespace" field. - - - - Use this option to change the namespace of php generated metadata classes. - Default is empty. When this option is empty, the proto file name will be - used for determining the namespace. - - - - Gets whether the "php_metadata_namespace" field is set - - - Clears the value of the "php_metadata_namespace" field - - - Field number for the "ruby_package" field. - - - - Use this option to change the package of ruby generated classes. Default - is empty. When this option is not set, the package name will be used for - determining the ruby package. - - - - Gets whether the "ruby_package" field is set - - - Clears the value of the "ruby_package" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. - See the documentation for the "Options" section above. - - - - Container for nested types declared in the FileOptions message type. - - - - Generated classes can be optimized for speed or code size. - - - - - Generate complete code for parsing, serialization, - - - - - etc. - - - - - Generate code using MessageLite and the lite runtime. - - - - Field number for the "message_set_wire_format" field. - - - - Set true to use the old proto1 MessageSet wire format for extensions. - This is provided for backwards-compatibility with the MessageSet wire - format. You should not use this for any other reason: It's less - efficient, has fewer features, and is more complicated. - - The message must be defined exactly as follows: - message Foo { - option message_set_wire_format = true; - extensions 4 to max; - } - Note that the message cannot have any defined fields; MessageSets only - have extensions. - - All extensions of your type must be singular messages; e.g. they cannot - be int32s, enums, or repeated messages. - - Because this is an option, the above two restrictions are not enforced by - the protocol compiler. - - - - Gets whether the "message_set_wire_format" field is set - - - Clears the value of the "message_set_wire_format" field - - - Field number for the "no_standard_descriptor_accessor" field. - - - - Disables the generation of the standard "descriptor()" accessor, which can - conflict with a field of the same name. This is meant to make migration - from proto1 easier; new code should avoid fields named "descriptor". - - - - Gets whether the "no_standard_descriptor_accessor" field is set - - - Clears the value of the "no_standard_descriptor_accessor" field - - - Field number for the "deprecated" field. - - - - Is this message deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the message, or it will be completely ignored; in the very least, - this is a formalization for deprecating messages. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "map_entry" field. - - - - Whether the message is an automatically generated map entry type for the - maps field. - - For maps fields: - map<KeyType, ValueType> map_field = 1; - The parsed descriptor looks like: - message MapFieldEntry { - option map_entry = true; - optional KeyType key = 1; - optional ValueType value = 2; - } - repeated MapFieldEntry map_field = 1; - - Implementations may choose not to generate the map_entry=true message, but - use a native map in the target language to hold the keys and values. - The reflection APIs in such implementations still need to work as - if the field is a repeated message field. - - NOTE: Do not set the option in .proto files. Always use the maps syntax - instead. The option should only be implicitly set by the proto compiler - parser. - - - - Gets whether the "map_entry" field is set - - - Clears the value of the "map_entry" field - - - Field number for the "deprecated_legacy_json_field_conflicts" field. - - - - Enable the legacy handling of JSON field name conflicts. This lowercases - and strips underscored from the fields before comparison in proto3 only. - The new behavior takes `json_name` into account and applies to proto2 as - well. - - This should only be used as a temporary measure against broken builds due - to the change in behavior for JSON field name conflicts. - - TODO This is legacy behavior we plan to remove once downstream - teams have had time to migrate. - - - - Gets whether the "deprecated_legacy_json_field_conflicts" field is set - - - Clears the value of the "deprecated_legacy_json_field_conflicts" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "ctype" field. - - - - NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead. - The ctype option instructs the C++ code generator to use a different - representation of the field than it normally would. See the specific - options below. This option is only implemented to support use of - [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of - type "bytes" in the open source release. - TODO: make ctype actually deprecated. - - - - Gets whether the "ctype" field is set - - - Clears the value of the "ctype" field - - - Field number for the "packed" field. - - - - The packed option can be enabled for repeated primitive fields to enable - a more efficient representation on the wire. Rather than repeatedly - writing the tag and type for each element, the entire array is encoded as - a single length-delimited blob. In proto3, only explicit setting it to - false will avoid using packed encoding. This option is prohibited in - Editions, but the `repeated_field_encoding` feature can be used to control - the behavior. - - - - Gets whether the "packed" field is set - - - Clears the value of the "packed" field - - - Field number for the "jstype" field. - - - - The jstype option determines the JavaScript type used for values of the - field. The option is permitted only for 64 bit integral and fixed types - (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - is represented as JavaScript string, which avoids loss of precision that - can happen when a large value is converted to a floating point JavaScript. - Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - use the JavaScript "number" type. The behavior of the default option - JS_NORMAL is implementation dependent. - - This option is an enum to permit additional types to be added, e.g. - goog.math.Integer. - - - - Gets whether the "jstype" field is set - - - Clears the value of the "jstype" field - - - Field number for the "lazy" field. - - - - Should this field be parsed lazily? Lazy applies only to message-type - fields. It means that when the outer message is initially parsed, the - inner message's contents will not be parsed but instead stored in encoded - form. The inner message will actually be parsed when it is first accessed. - - This is only a hint. Implementations are free to choose whether to use - eager or lazy parsing regardless of the value of this option. However, - setting this option true suggests that the protocol author believes that - using lazy parsing on this field is worth the additional bookkeeping - overhead typically needed to implement it. - - This option does not affect the public interface of any generated code; - all method signatures remain the same. Furthermore, thread-safety of the - interface is not affected by this option; const methods remain safe to - call from multiple threads concurrently, while non-const methods continue - to require exclusive access. - - Note that lazy message fields are still eagerly verified to check - ill-formed wireformat or missing required fields. Calling IsInitialized() - on the outer message would fail if the inner message has missing required - fields. Failed verification would result in parsing failure (except when - uninitialized messages are acceptable). - - - - Gets whether the "lazy" field is set - - - Clears the value of the "lazy" field - - - Field number for the "unverified_lazy" field. - - - - unverified_lazy does no correctness checks on the byte stream. This should - only be used where lazy with verification is prohibitive for performance - reasons. - - - - Gets whether the "unverified_lazy" field is set - - - Clears the value of the "unverified_lazy" field - - - Field number for the "deprecated" field. - - - - Is this field deprecated? - Depending on the target platform, this can emit Deprecated annotations - for accessors, or it will be completely ignored; in the very least, this - is a formalization for deprecating fields. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "weak" field. - - - - For Google-internal migration only. Do not use. - - - - Gets whether the "weak" field is set - - - Clears the value of the "weak" field - - - Field number for the "debug_redact" field. - - - - Indicate that the field value should not be printed out when using debug - formats, e.g. when the field contains sensitive credentials. - - - - Gets whether the "debug_redact" field is set - - - Clears the value of the "debug_redact" field - - - Field number for the "retention" field. - - - Gets whether the "retention" field is set - - - Clears the value of the "retention" field - - - Field number for the "targets" field. - - - Field number for the "edition_defaults" field. - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "feature_support" field. - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the FieldOptions message type. - - - - Default mode. - - - - - The option [ctype=CORD] may be applied to a non-repeated field of type - "bytes". It indicates that in C++, the data should be stored in a Cord - instead of a string. For very large strings, this may reduce memory - fragmentation. It may also allow better performance when parsing from a - Cord, or when parsing with aliasing enabled, as the parsed Cord may then - alias the original buffer. - - - - - Use the default type. - - - - - Use JavaScript strings. - - - - - Use JavaScript numbers. - - - - - If set to RETENTION_SOURCE, the option will be omitted from the binary. - - - - - This indicates the types of entities that the field may apply to when used - as an option. If it is unset, then the field may be freely used as an - option on any kind of entity. - - - - Field number for the "edition" field. - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - Field number for the "value" field. - - - - Textproto value. - - - - Gets whether the "value" field is set - - - Clears the value of the "value" field - - - - Information about the support window of a feature. - - - - Field number for the "edition_introduced" field. - - - - The edition that this feature was first available in. In editions - earlier than this one, the default assigned to EDITION_LEGACY will be - used, and proto files will not be able to override it. - - - - Gets whether the "edition_introduced" field is set - - - Clears the value of the "edition_introduced" field - - - Field number for the "edition_deprecated" field. - - - - The edition this feature becomes deprecated in. Using this after this - edition may trigger warnings. - - - - Gets whether the "edition_deprecated" field is set - - - Clears the value of the "edition_deprecated" field - - - Field number for the "deprecation_warning" field. - - - - The deprecation warning text if this feature is used after the edition it - was marked deprecated in. - - - - Gets whether the "deprecation_warning" field is set - - - Clears the value of the "deprecation_warning" field - - - Field number for the "edition_removed" field. - - - - The edition this feature is no longer available in. In editions after - this one, the last default assigned will be used, and proto files will - not be able to override it. - - - - Gets whether the "edition_removed" field is set - - - Clears the value of the "edition_removed" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "allow_alias" field. - - - - Set this option to true to allow mapping different tag names to the same - value. - - - - Gets whether the "allow_alias" field is set - - - Clears the value of the "allow_alias" field - - - Field number for the "deprecated" field. - - - - Is this enum deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum, or it will be completely ignored; in the very least, this - is a formalization for deprecating enums. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "deprecated_legacy_json_field_conflicts" field. - - - - Enable the legacy handling of JSON field name conflicts. This lowercases - and strips underscored from the fields before comparison in proto3 only. - The new behavior takes `json_name` into account and applies to proto2 as - well. - TODO Remove this legacy behavior once downstream teams have - had time to migrate. - - - - Gets whether the "deprecated_legacy_json_field_conflicts" field is set - - - Clears the value of the "deprecated_legacy_json_field_conflicts" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this enum value deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum value, or it will be completely ignored; in the very least, - this is a formalization for deprecating enum values. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "debug_redact" field. - - - - Indicate that fields annotated with this enum value should not be printed - out when using debug formats, e.g. when the field contains sensitive - credentials. - - - - Gets whether the "debug_redact" field is set - - - Clears the value of the "debug_redact" field - - - Field number for the "feature_support" field. - - - - Information about the support window of a feature value. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "deprecated" field. - - - - Is this service deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the service, or it will be completely ignored; in the very least, - this is a formalization for deprecating services. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this method deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the method, or it will be completely ignored; in the very least, - this is a formalization for deprecating methods. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "idempotency_level" field. - - - Gets whether the "idempotency_level" field is set - - - Clears the value of the "idempotency_level" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the MethodOptions message type. - - - - Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - or neither? HTTP based RPC implementation may choose GET verb for safe - methods, and PUT verb for idempotent methods instead of the default POST. - - - - - implies idempotent - - - - - idempotent, but may have side effects - - - - - A message representing a option the parser does not recognize. This only - appears in options protos created by the compiler::Parser class. - DescriptorPool resolves these when building Descriptor objects. Therefore, - options protos in descriptor objects (e.g. returned by Descriptor::options(), - or produced by Descriptor::CopyTo()) will never have UninterpretedOptions - in them. - - - - Field number for the "name" field. - - - Field number for the "identifier_value" field. - - - - The value of the uninterpreted option, in whatever type the tokenizer - identified it as during parsing. Exactly one of these should be set. - - - - Gets whether the "identifier_value" field is set - - - Clears the value of the "identifier_value" field - - - Field number for the "positive_int_value" field. - - - Gets whether the "positive_int_value" field is set - - - Clears the value of the "positive_int_value" field - - - Field number for the "negative_int_value" field. - - - Gets whether the "negative_int_value" field is set - - - Clears the value of the "negative_int_value" field - - - Field number for the "double_value" field. - - - Gets whether the "double_value" field is set - - - Clears the value of the "double_value" field - - - Field number for the "string_value" field. - - - Gets whether the "string_value" field is set - - - Clears the value of the "string_value" field - - - Field number for the "aggregate_value" field. - - - Gets whether the "aggregate_value" field is set - - - Clears the value of the "aggregate_value" field - - - Container for nested types declared in the UninterpretedOption message type. - - - - The name of the uninterpreted option. Each string represents a segment in - a dot-separated name. is_extension is true iff a segment represents an - extension (denoted with parentheses in options specs in .proto files). - E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents - "foo.(bar.baz).moo". - - - - Field number for the "name_part" field. - - - Gets whether the "name_part" field is set - - - Clears the value of the "name_part" field - - - Field number for the "is_extension" field. - - - Gets whether the "is_extension" field is set - - - Clears the value of the "is_extension" field - - - - TODO Enums in C++ gencode (and potentially other languages) are - not well scoped. This means that each of the feature enums below can clash - with each other. The short names we've chosen maximize call-site - readability, but leave us very open to this scenario. A future feature will - be designed and implemented to handle this, hopefully before we ever hit a - conflict here. - - - - Field number for the "field_presence" field. - - - Gets whether the "field_presence" field is set - - - Clears the value of the "field_presence" field - - - Field number for the "enum_type" field. - - - Gets whether the "enum_type" field is set - - - Clears the value of the "enum_type" field - - - Field number for the "repeated_field_encoding" field. - - - Gets whether the "repeated_field_encoding" field is set - - - Clears the value of the "repeated_field_encoding" field - - - Field number for the "utf8_validation" field. - - - Gets whether the "utf8_validation" field is set - - - Clears the value of the "utf8_validation" field - - - Field number for the "message_encoding" field. - - - Gets whether the "message_encoding" field is set - - - Clears the value of the "message_encoding" field - - - Field number for the "json_format" field. - - - Gets whether the "json_format" field is set - - - Clears the value of the "json_format" field - - - Field number for the "enforce_naming_style" field. - - - Gets whether the "enforce_naming_style" field is set - - - Clears the value of the "enforce_naming_style" field - - - Container for nested types declared in the FeatureSet message type. - - - - A compiled specification for the defaults of a set of features. These - messages are generated from FeatureSet extensions and can be used to seed - feature resolution. The resolution with this object becomes a simple search - for the closest matching edition, followed by proto merges. - - - - Field number for the "defaults" field. - - - Field number for the "minimum_edition" field. - - - - The minimum supported edition (inclusive) when this was constructed. - Editions before this will not have defaults. - - - - Gets whether the "minimum_edition" field is set - - - Clears the value of the "minimum_edition" field - - - Field number for the "maximum_edition" field. - - - - The maximum known edition (inclusive) when this was constructed. Editions - after this will not have reliable defaults. - - - - Gets whether the "maximum_edition" field is set - - - Clears the value of the "maximum_edition" field - - - Container for nested types declared in the FeatureSetDefaults message type. - - - - A map from every known edition with a unique set of defaults to its - defaults. Not all editions may be contained here. For a given edition, - the defaults at the closest matching edition ordered at or before it should - be used. This field must be in strict ascending order by edition. - - - - Field number for the "edition" field. - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - Field number for the "overridable_features" field. - - - - Defaults of features that can be overridden in this edition. - - - - Field number for the "fixed_features" field. - - - - Defaults of features that can't be overridden in this edition. - - - - - Encapsulates information about the original source file from which a - FileDescriptorProto was generated. - - - - Field number for the "location" field. - - - - A Location identifies a piece of source code in a .proto file which - corresponds to a particular definition. This information is intended - to be useful to IDEs, code indexers, documentation generators, and similar - tools. - - For example, say we have a file like: - message Foo { - optional string foo = 1; - } - Let's look at just the field definition: - optional string foo = 1; - ^ ^^ ^^ ^ ^^^ - a bc de f ghi - We have the following locations: - span path represents - [a,i) [ 4, 0, 2, 0 ] The whole field definition. - [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - - Notes: - - A location may refer to a repeated field itself (i.e. not to any - particular index within it). This is used whenever a set of elements are - logically enclosed in a single code segment. For example, an entire - extend block (possibly containing multiple extension definitions) will - have an outer location whose path refers to the "extensions" repeated - field without an index. - - Multiple locations may have the same path. This happens when a single - logical declaration is spread out across multiple places. The most - obvious example is the "extend" block again -- there may be multiple - extend blocks in the same scope, each of which will have the same path. - - A location's span is not always a subset of its parent's span. For - example, the "extendee" of an extension declaration appears at the - beginning of the "extend" block and is shared by all extensions within - the block. - - Just because a location's span is a subset of some other location's span - does not mean that it is a descendant. For example, a "group" defines - both a type and a field in a single declaration. Thus, the locations - corresponding to the type and field and their components will overlap. - - Code which tries to interpret locations should probably be designed to - ignore those that it doesn't understand, as more types of locations could - be recorded in the future. - - - - Container for nested types declared in the SourceCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies which part of the FileDescriptorProto was defined at this - location. - - Each element is a field number or an index. They form a path from - the root FileDescriptorProto to the place where the definition appears. - For example, this path: - [ 4, 3, 2, 7, 1 ] - refers to: - file.message_type(3) // 4, 3 - .field(7) // 2, 7 - .name() // 1 - This is because FileDescriptorProto.message_type has field number 4: - repeated DescriptorProto message_type = 4; - and DescriptorProto.field has field number 2: - repeated FieldDescriptorProto field = 2; - and FieldDescriptorProto.name has field number 1: - optional string name = 1; - - Thus, the above path gives the location of a field name. If we removed - the last element: - [ 4, 3, 2, 7 ] - this path refers to the whole field declaration (from the beginning - of the label to the terminating semicolon). - - - - Field number for the "span" field. - - - - Always has exactly three or four elements: start line, start column, - end line (optional, otherwise assumed same as start line), end column. - These are packed into a single field for efficiency. Note that line - and column numbers are zero-based -- typically you will want to add - 1 to each before displaying to a user. - - - - Field number for the "leading_comments" field. - - - - If this SourceCodeInfo represents a complete declaration, these are any - comments appearing before and after the declaration which appear to be - attached to the declaration. - - A series of line comments appearing on consecutive lines, with no other - tokens appearing on those lines, will be treated as a single comment. - - leading_detached_comments will keep paragraphs of comments that appear - before (but not connected to) the current element. Each paragraph, - separated by empty lines, will be one comment element in the repeated - field. - - Only the comment content is provided; comment markers (e.g. //) are - stripped out. For block comments, leading whitespace and an asterisk - will be stripped from the beginning of each line other than the first. - Newlines are included in the output. - - Examples: - - optional int32 foo = 1; // Comment attached to foo. - // Comment attached to bar. - optional int32 bar = 2; - - optional string baz = 3; - // Comment attached to baz. - // Another line attached to baz. - - // Comment attached to moo. - // - // Another line attached to moo. - optional double moo = 4; - - // Detached comment for corge. This is not leading or trailing comments - // to moo or corge because there are blank lines separating it from - // both. - - // Detached comment for corge paragraph 2. - - optional string corge = 5; - /* Block comment attached - * to corge. Leading asterisks - * will be removed. */ - /* Block comment attached to - * grault. */ - optional int32 grault = 6; - - // ignored detached comments. - - - - Gets whether the "leading_comments" field is set - - - Clears the value of the "leading_comments" field - - - Field number for the "trailing_comments" field. - - - Gets whether the "trailing_comments" field is set - - - Clears the value of the "trailing_comments" field - - - Field number for the "leading_detached_comments" field. - - - - Describes the relationship between generated code and its original source - file. A GeneratedCodeInfo message is associated with only one generated - source file, but may contain references to different source .proto files. - - - - Field number for the "annotation" field. - - - - An Annotation connects some span of text in generated code to an element - of its generating .proto file. - - - - Container for nested types declared in the GeneratedCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies the element in the original source .proto file. This field - is formatted the same as SourceCodeInfo.Location.path. - - - - Field number for the "source_file" field. - - - - Identifies the filesystem path to the original source .proto. - - - - Gets whether the "source_file" field is set - - - Clears the value of the "source_file" field - - - Field number for the "begin" field. - - - - Identifies the starting offset in bytes in the generated code - that relates to the identified object. - - - - Gets whether the "begin" field is set - - - Clears the value of the "begin" field - - - Field number for the "end" field. - - - - Identifies the ending offset in bytes in the generated code that - relates to the identified object. The end offset should be one past - the last relevant byte (so the length of the text = end - begin). - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "semantic" field. - - - Gets whether the "semantic" field is set - - - Clears the value of the "semantic" field - - - Container for nested types declared in the Annotation message type. - - - - Represents the identified object's effect on the element in the original - .proto file. - - - - - There is no effect or the effect is indescribable. - - - - - The element is set or otherwise mutated. - - - - - An alias to the element is returned. - - - - - Base class for nearly all descriptors, providing common functionality. - - - - - The feature set for this descriptor, including inherited features. - This is internal as external users should use the properties on individual - descriptor types (e.g. FieldDescriptor.IsPacked) rather than querying features directly. - - - - - The index of this descriptor within its parent descriptor. - - - This returns the index of this descriptor within its parent, for - this descriptor's type. (There can be duplicate values for different - types, e.g. one enum type with index 0 and one message type with index 0.) - - - - - Returns the name of the entity (field, message etc) being described. - - - - - The fully qualified name of the descriptor's target. - - - - - The file this descriptor was declared in. - - - - - The declaration information about the descriptor, or null if no declaration information - is available for this descriptor. - - - This information is typically only available for dynamically loaded descriptors, - for example within a protoc plugin where the full descriptors, including source info, - are passed to the code by protoc. - - - - - Retrieves the list of nested descriptors corresponding to the given field number, if any. - If the field is unknown or not a nested descriptor list, return null to terminate the search. - The default implementation returns null. - - - - - Provides additional information about the declaration of a descriptor, - such as source location and comments. - - - - - The descriptor this declaration relates to. - - - - - The start line of the declaration within the source file. This value is 1-based. - - - - - The start column of the declaration within the source file. This value is 1-based. - - - - - // The end line of the declaration within the source file. This value is 1-based. - - - - - The end column of the declaration within the source file. This value is 1-based, and - exclusive. (The final character of the declaration is on the column before this value.) - - - - - Comments appearing before the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing after the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing before the declaration, but separated from it by blank - lines. Each string represents a newline-separated paragraph of comments. - Leading whitespace and the comment marker ("//") are removed from each line. - The list is never null, but may be empty. Likewise each element is never null, but may be empty. - - - - - Contains lookup tables containing all the descriptors defined in a particular file. - - - - - Finds a symbol of the given name within the pool. - - The type of symbol to look for - Fully-qualified name to look up - The symbol with the given name and type, - or null if the symbol doesn't exist or has the wrong type - - - - Adds a package to the symbol tables. If a package by the same name - already exists, that is fine, but if some other kind of symbol - exists under the same name, an exception is thrown. If the package - has multiple components, this also adds the parent package(s). - - - - - Adds a symbol to the symbol table. - - The symbol already existed - in the symbol table. - - - - Verifies that the descriptor's name is valid (i.e. it contains - only letters, digits and underscores, and does not start with a digit). - - - - - - Returns the field with the given number in the given descriptor, - or null if it can't be found. - - - - - Adds a field to the fieldsByNumber table. - - A field with the same - containing type and number already exists. - - - - Adds an enum value to the enumValuesByNumber and enumValuesByName tables. If an enum value - with the same type and number already exists, this method does nothing to enumValuesByNumber. - (This is allowed; the first value defined with the number takes precedence.) If an enum - value with the same name already exists, this method throws DescriptorValidationException. - (It is expected that this method is called after AddSymbol, which would already have thrown - an exception in this failure case.) - - - - - Looks up a descriptor by name, relative to some other descriptor. - The name may be fully-qualified (with a leading '.'), partially-qualified, - or unqualified. C++-like name lookup semantics are used to search for the - matching descriptor. - - - This isn't heavily optimized, but it's only used during cross linking anyway. - If it starts being used more widely, we should look at performance more carefully. - - - - - Struct used to hold the keys for the enumValuesByName table. - - - - - Internal class containing utility methods when working with descriptors. - - - - - Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert - arrays. - - - - - Converts the given array into a read-only list, applying the specified conversion to - each input element. - - - - - Thrown when building descriptors fails because the source DescriptorProtos - are not valid. - - - - - The full name of the descriptor where the error occurred. - - - - - A human-readable description of the error. (The Message property - is made up of the descriptor's name and this description.) - - - - - Descriptor for an enum type in a .proto file. - - - - - Returns a clone of the underlying describing this enum. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this enum descriptor. - - - - The brief name of the descriptor's target. - - - - - The CLR type for this enum. For generated code, this will be a CLR enum type. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - An unmodifiable list of defined value descriptors for this enum. - - - - - Finds an enum value by number. If multiple enum values have the - same number, this returns the first defined value with that number. - If there is no value for the given number, this returns null. - - - - - Finds an enum value by name. - - The unqualified name of the value (e.g. "FOO"). - The value's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this enum. - - - - - The EnumOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum option for this descriptor - - - - - Gets a repeated value enum option for this descriptor - - - - - Descriptor for a single enum value within an enum in a .proto file. - - - - - Returns a clone of the underlying describing this enum value. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this enum value descriptor. - - - - Returns the name of the enum value described by this object. - - - - - Returns the number associated with this enum value. - - - - - Returns the enum descriptor that this value is part of. - - - - - The (possibly empty) set of custom options for this enum value. - - - - - The EnumValueOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum value option for this descriptor - - - - - Gets a repeated value enum value option for this descriptor - - - - - A collection to simplify retrieving the descriptors of extensions in a descriptor for a message - - - - - Returns a readonly list of all the extensions defined in this type in - the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in ascending field order - - - - - A resolved set of features for a file, message etc. - - - Only features supported by the C# runtime are exposed; currently - all enums in C# are open, and we never perform UTF-8 validation. - If either of those features are ever implemented in this runtime, - the feature settings will be exposed as properties in this class. - - - - - Only relevant to fields. Indicates if a field has explicit presence. - - - - - Only relevant to fields. Indicates how a repeated field should be encoded. - - - - - Only relevant to fields. Indicates how a message-valued field should be encoded. - - - - - Returns a new descriptor based on this one, with the specified overrides. - Multiple calls to this method that produce equivalent feature sets will return - the same instance. - - The proto representation of the "child" feature set to merge with this - one. May be null, in which case this descriptor is returned. - A descriptor based on the current one, with the given set of overrides. - - - - Base class for field accessors. - - - - - Descriptor for a field or extension within a message in a .proto file. - - - - - Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension. - - - - - Returns the oneof containing this field, or null if it is not part of a oneof. - - - - - Returns the oneof containing this field if it's a "real" oneof, or null if either this - field is not part of a oneof, or the oneof is synthetic. - - - - - The effective JSON name for this field. This is usually the lower-camel-cased form of the field name, - but can be overridden using the json_name option in the .proto file. - - - - - The name of the property in the ContainingType.ClrType class. - - - - - Indicates whether this field supports presence, either implicitly (e.g. due to it being a message - type field) or explicitly via Has/Clear members. If this returns true, it is safe to call - and - on this field's accessor with a suitable message. - - - - - Returns a clone of the underlying describing this field. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this field descriptor. - - - - An extension identifier for this field, or null if this field isn't an extension. - - - - - Returns the features from the direct parent: - - The file for top-level extensions - - The oneof for one-of fields - - Otherwise the message - - - - - Returns a feature set with inferred features for the given field, or null if no features - need to be inferred. - - - - - The brief name of the descriptor's target. - - - - - Returns the accessor for this field. - - - - While a describes the field, it does not provide - any way of obtaining or changing the value of the field within a specific message; - that is the responsibility of the accessor. - - - In descriptors for generated code, the value returned by this property will be non-null for all - regular fields. However, if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, and the value of the map field itself is represented by a dictionary in the - reflection API. There are never instances of those "hidden" messages, so no accessor is provided - and this property will return null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - - - Maps a field type as included in the .proto file to a FieldType. - - - - - Returns true if this field is a repeated field; false otherwise. - - - - - Returns true if this field is a required field; false otherwise. - - - - - Returns true if this field is a map field; false otherwise. - - - - - Returns true if this field is a packed, repeated field; false otherwise. - - - - - Returns true if this field extends another message type; false otherwise. - - - - - Returns the type of the field. - - - - - Returns the field number declared in the proto file. - - - - - Compares this descriptor with another one, ordering in "canonical" order - which simply means ascending order by field number. - must be a field of the same type, i.e. the of - both fields must be the same. - - - - - For enum fields, returns the field's type. - - - - - For embedded message and group fields, returns the field's type. - - - - - For extension fields, returns the extended type - - - - - The (possibly empty) set of custom options for this field. - - - - - The FieldOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value field option for this descriptor - - - - - Gets a repeated value field option for this descriptor - - - - - Look up and cross-link all field types etc. - - - - - Enumeration of all the possible field types. - - - - - The double field type. - - - - - The float field type. - - - - - The int64 field type. - - - - - The uint64 field type. - - - - - The int32 field type. - - - - - The fixed64 field type. - - - - - The fixed32 field type. - - - - - The bool field type. - - - - - The string field type. - - - - - The field type used for groups. - - - - - The field type used for message fields. - - - - - The bytes field type. - - - - - The uint32 field type. - - - - - The sfixed32 field type. - - - - - The sfixed64 field type. - - - - - The sint32 field type. - - - - - The sint64 field type. - - - - - The field type used for enum fields. - - - - - The syntax of a .proto file - - - - - Proto2 syntax - - - - - Proto3 syntax - - - - - Editions syntax - - - - - An unknown declared syntax - - - - - Describes a .proto file, including everything defined within. - IDescriptor is implemented such that the File property returns this descriptor, - and the FullName is the same as the Name. - - - - - Computes the full name of a descriptor within this file, with an optional parent message. - - - - - Extracts public dependencies from direct dependencies. This is a static method despite its - first parameter, as the value we're in the middle of constructing is only used for exceptions. - - - - - The descriptor in its protocol message representation. - - - - - Returns a clone of the underlying describing this file. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this file descriptor. - - - - The feature set for this file, including inherited features. - - - - - Returns the edition of the file descriptor. - - - - - The syntax of the file. - - - - - The file name. - - - - - The package as declared in the .proto file. This may or may not - be equivalent to the .NET namespace of the generated classes. - - - - - Unmodifiable list of top-level message types declared in this file. - - - - - Unmodifiable list of top-level enum types declared in this file. - - - - - Unmodifiable list of top-level services declared in this file. - - - - - Unmodifiable list of top-level extensions declared in this file. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if this descriptor was generated using a version of protoc that did not fully - support extensions in C#. - - - - - Unmodifiable list of this file's dependencies (imports). - - - - - Unmodifiable list of this file's public dependencies (public imports). - - - - - The original serialized binary form of this descriptor. - - - - - Implementation of IDescriptor.FullName - just returns the same as Name. - - - - - Implementation of IDescriptor.File - just returns this descriptor. - - - - - Pool containing symbol descriptors. - - - - - Finds a type (message, enum, service or extension) in the file by name. Does not find nested types. - - The unqualified type name to look for. - The type of descriptor to look for - The type's descriptor, or null if not found. - - - - Builds a FileDescriptor from its protocol buffer representation. - - The original serialized descriptor data. - We have only limited proto2 support, so serializing FileDescriptorProto - would not necessarily give us this. - The protocol message form of the FileDescriptor. - FileDescriptors corresponding to all of the - file's dependencies, in the exact order listed in the .proto file. May be null, - in which case it is treated as an empty array. - Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false). - Details about generated code, for the purposes of reflection. - If is not - a valid descriptor. This can occur for a number of reasons, such as a field - having an undefined type or because two messages were defined with the same name. - - - - Creates a descriptor for generated code. - - - This method is only designed to be used by the results of generating code with protoc, - which creates the appropriate dependencies etc. It has to be public because the generated - code is "external", but should not be called directly by end users. - - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The extension registry to use when parsing, or null if no extensions are required. - The file descriptors corresponding to . - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The file descriptors corresponding to . - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Returns the file descriptor for descriptor.proto. - - - This is used for protos which take a direct dependency on descriptor.proto, typically for - annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf - runtime for reflection purposes. The messages are internal to the runtime as they would require - proto2 semantics for full support, but the file descriptor is available via this property. The - C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto. - - - The file descriptor for descriptor.proto. - - - - - The (possibly empty) set of custom options for this file. - - - - - The FileOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value file option for this descriptor - - - - - Gets a repeated value file option for this descriptor - - - - - Performs initialization for the given generic type argument. - - - This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated) - to make calls into the reflection machinery of this library to express an intention to use that type - reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers - attempting to determine which generic type arguments need to be handled will spot the code path and act - accordingly. - - The type to force initialization for. - - - - Extra information provided by generated code when initializing a message or file descriptor. - These are constructed as required, and are not long-lived. Hand-written code should - never need to use this type. - - - - - Irrelevant for file descriptors; the CLR type for the message for message descriptors. - - - - - Irrelevant for file descriptors; the parser for message descriptors. - - - - - Irrelevant for file descriptors; the CLR property names (in message descriptor field order) - for fields in the message for message descriptors. - - - - - The extensions defined within this file/message descriptor - - - - - Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order) - for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo", - there will be a "FooCase" property and a "ClearFoo" method. - - - - - The reflection information for types within this file/message descriptor. Elements may be null - if there is no corresponding generated type, e.g. for map entry types. - - - - - The CLR types for enums within this file/message descriptor. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums. - - - - - Interface implemented by all descriptor types. - - - - - Returns the name of the entity (message, field etc) being described. - - - - - Returns the fully-qualified name of the entity being described. - - - - - Returns the descriptor for the .proto file that this entity is part of. - - - - - Allows fields to be reflectively accessed. - - - - - Returns the descriptor associated with this field. - - - - - Clears the field in the specified message. (For repeated fields, - this clears the list.) - - - - - Fetches the field value. For repeated values, this will be an - implementation. For map values, this will be an - implementation. - - - - - Indicates whether the field in the specified message is set. - For proto3 fields that aren't explicitly optional, this throws an - - - - - Mutator for single "simple" fields only. - - - Repeated fields are mutated by fetching the value and manipulating it as a list. - Map fields are mutated by fetching the value and manipulating it as a dictionary. - - The field is not a "simple" field. - - - - Accessor for map fields. - - - - - Describes a message type. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this message. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this message descriptor. - - - - The CLR type used to represent message instances from this descriptor. - - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, so this property will return null in such cases. - - - For wrapper types ( and the like), the type returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - A parser for this message type. - - - - As is not generic, this cannot be statically - typed to the relevant type, but it should produce objects of a type compatible with . - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. No message parser object is created for - such messages, so this property will return null in such cases. - - - For wrapper types ( and the like), the parser returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - Returns whether this message is one of the "well known types" which may have runtime/protoc support. - - - - - Returns whether this message is one of the "wrapper types" used for fields which represent primitive values - with the addition of presence. - - - - - Returns whether this message was synthetically-created to store key/value pairs in a - map field. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - A collection of fields, which can be retrieved by name or field number. - - - - - An unmodifiable list of extensions defined in this message's scope. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if they are declared in a file generated using a version of protoc that did not fully - support extensions in C#. - - - - - An unmodifiable list of this message type's nested types. - - - - - An unmodifiable list of this message type's enum types. - - - - - An unmodifiable list of the "oneof" field collections in this message type. - All "real" oneofs (where returns false) - come before synthetic ones. - - - - - The number of real "oneof" descriptors in this message type. Every element in - with an index less than this will have a property value - of false; every element with an index greater than or equal to this will have a - property value of true. - - - - - Finds a field by field name. - - The unqualified name of the field (e.g. "foo"). - The field's descriptor, or null if not found. - - - - Finds a field by field number. - - The field number within this message type. - The field's descriptor, or null if not found. - - - - Finds a nested descriptor by name. The is valid for fields, nested - message types, oneofs and enums. - - The unqualified name of the descriptor, e.g. "Foo" - The descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this message. - - - - - The MessageOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value message option for this descriptor - - - - - Gets a repeated value message option for this descriptor - - - - - Looks up and cross-links all fields and nested types. - - - - - A collection to simplify retrieving the field accessor for a particular field. - - - - - Returns the fields in the message as an immutable list, in the order in which they - are declared in the source .proto file. - - - - - Returns the fields in the message as an immutable list, in ascending field number - order. Field numbers need not be contiguous, so there is no direct mapping from the - index in the list to the field number; to retrieve a field by field number, it is better - to use the indexer. - - - - - Returns a read-only dictionary mapping the field names in this message as they're available - in the JSON representation to the field descriptors. For example, a field foo_bar - in the message would result two entries, one with a key fooBar and one with a key - foo_bar, both referring to the same field. - - - - - Retrieves the descriptor for the field with the given number. - - Number of the field to retrieve the descriptor for - The accessor for the given field - The message descriptor does not contain a field - with the given number - - - - Retrieves the descriptor for the field with the given name. - - Name of the field to retrieve the descriptor for - The descriptor for the given field - The message descriptor does not contain a field - with the given name - - - - Describes a single method in a service. - - - - - The service this method belongs to. - - - - - The method's input type. - - - - - The method's input type. - - - - - Indicates if client streams multiple requests. - - - - - Indicates if server streams multiple responses. - - - - - The (possibly empty) set of custom options for this method. - - - - - The MethodOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value method option for this descriptor - - - - - Gets a repeated value method option for this descriptor - - - - - Returns a clone of the underlying describing this method. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this method descriptor. - - - - The brief name of the descriptor's target. - - - - - Reflection access for a oneof, allowing clear and "get case" actions. - - - - - Gets the descriptor for this oneof. - - - The descriptor of the oneof. - - - - - Clears the oneof in the specified message. - - - - - Indicates which field in the oneof is set for specified message - - - - - Describes a "oneof" field collection in a message type: a set of - fields of which at most one can be set in any particular message. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this oneof. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this oneof descriptor. - - - - Gets the message type containing this oneof. - - - The message type containing this oneof. - - - - - Gets the fields within this oneof, in declaration order. - - - The fields within this oneof, in declaration order. - - - - - Returns true if this oneof is a synthetic oneof containing a proto3 optional field; - false otherwise. - - - - - Gets an accessor for reflective access to the values associated with the oneof - in a particular message. - - - - In descriptors for generated code, the value returned by this property will always be non-null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - The accessor used for reflective access. - - - - - The (possibly empty) set of custom options for this oneof. - - - - - The OneofOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value oneof option for this descriptor - - - - - Gets a repeated value oneof option for this descriptor - - - - - Specifies the original name (in the .proto file) of a named element, - such as an enum value. - - - - - The name of the element in the .proto file. - - - - - If the name is preferred in the .proto file. - - - - - Constructs a new attribute instance for the given name. - - The name of the element in the .proto file. - - - - Represents a package in the symbol table. We use PackageDescriptors - just as placeholders so that someone cannot define, say, a message type - that has the same name as an existing package. - - - - - The methods in this class are somewhat evil, and should not be tampered with lightly. - Basically they allow the creation of relatively weakly typed delegates from MethodInfos - which are more strongly typed. They do this by creating an appropriate strongly typed - delegate from the MethodInfo, and then calling that within an anonymous method. - Mind-bending stuff (at least to your humble narrator) but the resulting delegates are - very fast compared with calling Invoke later on. - - - - - Empty Type[] used when calling GetProperty to force property instead of indexer fetching. - - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to object. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to the specified type. The method is expected - to actually return an enum (because of where we're calling it - for oneof cases). Sometimes - that means we need some extra work to perform conversions. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of - the method. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - type that declares the method. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of - the method. - - - - - Creates a reflection helper for the given type arguments. Currently these are created on - demand rather than cached; this will be "busy" when initially loading a message's - descriptor, but after that they can be garbage collected. We could cache them by type if - that proves to be important, but creating an object is pretty cheap. - - - - - Accessor for repeated fields. - - - - - Describes a service type. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this service. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this service descriptor. - - - - An unmodifiable list of methods in this service. - - - - - Finds a method by name. - - The unqualified name of the method (e.g. "Foo"). - The method's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this service. - - - - - The ServiceOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value service option for this descriptor - - - - - Gets a repeated value service option for this descriptor - - - - - Accessor for single fields. - - - - - An immutable registry of types which can be looked up by their full name. - - - - - An empty type registry, containing no types. - - - - - Attempts to find a message descriptor by its full name. - - The full name of the message, which is the dot-separated - combination of package, containing messages and message name - The message descriptor corresponding to or null - if there is no such message descriptor. - - - - Creates a type registry from the specified set of file descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the specified set of file descriptors. - - - All message types within all the specified files are added to the registry, and - the dependencies of the specified files are also added, recursively. - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - The specified message descriptors are only used to identify their file descriptors; the returned registry - contains all the types within the file descriptors which contain the specified message descriptors (and - the dependencies of those files), not just the specified messages. - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls. - - - - - A set of extension methods on - - - - Adds the elements of the specified span to the end of the . - The type of elements in the . - The list to which the elements should be added. - The span whose elements should be added to the end of the . - The is null. - - - - Abstraction for reading from a stream / read only sequence. - Parsing from the buffer is a loop of reading from current buffer / refreshing the buffer once done. - - - - - Initialize an instance with a coded input stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a read only sequence. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Represents a single field in an UnknownFieldSet. - - An UnknownField consists of four lists of values. The lists correspond - to the four "wire types" used in the protocol buffer binary format. - Normally, only one of the four lists will contain any values, since it - is impossible to define a valid message type that declares two different - types for the same field number. However, the code is designed to allow - for the case where the same unknown field number is encountered using - multiple different wire types. - - - - - - Creates a new UnknownField. - - - - - Checks if two unknown field are equal. - - - - - Get the hash code of the unknown field. - - - - - Serializes the field, including the field number, and writes it to - - - The unknown field number. - The write context to write to. - - - - Computes the number of bytes required to encode this field, including field - number. - - - - - Merge the values in into this field. For each list - of values, 's values are append to the ones in this - field. - - - - - Returns a new list containing all of the given specified values from - both the and lists. - If is null and is null or empty, - null is returned. Otherwise, either a new list is created (if - is null) or the elements of are added to . - - - - - Adds a varint value. - - - - - Adds a fixed32 value. - - - - - Adds a fixed64 value. - - - - - Adds a length-delimited value. - - - - - Adds to the , creating - a new list if is null. The list is returned - either - the original reference or the new list. - - - - - Used to keep track of fields which were seen when parsing a protocol message - but whose field numbers or types are unrecognized. This most frequently - occurs when new fields are added to a message type and then messages containing - those fields are read by old software that was built before the new types were - added. - - Most users will never need to use this class directly. - - - - - Creates a new UnknownFieldSet. - - - - - Checks whether or not the given field number is present in the set. - - - - - Serializes the set and writes it to . - - - - - Serializes the set and writes it to . - - - - - Gets the number of bytes required to encode this set. - - - - - Checks if two unknown field sets are equal. - - - - - Gets the unknown field set's hash code. - - - - - Adds a field to the set. If a field with the same number already exists, it - is replaced. - - - - - Parse a single field from and merge it - into this set. - - The parse context from which to read the field - false if the tag is an "end group" tag, true otherwise - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The coded input stream containing the field - The merged UnknownFieldSet - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The parse context from which to read the field - The merged UnknownFieldSet - - - - Merges the fields from into this set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Created a new UnknownFieldSet to if - needed and merges the fields from into the first set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Adds a field to the unknown field set. If a field with the same - number already exists, the two are merged. - - - - - Clone an unknown field set from . - - - - - Provides a number of unsafe byte operations to be used by advanced applications with high performance - requirements. These methods are referred to as "unsafe" due to the fact that they potentially expose - the backing buffer of a to the application. - - - - The methods in this class should only be called if it is guaranteed that the buffer backing the - will never change! Mutation of a can lead to unexpected - and undesirable consequences in your application, and will likely be difficult to debug. Proceed with caution! - - - This can have a number of significant side affects that have spooky-action-at-a-distance-like behavior. In - particular, if the bytes value changes out from under a Protocol Buffer: - - - - serialization may throw - - - serialization may succeed but the wrong bytes may be written out - - - objects that are normally immutable (such as ByteString) are no longer immutable - - - hashCode may be incorrect - - - - - - - Constructs a new from the given bytes. The bytes are not copied, - and must not be modified while the is in use. - This API is experimental and subject to change. - - - - - An unsafe class that provides a set of methods to access the underlying data representations of - collections. - - - - - - Returns a that wraps the current backing array of the given - . - - - Values in the should not be set to null. Use - or to - remove items instead. - - - The returned is only valid until the size of the - is modified, after which its state becomes undefined. - Modifying existing elements without changing the size is safe as long as the modifications - do not set null values. - - - - The type of elements in the . - - - The for which to wrap the current backing array. Must not be - null. - - - A that wraps the current backing array of the - . - - - Thrown if is . - - - - - - Sets the count of the specified to the given value. - - - This method should only be called if the subsequent code guarantees to populate - the field with the specified number of items. - - - If count is less than , the collection is effectively - trimmed down to the first count elements. - is unchanged, meaning the underlying array remains allocated. - - - - The type of elements in the . - - - The field to set the count of. Must not be null. - - - The value to set the field's count to. Must be non-negative. - - - Thrown if is . - - - Thrown if is negative. - - - - Holder for reflection information generated from google/protobuf/any.proto - - - File descriptor for google/protobuf/any.proto - - - - `Any` contains an arbitrary serialized protocol buffer message along with a - URL that describes the type of the serialized message. - - Protobuf library provides support to pack/unpack Any values in the form - of utility functions or additional generated methods of the Any type. - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". - - JSON - ==== - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": <string>, - "lastName": <string> - } - - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - - - - Field number for the "type_url" field. - - - - A URL/resource name that uniquely identifies the type of the serialized - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical form - (e.g., leading "." is not accepted). - - In practice, teams usually precompile into the binary all types that they - expect it to use in the context of Any. However, for URLs which use the - scheme `http`, `https`, or no scheme, one can optionally set up a type - server that maps type URLs to message definitions as follows: - - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. As of May 2023, there are no widely used type server - implementations and no plans to implement one. - - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - - - - Field number for the "value" field. - - - - Must be a valid serialized protocol buffer of the above specified type. - - - - - Retrieves the type name for a type URL, matching the - of the packed message type. - - - - This is always just the last part of the URL, after the final slash. No validation of - anything before the trailing slash is performed. If the type URL does not include a slash, - an empty string is returned rather than an exception being thrown; this won't match any types, - and the calling code is probably in a better position to give a meaningful error. - - - There is no handling of fragments or queries at the moment. - - - The URL to extract the type name from - The type name - - - - Returns a bool indictating whether this Any message is of the target message type - - The descriptor of the message type - true if the type name matches the descriptor's full name or false otherwise - - - - Unpacks the content of this Any message into the target message type, - which must match the type URL within this Any message. - - The type of message to unpack the content into. - The unpacked message. - The target message type doesn't match the type URL in this message - - - - Attempts to unpack the content of this Any message into the target message type, - if it matches the type URL within this Any message. - - The type of message to attempt to unpack the content into. - true if the message was successfully unpacked; false if the type name didn't match - - - - Attempts to unpack the content of this Any message into one of the message types - in the given type registry, based on the type URL. - - The type registry to consult for messages. - The unpacked message, or null if no matching message was found. - - - - Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com". - - The message to pack. - An Any message with the content and type URL of . - - - - Packs the specified message into an Any message using the specified type URL prefix. - - The message to pack. - The prefix for the type URL. - An Any message with the content and type URL of . - - - Holder for reflection information generated from google/protobuf/api.proto - - - File descriptor for google/protobuf/api.proto - - - - Api is a light-weight descriptor for an API Interface. - - Interfaces are also described as "protocol buffer services" in some contexts, - such as by the "service" keyword in a .proto file, but they are different - from API Services, which represent a concrete implementation of an interface - as opposed to simply a description of methods and bindings. They are also - sometimes simply referred to as "APIs" in other contexts, such as the name of - this message itself. See https://cloud.google.com/apis/design/glossary for - detailed terminology. - - - - Field number for the "name" field. - - - - The fully qualified name of this interface, including package name - followed by the interface's simple name. - - - - Field number for the "methods" field. - - - - The methods of this interface, in unspecified order. - - - - Field number for the "options" field. - - - - Any metadata attached to the interface. - - - - Field number for the "version" field. - - - - A version string for this interface. If specified, must have the form - `major-version.minor-version`, as in `1.10`. If the minor version is - omitted, it defaults to zero. If the entire version field is empty, the - major version is derived from the package name, as outlined below. If the - field is not empty, the version in the package name will be verified to be - consistent with what is provided here. - - The versioning schema uses [semantic - versioning](http://semver.org) where the major version number - indicates a breaking change and the minor version an additive, - non-breaking change. Both version numbers are signals to users - what to expect from different versions, and should be carefully - chosen based on the product plan. - - The major version is also reflected in the package name of the - interface, which must end in `v<major-version>`, as in - `google.feature.v1`. For major versions 0 and 1, the suffix can - be omitted. Zero major versions must only be used for - experimental, non-GA interfaces. - - - - Field number for the "source_context" field. - - - - Source context for the protocol buffer service represented by this - message. - - - - Field number for the "mixins" field. - - - - Included interfaces. See [Mixin][]. - - - - Field number for the "syntax" field. - - - - The source syntax of the service. - - - - - Method represents a method of an API interface. - - - - Field number for the "name" field. - - - - The simple name of this method. - - - - Field number for the "request_type_url" field. - - - - A URL of the input message type. - - - - Field number for the "request_streaming" field. - - - - If true, the request is streamed. - - - - Field number for the "response_type_url" field. - - - - The URL of the output message type. - - - - Field number for the "response_streaming" field. - - - - If true, the response is streamed. - - - - Field number for the "options" field. - - - - Any metadata attached to the method. - - - - Field number for the "syntax" field. - - - - The source syntax of this method. - - - - - Declares an API Interface to be included in this interface. The including - interface must redeclare all the methods from the included interface, but - documentation and options are inherited as follows: - - - If after comment and whitespace stripping, the documentation - string of the redeclared method is empty, it will be inherited - from the original method. - - - Each annotation belonging to the service config (http, - visibility) which is not set in the redeclared method will be - inherited. - - - If an http annotation is inherited, the path pattern will be - modified as follows. Any version prefix will be replaced by the - version of the including interface plus the [root][] path if - specified. - - Example of a simple mixin: - - package google.acl.v1; - service AccessControl { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v1/{resource=**}:getAcl"; - } - } - - package google.storage.v2; - service Storage { - rpc GetAcl(GetAclRequest) returns (Acl); - - // Get a data record. - rpc GetData(GetDataRequest) returns (Data) { - option (google.api.http).get = "/v2/{resource=**}"; - } - } - - Example of a mixin configuration: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - - The mixin construct implies that all methods in `AccessControl` are - also declared with same name and request/response types in - `Storage`. A documentation generator or annotation processor will - see the effective `Storage.GetAcl` method after inheriting - documentation and annotations as follows: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/{resource=**}:getAcl"; - } - ... - } - - Note how the version in the path pattern changed from `v1` to `v2`. - - If the `root` field in the mixin is specified, it should be a - relative path under which inherited HTTP paths are placed. Example: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - root: acls - - This implies the following inherited HTTP annotation: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; - } - ... - } - - - - Field number for the "name" field. - - - - The fully qualified name of the interface which is included. - - - - Field number for the "root" field. - - - - If non-empty specifies a path under which inherited HTTP paths - are rooted. - - - - Holder for reflection information generated from google/protobuf/duration.proto - - - File descriptor for google/protobuf/duration.proto - - - - A Duration represents a signed, fixed-length span of time represented - as a count of seconds and fractions of seconds at nanosecond - resolution. It is independent of any calendar and concepts like "day" - or "month". It is related to Timestamp in that the difference between - two Timestamp values is a Duration and it can be added or subtracted - from a Timestamp. Range is approximately +-10,000 years. - - # Examples - - Example 1: Compute Duration from two Timestamps in pseudo code. - - Timestamp start = ...; - Timestamp end = ...; - Duration duration = ...; - - duration.seconds = end.seconds - start.seconds; - duration.nanos = end.nanos - start.nanos; - - if (duration.seconds < 0 && duration.nanos > 0) { - duration.seconds += 1; - duration.nanos -= 1000000000; - } else if (duration.seconds > 0 && duration.nanos < 0) { - duration.seconds -= 1; - duration.nanos += 1000000000; - } - - Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - - Timestamp start = ...; - Duration duration = ...; - Timestamp end = ...; - - end.seconds = start.seconds + duration.seconds; - end.nanos = start.nanos + duration.nanos; - - if (end.nanos < 0) { - end.seconds -= 1; - end.nanos += 1000000000; - } else if (end.nanos >= 1000000000) { - end.seconds += 1; - end.nanos -= 1000000000; - } - - Example 3: Compute Duration from datetime.timedelta in Python. - - td = datetime.timedelta(days=3, minutes=10) - duration = Duration() - duration.FromTimedelta(td) - - # JSON Mapping - - In JSON format, the Duration type is encoded as a string rather than an - object, where the string ends in the suffix "s" (indicating seconds) and - is preceded by the number of seconds, with nanoseconds expressed as - fractional seconds. For example, 3 seconds with 0 nanoseconds should be - encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - microsecond should be expressed in JSON format as "3.000001s". - - - - Field number for the "seconds" field. - - - - Signed seconds of the span of time. Must be from -315,576,000,000 - to +315,576,000,000 inclusive. Note: these bounds are computed from: - 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - - - - Field number for the "nanos" field. - - - - Signed fractions of a second at nanosecond resolution of the span - of time. Durations less than one second are represented with a 0 - `seconds` field and a positive or negative `nanos` field. For durations - of one second or more, a non-zero value for the `nanos` field must be - of the same sign as the `seconds` field. Must be from -999,999,999 - to +999,999,999 inclusive. - - - - - The number of nanoseconds in a second. - - - - - The number of nanoseconds in a BCL tick (as used by and ). - - - - - The maximum permitted number of seconds. - - - - - The minimum permitted number of seconds. - - - - - Converts this to a . - - If the duration is not a precise number of ticks, it is truncated towards 0. - The value of this duration, as a TimeSpan. - This value isn't a valid normalized duration, as - described in the documentation. - - - - Converts the given to a . - - The TimeSpan to convert. - The value of the given TimeSpan, as a Duration. - - - - Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes. - - The duration to negate. Must not be null. - The negated value of this duration. - - - - Adds the two specified values together. - - The first value to add. Must not be null. - The second value to add. Must not be null. - - - - - Subtracts one from another. - - The duration to subtract from. Must not be null. - The duration to subtract. Must not be null. - The difference between the two specified durations. - - - - Creates a duration with the normalized values from the given number of seconds and - nanoseconds, conforming with the description in the proto file. - - - - - Converts a duration specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in duration.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which - case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well - as Duration. - - - - - Given another duration, returns 0 if the durations are equivalent, -1 if this duration is shorter than the other, and 1 otherwise. - - - This method expects that both durations are normalized; that is, that the values of - and are within the documented bounds. - If either value is not normalized, the results of this method are unspecified. - - The duration to compare with this object. - An integer indicating whether this duration is shorter or longer than . - - - Holder for reflection information generated from google/protobuf/empty.proto - - - File descriptor for google/protobuf/empty.proto - - - - A generic empty message that you can re-use to avoid defining duplicated - empty messages in your APIs. A typical example is to use it as the request - or the response type of an API method. For instance: - - service Foo { - rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - } - - - - Holder for reflection information generated from google/protobuf/field_mask.proto - - - File descriptor for google/protobuf/field_mask.proto - - - - `FieldMask` represents a set of symbolic field paths, for example: - - paths: "f.a" - paths: "f.b.d" - - Here `f` represents a field in some root message, `a` and `b` - fields in the message found in `f`, and `d` a field found in the - message in `f.b`. - - Field masks are used to specify a subset of fields that should be - returned by a get operation or modified by an update operation. - Field masks also have a custom JSON encoding (see below). - - # Field Masks in Projections - - When used in the context of a projection, a response message or - sub-message is filtered by the API to only contain those fields as - specified in the mask. For example, if the mask in the previous - example is applied to a response message as follows: - - f { - a : 22 - b { - d : 1 - x : 2 - } - y : 13 - } - z: 8 - - The result will not contain specific values for fields x,y and z - (their value will be set to the default, and omitted in proto text - output): - - f { - a : 22 - b { - d : 1 - } - } - - A repeated field is not allowed except at the last position of a - paths string. - - If a FieldMask object is not present in a get operation, the - operation applies to all fields (as if a FieldMask of all fields - had been specified). - - Note that a field mask does not necessarily apply to the - top-level response message. In case of a REST get operation, the - field mask applies directly to the response, but in case of a REST - list operation, the mask instead applies to each individual message - in the returned resource list. In case of a REST custom method, - other definitions may be used. Where the mask applies will be - clearly documented together with its declaration in the API. In - any case, the effect on the returned resource/resources is required - behavior for APIs. - - # Field Masks in Update Operations - - A field mask in update operations specifies which fields of the - targeted resource are going to be updated. The API is required - to only change the values of the fields as specified in the mask - and leave the others untouched. If a resource is passed in to - describe the updated values, the API ignores the values of all - fields not covered by the mask. - - If a repeated field is specified for an update operation, new values will - be appended to the existing repeated field in the target resource. Note that - a repeated field is only allowed in the last position of a `paths` string. - - If a sub-message is specified in the last position of the field mask for an - update operation, then new value will be merged into the existing sub-message - in the target resource. - - For example, given the target message: - - f { - b { - d: 1 - x: 2 - } - c: [1] - } - - And an update message: - - f { - b { - d: 10 - } - c: [2] - } - - then if the field mask is: - - paths: ["f.b", "f.c"] - - then the result will be: - - f { - b { - d: 10 - x: 2 - } - c: [1, 2] - } - - An implementation may provide options to override this default behavior for - repeated and message fields. - - In order to reset a field's value to the default, the field must - be in the mask and set to the default value in the provided resource. - Hence, in order to reset all fields of a resource, provide a default - instance of the resource and set all fields in the mask, or do - not provide a mask as described below. - - If a field mask is not present on update, the operation applies to - all fields (as if a field mask of all fields has been specified). - Note that in the presence of schema evolution, this may mean that - fields the client does not know and has therefore not filled into - the request will be reset to their default. If this is unwanted - behavior, a specific service may require a client to always specify - a field mask, producing an error if not. - - As with get operations, the location of the resource which - describes the updated values in the request message depends on the - operation kind. In any case, the effect of the field mask is - required to be honored by the API. - - ## Considerations for HTTP REST - - The HTTP kind of an update operation which uses a field mask must - be set to PATCH instead of PUT in order to satisfy HTTP semantics - (PUT must only be used for full updates). - - # JSON Encoding of Field Masks - - In JSON, a field mask is encoded as a single string where paths are - separated by a comma. Fields name in each path are converted - to/from lower-camel naming conventions. - - As an example, consider the following message declarations: - - message Profile { - User user = 1; - Photo photo = 2; - } - message User { - string display_name = 1; - string address = 2; - } - - In proto a field mask for `Profile` may look as such: - - mask { - paths: "user.display_name" - paths: "photo" - } - - In JSON, the same mask is represented as below: - - { - mask: "user.displayName,photo" - } - - # Field Masks and Oneof Fields - - Field masks treat fields in oneofs just as regular fields. Consider the - following message: - - message SampleMessage { - oneof test_oneof { - string name = 4; - SubMessage sub_message = 9; - } - } - - The field mask can be: - - mask { - paths: "name" - } - - Or: - - mask { - paths: "sub_message" - } - - Note that oneof type names ("test_oneof" in this case) cannot be used in - paths. - - ## Field Mask Verification - - The implementation of any API method which has a FieldMask type field in the - request should verify the included field paths, and return an - `INVALID_ARGUMENT` error if any path is unmappable. - - - - Field number for the "paths" field. - - - - The set of field mask paths. - - - - - Converts a field mask specified by paths to a string. - - - If the value is a normalized duration in the range described in field_mask.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Paths in the field mask - Determines the handling of non-normalized values - The represented field mask is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Parses from a string to a FieldMask. - - - - - Parses from a string to a FieldMask and validates all field paths. - - The type to validate the field paths against. - - - - Constructs a FieldMask for a list of field paths in a certain type. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Checks whether the given path is valid for a field mask. - - true if the path is valid; false otherwise - - - - Checks whether paths in a given fields mask are valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Checks whether a given field path is valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Converts this FieldMask to its canonical form. In the canonical form of a - FieldMask, all field paths are sorted alphabetically and redundant field - paths are removed. - - - - - Creates a union of two or more FieldMasks. - - - - - Calculates the intersection of two FieldMasks. - - - - - Merges fields specified by this FieldMask from one message to another with the - specified merge options. - - - - - Merges fields specified by this FieldMask from one message to another. - - - - - Options to customize merging behavior. - - - - - Whether to replace message fields(i.e., discard existing content in - destination message fields) when merging. - Default behavior is to merge the source message field into the - destination message field. - - - - - Whether to replace repeated fields (i.e., discard existing content in - destination repeated fields) when merging. - Default behavior is to append elements from source repeated field to the - destination repeated field. - - - - - Whether to replace primitive (non-repeated and non-message) fields in - destination message fields with the source primitive fields (i.e., if the - field is set in the source, the value is copied to the - destination; if the field is unset in the source, the field is cleared - from the destination) when merging. - - Default behavior is to always set the value of the source primitive - field to the destination primitive field, and if the source field is - unset, the default value of the source field is copied to the - destination. - - - - Holder for reflection information generated from google/protobuf/source_context.proto - - - File descriptor for google/protobuf/source_context.proto - - - - `SourceContext` represents information about the source of a - protobuf element, like the file in which it is defined. - - - - Field number for the "file_name" field. - - - - The path-qualified name of the .proto file that contained the associated - protobuf element. For example: `"google/protobuf/source_context.proto"`. - - - - Holder for reflection information generated from google/protobuf/struct.proto - - - File descriptor for google/protobuf/struct.proto - - - - `NullValue` is a singleton enumeration to represent the null value for the - `Value` type union. - - The JSON representation for `NullValue` is JSON `null`. - - - - - Null value. - - - - - `Struct` represents a structured data value, consisting of fields - which map to dynamically typed values. In some languages, `Struct` - might be supported by a native representation. For example, in - scripting languages like JS a struct is represented as an - object. The details of that representation are described together - with the proto support for the language. - - The JSON representation for `Struct` is JSON object. - - - - Field number for the "fields" field. - - - - Unordered map of dynamically typed values. - - - - - `Value` represents a dynamically typed value which can be either - null, a number, a string, a boolean, a recursive struct value, or a - list of values. A producer of value is expected to set one of these - variants. Absence of any variant indicates an error. - - The JSON representation for `Value` is JSON value. - - - - Field number for the "null_value" field. - - - - Represents a null value. - - - - Gets whether the "null_value" field is set - - - Clears the value of the oneof if it's currently set to "null_value" - - - Field number for the "number_value" field. - - - - Represents a double value. - - - - Gets whether the "number_value" field is set - - - Clears the value of the oneof if it's currently set to "number_value" - - - Field number for the "string_value" field. - - - - Represents a string value. - - - - Gets whether the "string_value" field is set - - - Clears the value of the oneof if it's currently set to "string_value" - - - Field number for the "bool_value" field. - - - - Represents a boolean value. - - - - Gets whether the "bool_value" field is set - - - Clears the value of the oneof if it's currently set to "bool_value" - - - Field number for the "struct_value" field. - - - - Represents a structured value. - - - - Field number for the "list_value" field. - - - - Represents a repeated `Value`. - - - - Enum of possible cases for the "kind" oneof. - - - - Convenience method to create a Value message with a string value. - - Value to set for the StringValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a number value. - - Value to set for the NumberValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a Boolean value. - - Value to set for the BoolValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a null initial value. - - A newly-created Value message a null initial value. - - - - Convenience method to create a Value message with an initial list of values. - - The values provided are not cloned; the references are copied directly. - A newly-created Value message an initial list value. - - - - Convenience method to create a Value message with an initial struct value - - The value provided is not cloned; the reference is copied directly. - A newly-created Value message an initial struct value. - - - - `ListValue` is a wrapper around a repeated field of values. - - The JSON representation for `ListValue` is JSON array. - - - - Field number for the "values" field. - - - - Repeated field of dynamically typed values. - - - - - Extension methods on BCL time-related types, converting to protobuf types. - - - - - Converts the given to a . - - The date and time to convert to a timestamp. - The value has a other than Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts the given to a . - - The time span to convert. - The converted duration. - - - Holder for reflection information generated from google/protobuf/timestamp.proto - - - File descriptor for google/protobuf/timestamp.proto - - - - A Timestamp represents a point in time independent of any time zone or local - calendar, encoded as a count of seconds and fractions of seconds at - nanosecond resolution. The count is relative to an epoch at UTC midnight on - January 1, 1970, in the proleptic Gregorian calendar which extends the - Gregorian calendar backwards to year one. - - All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - second table is needed for interpretation, using a [24-hour linear - smear](https://developers.google.com/time/smear). - - The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - restricting to that range, we ensure that we can convert to and from [RFC - 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - - # Examples - - Example 1: Compute Timestamp from POSIX `time()`. - - Timestamp timestamp; - timestamp.set_seconds(time(NULL)); - timestamp.set_nanos(0); - - Example 2: Compute Timestamp from POSIX `gettimeofday()`. - - struct timeval tv; - gettimeofday(&tv, NULL); - - Timestamp timestamp; - timestamp.set_seconds(tv.tv_sec); - timestamp.set_nanos(tv.tv_usec * 1000); - - Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - - FILETIME ft; - GetSystemTimeAsFileTime(&ft); - UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - - // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - Timestamp timestamp; - timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - - Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - - long millis = System.currentTimeMillis(); - - Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - .setNanos((int) ((millis % 1000) * 1000000)).build(); - - Example 5: Compute Timestamp from Java `Instant.now()`. - - Instant now = Instant.now(); - - Timestamp timestamp = - Timestamp.newBuilder().setSeconds(now.getEpochSecond()) - .setNanos(now.getNano()).build(); - - Example 6: Compute Timestamp from current time in Python. - - timestamp = Timestamp() - timestamp.GetCurrentTime() - - # JSON Mapping - - In JSON format, the Timestamp type is encoded as a string in the - [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - where {year} is always expressed using four digits while {month}, {day}, - {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - is required. A proto3 JSON serializer should always use UTC (as indicated by - "Z") when printing the Timestamp type and a proto3 JSON parser should be - able to accept both UTC and other timezones (as indicated by an offset). - - For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - 01:30 UTC on January 15, 2017. - - In JavaScript, one can convert a Date object to this format using the - standard - [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - method. In Python, a standard `datetime.datetime` object can be converted - to this format using - [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - the Joda Time's [`ISODateTimeFormat.dateTime()`]( - http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() - ) to obtain a formatter capable of generating timestamps in this format. - - - - Field number for the "seconds" field. - - - - Represents seconds of UTC time since Unix epoch - 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - 9999-12-31T23:59:59Z inclusive. - - - - Field number for the "nanos" field. - - - - Non-negative fractions of a second at nanosecond resolution. Negative - second values with fractions must still have non-negative nanos values - that count forward in time. Must be from 0 to 999,999,999 - inclusive. - - - - - Returns the difference between one and another, as a . - - The timestamp to subtract from. Must not be null. - The timestamp to subtract. Must not be null. - The difference between the two specified timestamps. - - - - Adds a to a , to obtain another Timestamp. - - The timestamp to add the duration to. Must not be null. - The duration to add. Must not be null. - The result of adding the duration to the timestamp. - - - - Subtracts a from a , to obtain another Timestamp. - - The timestamp to subtract the duration from. Must not be null. - The duration to subtract. - The result of subtracting the duration from the timestamp. - - - - Converts this timestamp into a . - - - The resulting DateTime will always have a Kind of Utc. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTime. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts this timestamp into a . - - - The resulting DateTimeOffset will always have an Offset of zero. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTimeOffset. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts the specified to a . - - - The Kind of is not DateTimeKind.Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts a timestamp specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in timestamp.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - Timestamp to compare - an integer indicating whether this timestamp precedes or follows the other - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Returns whether two timestamps are equivalent - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps refer to the same nanosecond - - - - Returns whether two timestamps differ - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps differ - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - Holder for reflection information generated from google/protobuf/type.proto - - - File descriptor for google/protobuf/type.proto - - - - The syntax in which a protocol buffer element is defined. - - - - - Syntax `proto2`. - - - - - Syntax `proto3`. - - - - - Syntax `editions`. - - - - - A protocol buffer message type. - - - - Field number for the "name" field. - - - - The fully qualified message name. - - - - Field number for the "fields" field. - - - - The list of fields. - - - - Field number for the "oneofs" field. - - - - The list of types appearing in `oneof` definitions in this type. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - Field number for the "edition" field. - - - - The source edition string, only valid when syntax is SYNTAX_EDITIONS. - - - - - A single field of a message type. - - - - Field number for the "kind" field. - - - - The field type. - - - - Field number for the "cardinality" field. - - - - The field cardinality. - - - - Field number for the "number" field. - - - - The field number. - - - - Field number for the "name" field. - - - - The field name. - - - - Field number for the "type_url" field. - - - - The field type URL, without the scheme, for message or enumeration - types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - - - - Field number for the "oneof_index" field. - - - - The index of the field type in `Type.oneofs`, for message or enumeration - types. The first type has index 1; zero means the type is not in the list. - - - - Field number for the "packed" field. - - - - Whether to use alternative packed wire representation. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "json_name" field. - - - - The field JSON name. - - - - Field number for the "default_value" field. - - - - The string value of the default value of this field. Proto2 syntax only. - - - - Container for nested types declared in the Field message type. - - - - Basic field types. - - - - - Field type unknown. - - - - - Field type double. - - - - - Field type float. - - - - - Field type int64. - - - - - Field type uint64. - - - - - Field type int32. - - - - - Field type fixed64. - - - - - Field type fixed32. - - - - - Field type bool. - - - - - Field type string. - - - - - Field type group. Proto2 syntax only, and deprecated. - - - - - Field type message. - - - - - Field type bytes. - - - - - Field type uint32. - - - - - Field type enum. - - - - - Field type sfixed32. - - - - - Field type sfixed64. - - - - - Field type sint32. - - - - - Field type sint64. - - - - - Whether a field is optional, required, or repeated. - - - - - For fields with unknown cardinality. - - - - - For optional fields. - - - - - For required fields. Proto2 syntax only. - - - - - For repeated fields. - - - - - Enum type definition. - - - - Field number for the "name" field. - - - - Enum type name. - - - - Field number for the "enumvalue" field. - - - - Enum value definitions. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - Field number for the "edition" field. - - - - The source edition string, only valid when syntax is SYNTAX_EDITIONS. - - - - - Enum value definition. - - - - Field number for the "name" field. - - - - Enum value name. - - - - Field number for the "number" field. - - - - Enum value number. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - - A protocol buffer option, which can be attached to a message, field, - enumeration, etc. - - - - Field number for the "name" field. - - - - The option's name. For protobuf built-in options (options defined in - descriptor.proto), this is the short name. For example, `"map_entry"`. - For custom options, it should be the fully-qualified name. For example, - `"google.api.http"`. - - - - Field number for the "value" field. - - - - The option's value packed in an Any message. If the value is a primitive, - the corresponding wrapper type defined in google/protobuf/wrappers.proto - should be used. If the value is an enum, it should be stored as an int32 - value using the google.protobuf.Int32Value type. - - - - Holder for reflection information generated from google/protobuf/wrappers.proto - - - File descriptor for google/protobuf/wrappers.proto - - - - Field number for the single "value" field in all wrapper types. - - - - - Wrapper message for `double`. - - The JSON representation for `DoubleValue` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The double value. - - - - - Wrapper message for `float`. - - The JSON representation for `FloatValue` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The float value. - - - - - Wrapper message for `int64`. - - The JSON representation for `Int64Value` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The int64 value. - - - - - Wrapper message for `uint64`. - - The JSON representation for `UInt64Value` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The uint64 value. - - - - - Wrapper message for `int32`. - - The JSON representation for `Int32Value` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The int32 value. - - - - - Wrapper message for `uint32`. - - The JSON representation for `UInt32Value` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The uint32 value. - - - - - Wrapper message for `bool`. - - The JSON representation for `BoolValue` is JSON `true` and `false`. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The bool value. - - - - - Wrapper message for `string`. - - The JSON representation for `StringValue` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The string value. - - - - - Wrapper message for `bytes`. - - The JSON representation for `BytesValue` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The bytes value. - - - - - This class is used internally by the Protocol Buffer Library and generated - message implementations. It is public only for the sake of those generated - messages. Others should not use this class directly. - - This class contains constants and helper functions useful for dealing with - the Protocol Buffer wire format. - - - - - - Wire types within protobuf encoding. - - - - - Variable-length integer. - - - - - A fixed-length 64-bit value. - - - - - A length-delimited value, i.e. a length followed by that many bytes of data. - - - - - A "start group" value - - - - - An "end group" value - - - - - A fixed-length 32-bit value. - - - - - Given a tag value, determines the wire type (lower 3 bits). - - - - - Given a tag value, determines the field number (the upper 29 bits). - - - - - Makes a tag value given a field number and wire type. - - - - - Abstraction for writing to a steam / IBufferWriter - - - - - Initialize an instance with a coded output stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer writer. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer represented by a single span (i.e. buffer cannot be refreshed) - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Verifies that SpaceLeft returns zero. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - An opaque struct that represents the current serialization state and is passed along - as the serialization proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Creates a WriteContext instance from CodedOutputStream. - WARNING: internally this copies the CodedOutputStream's state, so after done with the WriteContext, - the CodedOutputStream's state needs to be updated. - - - - - Writes a double field value, without a tag. - - The value to write - - - - Writes a float field value, without a tag. - - The value to write - - - - Writes a uint64 field value, without a tag. - - The value to write - - - - Writes an int64 field value, without a tag. - - The value to write - - - - Writes an int32 field value, without a tag. - - The value to write - - - - Writes a fixed64 field value, without a tag. - - The value to write - - - - Writes a fixed32 field value, without a tag. - - The value to write - - - - Writes a bool field value, without a tag. - - The value to write - - - - Writes a string field value, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag. - - The value to write - - - - Writes an enum value, without a tag. - - The value to write - - - - Writes an sfixed32 value, without a tag. - - The value to write. - - - - Writes an sfixed64 value, without a tag. - - The value to write - - - - Writes an sint32 value, without a tag. - - The value to write - - - - Writes an sint64 value, without a tag. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag. - - The encoded tag - - - - Writes the given two-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Primitives for encoding protobuf wire format. - - - - - Writes a double field value, without a tag, to the stream. - - - - - Writes a float field value, without a tag, to the stream. - - - - - Writes a uint64 field value, without a tag, to the stream. - - - - - Writes an int64 field value, without a tag, to the stream. - - - - - Writes an int32 field value, without a tag, to the stream. - - - - - Writes a fixed64 field value, without a tag, to the stream. - - - - - Writes a fixed32 field value, without a tag, to the stream. - - - - - Writes a bool field value, without a tag, to the stream. - - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - - - - Given a QWORD which represents a buffer of 4 ASCII chars in machine-endian order, - narrows each WORD to a BYTE, then writes the 4-byte result to the output buffer - also in machine-endian order. - - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - - - - Writes a uint32 value, without a tag, to the stream. - - - - - Writes an enum value, without a tag, to the stream. - - - - - Writes an sfixed32 value, without a tag, to the stream. - - - - - Writes an sfixed64 value, without a tag, to the stream. - - - - - Writes an sint32 value, without a tag, to the stream. - - - - - Writes an sint64 value, without a tag, to the stream. - - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Encodes and writes a tag. - - - - - Writes an already-encoded tag. - - - - - Writes the given single-byte tag directly to the stream. - - - - - Writes the given two-byte tag directly to the stream. - - - - - Writes the given three-byte tag directly to the stream. - - - - - Writes the given four-byte tag directly to the stream. - - - - - Writes the given five-byte tag directly to the stream. - - - - - Encode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Encode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Writing messages / groups. - - - - - Writes a message, without a tag. - The data is length-prefixed. - - - - - Writes a group, without a tag. - - - - - Writes a message, without a tag. - Message will be written without a length prefix. - - - - - Indicates that certain members on a specified are accessed dynamically, - for example through . - - - This allows tools to understand which members are being accessed during the execution - of a program. - - This attribute is valid on members whose type is or . - - When this attribute is applied to a location of type , the assumption is - that the string represents a fully qualified type name. - - When this attribute is applied to a class, interface, or struct, the members specified - can be accessed dynamically on instances returned from calling - on instances of that class, interface, or struct. - - If the attribute is applied to a method it's treated as a special case and it implies - the attribute should be applied to the "this" parameter of the method. As such the attribute - should only be used on instance methods of types assignable to System.Type (or string, but no methods - will use it there). - - - - - Initializes a new instance of the class - with the specified member types. - - The types of members dynamically accessed. - - - - Gets the which specifies the type - of members dynamically accessed. - - - - - Specifies the types of members that are dynamically accessed. - - This enumeration has a attribute that allows a - bitwise combination of its member values. - - - - - Specifies no members. - - - - - Specifies the default, parameterless public constructor. - - - - - Specifies all public constructors. - - - - - Specifies all non-public constructors. - - - - - Specifies all public methods. - - - - - Specifies all non-public methods. - - - - - Specifies all public fields. - - - - - Specifies all non-public fields. - - - - - Specifies all public nested types. - - - - - Specifies all non-public nested types. - - - - - Specifies all public properties. - - - - - Specifies all non-public properties. - - - - - Specifies all public events. - - - - - Specifies all non-public events. - - - - - Specifies all interfaces implemented by the type. - - - - - Specifies all members. - - - - - Indicates that the specified method requires dynamic access to code that is not referenced - statically, for example through . - - - This allows tools to understand which methods are unsafe to call when removing unreferenced - code from an application. - - - - - Initializes a new instance of the class - with the specified message. - - - A message that contains information about the usage of unreferenced code. - - - - - Gets a message that contains information about the usage of unreferenced code. - - - - - Gets or sets an optional URL that contains more information about the method, - why it requires unreferenced code, and what options a consumer has to deal with it. - - - - - Suppresses reporting of a specific rule violation, allowing multiple suppressions on a - single code artifact. - - - is different than - in that it doesn't have a - . So it is always preserved in the compiled assembly. - - - - - Initializes a new instance of the - class, specifying the category of the tool and the identifier for an analysis rule. - - The category for the attribute. - The identifier of the analysis rule the attribute applies to. - - - - Gets the category identifying the classification of the attribute. - - - The property describes the tool or tool analysis category - for which a message suppression attribute applies. - - - - - Gets the identifier of the analysis tool rule to be suppressed. - - - Concatenated together, the and - properties form a unique check identifier. - - - - - Gets or sets the scope of the code that is relevant for the attribute. - - - The Scope property is an optional argument that specifies the metadata scope for which - the attribute is relevant. - - - - - Gets or sets a fully qualified path that represents the target of the attribute. - - - The property is an optional argument identifying the analysis target - of the attribute. An example value is "System.IO.Stream.ctor():System.Void". - Because it is fully qualified, it can be long, particularly for targets such as parameters. - The analysis tool user interface should be capable of automatically formatting the parameter. - - - - - Gets or sets an optional argument expanding on exclusion criteria. - - - The property is an optional argument that specifies additional - exclusion where the literal metadata target is not sufficiently precise. For example, - the cannot be applied within a method, - and it may be desirable to suppress a violation against a statement in the method that will - give a rule violation, but not against all statements in the method. - - - - - Gets or sets the justification for suppressing the code analysis message. - - -
-
diff --git a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.Streams.dll b/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.Streams.dll deleted file mode 100644 index 4c68abb..0000000 Binary files a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.Streams.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.Streams.xml b/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.Streams.xml deleted file mode 100644 index 4e02583..0000000 --- a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.Streams.xml +++ /dev/null @@ -1,296 +0,0 @@ - - - - K4os.Compression.LZ4.Streams - - - - - LZ4 Frame descriptor. - - - - Content length. Not always known. - - - Indicates if content checksum is provided. - - - Indicates if blocks are chained (dependent) or not (independent). - - - Indicates if block checksums are provided. - - - Dictionary id. May be null. - - - Block size. - - - - Decoder settings. - - - - Extra memory for decompression. - - - - LZ4 Decompression stream handling. - - - - Creates new instance . - Inner stream. - A function which will create appropriate decoder depending - on frame descriptor. - If true inner stream will not be closed after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of stream. Please note, this will only work if original LZ4 stream has - ContentLength field set in descriptor. Otherwise returned value will be -1. - - - - - Position within the stream. Position can be read, but cannot be set as LZ4 stream does - not have Seek capability. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 encoder settings. - - - - - Content length. It is not enforced, it can be set to any value, but it will be - written to the stream so it can be used while decoding. If you don't know the length - just leave default value. - - - - - Indicates if blocks should be chained (dependent) or not (independent). Dependent blocks - (with chaining) provide better compression ratio but are a little but slower and take - more memory. - - - - - Block size. You can use any block size, but default values for LZ4 are 64k, 256k, 1m, - and 4m. 64k is good enough for dependent blocks, but for independent blocks bigger is - better. - - - - Indicates is content checksum is provided. Not implemented yet. - - - Indicates if block checksum is provided. Not implemented yet. - - - Dictionary id. Not implemented yet. - - - Compression level. - - - Extra memory (for the process, more is usually better). - - - - LZ4 compression stream. - - - - Creates new instance of . - Inner stream. - LZ4 Descriptor. - Function which will take descriptor and return - appropriate encoder. - Indicates if stream should be left - open after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of the stream and number of bytes written so far. - - - Read-only position in the stream. Trying to set it will throw - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 frame descriptor. - - - - Content length (if available). - - - Indicates if content checksum if present. - - - Indicates if blocks are chained. - - - Indicates if block checksums are present. - - - Dictionary id (or null). - - - Block size. - - - Creates new instance of . - Content length. - Content checksum flag. - Chaining flag. - Block checksum flag. - Dictionary id. - Block size. - - - - Utility class with factory methods to create LZ4 compression and decompression streams. - - - - Created compression stream on top of inner stream. - Inner stream. - Compression settings. - Leave inner stream open after disposing. - Compression stream. - - - Created compression stream on top of inner stream. - Inner stream. - Compression level. - Extra memory used for compression. - Leave inner stream open after disposing. - Compression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Decompression settings. - Leave inner stream open after disposing. - Decompression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Extra memory used for decompression. - Leave inner stream open after disposing. - Decompression stream. - - - diff --git a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.dll b/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.dll deleted file mode 100644 index ea7a325..0000000 Binary files a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.xml b/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.xml deleted file mode 100644 index 9af6341..0000000 --- a/AUTS_AOI/bin/Debug/K4os.Compression.LZ4.xml +++ /dev/null @@ -1,794 +0,0 @@ - - - - K4os.Compression.LZ4 - - - - - Action performed by encoder using FlushAndEncode method. - - - - Nothing has happened, most likely loading 0 bytes. - - - Some bytes has been loaded into encoder. - - - Compression was not possible so bytes has been copied. - - - Compression succeeded. - - - - Interface of LZ4 decoder used by LZ4 streams. - - - - Block size. - - - Bytes already decoded and available to be read. - Always smaller than - - - - Decodes previously compressed block and caches decompressed block in decoder. - Returns number of bytes decoded. These bytes can be read with . - - Points to compressed block. - Length of compressed block. - Size of the block. Value 0 indicates default block size. - Number of decoded bytes. - - - - Inject already decompressed block and caches it in decoder. - Used with uncompressed-yet-chained blocks and pre-made dictionaries. - These bytes can be read with . - - Points to uncompressed block. - Length of uncompressed block. - Number of decoded bytes. - - - - Reads previously decoded bytes. Please note, should be - negative number, pointing to bytes before current head. - - Buffer to write to. - Offset in source buffer relatively to current head. - Please note, it should be negative value. - Number of bytes to read. - - - - Interface of LZ4 encoder used by LZ4 streams. - - - - Block size. - - - Number of bytes read for compression. - Always smaller than - - - Adds bytes to internal buffer. Increases - Source buffer. - Source buffer length. - Number of bytes topped up. If this function returns 0 it means that buffer - is full ( equals ) and - should be called to flush it. - - - - Encodes bytes in internal buffer (see: , ). - If is true then if encoded buffer is bigger than - source buffer source bytes are copied instead. In such case returned length is negative. - - Target buffer. - Target buffer length. - Indicates if copying is allowed. - Length of encoded buffer. Negative if bytes are just copied. - - - - LZ4 decoder used with independent blocks mode. Plase note, that it will fail - if input data has been compressed with chained blocks - ( and ) - - - - - - - - - - Creates new instance of block decoder. - Block size. Must be equal or greater to one used for compression. - - - - - - - - - - - - - - - - Independent block encoder. Produces larger files but uses less memory and - gives better performance. - - - - Creates new instance of - Compression level. - Block size. - - - - - - - - - LZ4 decoder handling dependent blocks. - - - Creates new instance of . - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - - - - - - - - Static class with factory methods to create LZ4 decoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Block size. - Number of extra blocks. - LZ4 decoder. - - - - Static class with factory method to create LZ4 encoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Compression level. - Block size. - Number of extra blocks. - LZ4 encoder. - - - - Base class for LZ4 encoders. Provides basic functionality shared by - , , - and encoders. Do not used directly. - - - - Creates new instance of encoder. - Needs to be true if using dependent blocks. - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - Encodes single block using appropriate algorithm. - Source buffer. - Source buffer length. - Target buffer. - Target buffer length. - Number of bytes actually written to target buffer. - - - Copies current dictionary. - Target buffer. - Dictionary length. - Dictionary length. - - - - - - - Functionality of encoders added on top of fixed interface. - - - - Tops encoder up with some data. - Encoder. - Buffer pointer, will be shifted after operation by the number of - bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset. - Length of buffer. - Number of bytes actually loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset, will be increased after operation by the number - of bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. - Length of target buffer. - if true copying bytes is allowed. - Number of bytes encoder. If bytes were copied than this value is negative. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. Will be updated after operation. - Length of target buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. Will be updated after operation. - Length of buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Source buffer length. - Target buffer (used to encode into) - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Offset within source buffer. - Source buffer length. - Target buffer (used to encode into) - Offset within target buffer. - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Offset within target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Drains decoder by reading all bytes which are ready. - Decoder. - Target buffer. - Offset within target buffer. - Offset in decoder relatively to decoder's head. - Please note, it should be negative value. - Number of bytes. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Source buffer length. - Target buffer (to drained into). - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Offset within source buffer. - Source buffer length. - Target buffer (to drained into). - Offset within target buffer. - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - - LZ4 encoder using dependent blocks with fast compression. - - - - Creates new instance of - Block size. - Number of extra blocks. - - - - - - - - - - - - - LZ4 encoder using dependent blocks with high compression. - - - - Creates new instance of - Compression level. - Block size. - Number of extra blocks. - - - - - - - - - - - - Utility class with memory related functions. - - - 1 KiB - - - 2 KiB - - - 4 KiB - - - 8 KiB - - - 16 KiB - - - 32 KiB - - - 64 KiB - - - 128 KiB - - - 256 KiB - - - 512 KiB - - - 1 MiB - - - 4 MiB - - - Empty byte array. - - - Rounds integer value up to nearest multiple of step. - A value. - A step. - Value rounded up. - - - - Copies memory block for to . - Even though it is called "copy" it actually behaves like "move" which - might be potential problem, although it shouldn't as I cannot think about - any situation when "copy" invalid behaviour (forward copy of overlapping blocks) - can be a desired. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to . - It handle "move" semantic properly handling overlapping blocks properly. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to - up to (around) . - It does not handle overlapping blocks and may copy up to 8 bytes more than expected. - - The target block address. - The source block address. - The limit (in target block). - - - Fill block of memory with zeroes. - Address. - Length. - - - Fills memory block with repeating pattern of a single byte. - Address. - A pattern. - Length. - - - - Copies memory block for to . - This is proper implementation of memcpy (with all then weird behaviour for - overlapping blocks). It is slower than "Copy" but may be required if "Copy" - causes problems. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block backwards from to . - This is needed to implement memmove It is slower than "Move" but is needed for .NET 4.5, - which does not implement Buffer.MemoryCopy. - - The target block address. - The source block address. - Length in bytes. - - - - Moves memory block for to . - It handles overlapping block properly. - - The target block address. - The source block address. - Length in bytes. - - - Copies exactly 8 bytes from source to target. - Target address. - Source address. - - - Copies exactly 16 bytes from source to target. - Target address. - Source address. - - - Copies exactly 18 bytes from source to target. - Target address. - Source address. - - - Allocated block of memory. It is NOT initialized with zeroes. - Size in bytes. - Pointer to allocated block. - - - Allocated block of memory and fills it with zeroes. - Size in bytes. - Pointer to allocated block. - - - - Free memory allocated previously with or - - - - - Reads exactly 1 byte from given address. - Address. - Byte at given address. - - - Reads exactly 2 bytes from given address. - Address. - 2 bytes at given address. - - - Reads exactly 4 bytes from given address. - Address. - 4 bytes at given address. - - - Reads exactly 8 bytes from given address. - Address. - 8 bytes at given address. - - - Writes exactly 1 byte to given address. - Address. - Value. - - - Writes exactly 2 bytes to given address. - Address. - Value. - - - Writes exactly 4 bytes to given address. - Address. - Value. - - - Writes exactly 8 bytes to given address. - Address. - Value. - - - - Skeleton for class with unmanaged resources. - Implements but also handles proper release in - case was not called. - - - - Determines if object was already disposed. - - - Throws exception is object has been disposed already. Convenience method. - Thrown if object is already disposed. - - - Method releasing unmanaged resources. - - - Method releasing managed resources. - - - - Disposed resources. - - true if dispose was explicitly called, - false if called from GC. - - - - - - Destructor. - - - - Static class exposing LZ4 block compression methods. - - - - Maximum size after compression. - Length of input buffer. - Maximum length after compression. - - - Compresses data from one buffer into another. - Input buffer. - Length of input buffer. - Output buffer. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Output buffer. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer length. - Output buffer. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Output buffer. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Compression level. - - - Fast compression. - - - High compression, level 3. - - - High compression, level 4. - - - High compression, level 5. - - - High compression, level 6. - - - High compression, level 7. - - - High compression, level 8. - - - High compression, level 9. - - - Optimal compression, level 10. - - - Optimal compression, level 11. - - - Maximum compression, level 12. - - - - Pickling support with LZ4 compression. - - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Input buffer offset. - Input buffer length. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Length of input data. - Compression level. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer length. - Output buffer. - - - diff --git a/AUTS_AOI/bin/Debug/K4os.Hash.xxHash.dll b/AUTS_AOI/bin/Debug/K4os.Hash.xxHash.dll deleted file mode 100644 index b4cb8d9..0000000 Binary files a/AUTS_AOI/bin/Debug/K4os.Hash.xxHash.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/K4os.Hash.xxHash.xml b/AUTS_AOI/bin/Debug/K4os.Hash.xxHash.xml deleted file mode 100644 index 2b84147..0000000 --- a/AUTS_AOI/bin/Debug/K4os.Hash.xxHash.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - K4os.Hash.xxHash - - - - - Adapter implementing - - - - - Creates new . - - Hash size (in bytes) - Reset function. - Update function. - Digest function. - - - - - - - - - - - - - - - - - - - Base class for both and . Do not use directly. - - - - Protected constructor to prevent instantiation. - - - - xxHash 32-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - - xxHash 64-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - diff --git a/AUTS_AOI/bin/Debug/Log/Log_20220827_142644.txt b/AUTS_AOI/bin/Debug/Log/Log_20220827_142644.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20220827_153331.txt b/AUTS_AOI/bin/Debug/Log/Log_20220827_153331.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20230308_140829.txt b/AUTS_AOI/bin/Debug/Log/Log_20230308_140829.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20230308_143047.txt b/AUTS_AOI/bin/Debug/Log/Log_20230308_143047.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20230317_140436.txt b/AUTS_AOI/bin/Debug/Log/Log_20230317_140436.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20230512_144552.txt b/AUTS_AOI/bin/Debug/Log/Log_20230512_144552.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20230512_150243.txt b/AUTS_AOI/bin/Debug/Log/Log_20230512_150243.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20230531_172039.txt b/AUTS_AOI/bin/Debug/Log/Log_20230531_172039.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20231207_154056.txt b/AUTS_AOI/bin/Debug/Log/Log_20231207_154056.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/Log/Log_20231214_092422.txt b/AUTS_AOI/bin/Debug/Log/Log_20231214_092422.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/bin/Debug/MySql.Data.dll b/AUTS_AOI/bin/Debug/MySql.Data.dll deleted file mode 100644 index eb11cd9..0000000 Binary files a/AUTS_AOI/bin/Debug/MySql.Data.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/MySql.Data.xml b/AUTS_AOI/bin/Debug/MySql.Data.xml deleted file mode 100644 index 09316cf..0000000 --- a/AUTS_AOI/bin/Debug/MySql.Data.xml +++ /dev/null @@ -1,18808 +0,0 @@ - - - - MySql.Data - - - - - The implementation of the caching_sha2_password authentication plugin. - - - - - Generates a byte array set with the password of the user in the expected format based on the - SSL settings of the current connection. - - A byte array that contains the password of the user in the expected format. - - - - Defines the stage of the authentication. - - - - - Allows connections to a user account set with the mysql_clear_password authentication plugin. - - - - - The GSSAPI mechanism. - - - - - Obtain credentials to be used to create a security context - - username - password - host - - - - Processes the challenge data. - - A byte array containing the challenge data from the server - A byte array containing the response to be sent to the server - - - - Security context already established. - - A byte array containing the challenge data from the server - A non-null byte array containing the response to be sent to the server - - - - Enables connections to a user account set with the authentication_kerberos authentication plugin. - - - - - Defines the default behavior for an authentication plugin. - - - - - Gets or sets the authentication data returned by the server. - - - - - This is a factory method that is used only internally. It creates an auth plugin based on the method type - - - - - - - - - Gets the connection option settings. - - - - - Gets the server version associated with this authentication plugin. - - - - - Gets the encoding assigned to the native driver. - - - - - Sets the authentication data required to encode, encrypt, or convert the password of the user. - - A byte array containing the authentication data provided by the server. - This method may be overriden based on the requirements by the implementing authentication plugin. - - - - Defines the behavior when checking for constraints. - - This method is intended to be overriden. - - - - Throws a that encapsulates the original exception. - - The exception to encapsulate. - - - - Defines the behavior when authentication is successful. - - This method is intended to be overriden. - - - - Defines the behavior when more data is required from the server. - - The data returned by the server. - The data to return to the server. - This method is intended to be overriden. - - - - Gets the plugin name based on the authentication plugin type defined during the creation of this object. - - - - - Gets the user name associated to the connection settings. - - The user name associated to the connection settings. - - - - Gets the encoded, encrypted, or converted password based on the authentication plugin type defined during the creation of this object. - This method is intended to be overriden. - - An object containing the encoded, encrypted, or converted password. - - - - Provides functionality to read, decode and convert PEM files to objects supported in .NET. - - - - - Converts the binary data of a PEM file to an object. - - A binary representation of the public key provided by the server. - An object containing the data found in the public key. - - - - Allows connections to a user account set with the authentication_ldap_sasl authentication plugin. - - - - - Determines if the character is a non-ASCII space. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.1.2 - - true if the character is a non-ASCII space; otherwise, false. - The character. - - - - Determines if the character is commonly mapped to nothing. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-B.1 - - true if the character is commonly mapped to nothing; otherwise, false. - The character. - - - - Determines if the character is prohibited. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.3 - - true if the character is prohibited; otherwise, false. - The string. - The character index. - - - - Prepares the user name or password string. - - The string to prepare. - The prepared string. - - - - Allows connections to a user account set with the mysql_native_password authentication plugin. - - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Base class to handle SCRAM authentication methods - - - - - Defines the state of the authentication process. - - - - - Gets the name of the method. - - - - - Parses the server's challenge token and returns the next challenge response. - - The next challenge response. - - - - Builds up the client-first message. - - An array of bytes containig the client-first message. - - - - Processes the server response from the client-first message and - builds up the client-final message. - - Response from the server. - An array of bytes containing the client-final message. - - - - Validates the server response. - - Server-final message - - - - Creates the HMAC SHA1 context. - - The HMAC context. - The secret key. - - - - Apply the HMAC keyed algorithm. - - The results of the HMAC keyed algorithm. - The key. - The string. - - - - Applies the cryptographic hash function. - - The results of the hash. - The string. - - - - Applies the exclusive-or operation to combine two octet strings. - - The alpha component. - The blue component. - - - - The SCRAM-SHA-1 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-1 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-1 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The SCRAM-SHA-256 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-256 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-256 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The implementation of the sha256_password authentication plugin. - - - - - The byte array representation of the public key provided by the server. - - - - - Applies XOR to the byte arrays provided as input. - - A byte array that contains the results of the XOR operation. - - - - - - - - - Defines the type of the security buffer. - - - - - Defines a security handle. - - - - - Describes a buffer allocated by a transport to pass to a security package. - - - - - Specifies the size, in bytes, of the buffer. - - - - - Bit flags that indicate the type of the buffer. - - - - - Pointer to a buffer. - - - - - Hold a numeric value used in defining other data types. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Holds a pointer used to define a security handle. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Indicates the sizes of important structures used in the message support functions. - - - - - Specifies the maximum size of the security token used in the authentication changes. - - - - - Specifies the maximum size of the signature created by the MakeSignature function. - This member must be zero if integrity services are not requested or available. - - - - - Specifies the preferred integral size of the messages. - - - - - Size of the security trailer to be appended to messages. - This member should be zero if the relevant services are not requested or available. - - - - - Allows importing large amounts of data into a database with bulk loading. - - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the field terminator. - - The field terminator. - - - - Gets or sets the line terminator. - - The line terminator. - - - - Gets or sets the name of the table. - - The name of the table. - - - - Gets or sets the character set. - - The character set. - - - - Gets or sets the name of the file. - - The name of the file. - - - - Gets or sets the timeout. - - The timeout. - - - - Gets or sets a value indicating whether the file name that is to be loaded - is local to the client or not. The default value is false. - - true if local; otherwise, false. - - - - Gets or sets the number of lines to skip. - - The number of lines to skip. - - - - Gets or sets the line prefix. - - The line prefix. - - - - Gets or sets the field quotation character. - - The field quotation character. - - - - Gets or sets a value indicating whether [field quotation optional]. - - - true if [field quotation optional]; otherwise, false. - - - - - Gets or sets the escape character. - - The escape character. - - - - Gets or sets the conflict option. - - The conflict option. - - - - Gets or sets the priority. - - The priority. - - - - Gets the columns. - - The columns. - - - - Gets the expressions. - - The expressions. - - - - Executes the load operation. - - The number of rows inserted. - - - - Asynchronous version of the load operation. - - The number of rows inserted. - - - - Executes the load operation asynchronously while the cancellation isn't requested. - - The cancellation token. - The number of rows inserted. - - - - Represents the priority set for bulk loading operations. - - - - - This is the default and indicates normal priority - - - - - Low priority will cause the load operation to wait until all readers of the table - have finished. This only affects storage engines that use only table-level locking - such as MyISAM, Memory, and Merge. - - - - - Concurrent priority is only relevant for MyISAM tables and signals that if the table - has no free blocks in the middle that other readers can retrieve data from the table - while the load operation is happening. - - - - - Represents the behavior when conflicts arise during bulk loading operations. - - - - - This is the default and indicates normal operation. In the event of a LOCAL load, this - is the same as ignore. When the data file is on the server, then a key conflict will - cause an error to be thrown and the rest of the data file ignored. - - - - - Replace column values when a key conflict occurs. - - - - - Ignore any rows where the primary key conflicts. - - - - - Summary description for CharSetMap. - - - - - Returns the text encoding for a given MySQL character set name - - Version of the connection requesting the encoding - Name of the character set to get the encoding for - Encoding object for the given character set name - - - - Initializes the mapping. - - - - - Represents a character set object. - - - - Represents a SQL statement to execute against a MySQL database. This class cannot be inherited. - The object includes the following methods for executing commands at a MySQL database: - - - Item - Description - - - - - - Executes commands that return rows. - - - - - - Executes commands such as SQL INSERT, DELETE, and UPDATE statements. - - - - - - Retrieves a single value (for example, an aggregate value) from a database. - - - - You can reset the property and reuse the - object. However, you must close the object before you can execute a new or previous command. - - If an exception of type is generated by the method executing , - the instance remains open. It is the responsibility of the programmer to close the connection. - - - Using the '@' symbol for paramters is now the preferred approach although the old pattern of using - '?' is still supported. Please be aware that using '@' can cause conflicts when user variables - are also used. For more information, see the documentation on the AllowUserVariables connection string option. - - - The following example creates an instance each of and . - The object opens a connection and then is set as the - property for the . The example then calls the method, - passes to it a connection string and a query string that consists of a SQL INSERT statement, and closes the connection. - - Public Sub InsertRow(myConnectionString As String) - " If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - - Initializes a new instance of the MySqlCommand class. - - - The following example creates a MySqlCommand and sets some of its properties. - - - This example shows how to use one of the overloaded - versions of the MySqlCommand constructor. For other examples that might be available, - see the individual overload topics. - - - - Public Sub CreateMySqlCommand() - Dim myConnection As New MySqlConnection _ - ("Persist Security Info=False;database=test;server=myServer") - myConnection.Open() - Dim myTrans As MySqlTransaction = myConnection.BeginTransaction() - Dim mySelectQuery As String = "SELECT * FROM MyTable" - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection, myTrans) - myCommand.CommandTimeout = 20 - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection myConnection = new MySqlConnection("Persist Security Info=False; - database=test;server=myServer"); - myConnection.Open(); - MySqlTransaction myTrans = myConnection.BeginTransaction(); - string mySelectQuery = "SELECT * FROM myTable"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection,myTrans); - myCommand.CommandTimeout = 20; - } - - - public: - void CreateMySqlCommand() - { - MySqlConnection* myConnection = new MySqlConnection(S"Persist Security Info=False; - database=test;server=myServer"); - myConnection->Open(); - MySqlTransaction* myTrans = myConnection->BeginTransaction(); - String* mySelectQuery = S"SELECT * FROM myTable"; - MySqlCommand* myCommand = new MySqlCommand(mySelectQuery, myConnection, myTrans); - myCommand->CommandTimeout = 20; - }; - - - - Initializes a new instance of the MySqlCommand class. - - The base constructor initializes all fields to their default values. The - following table shows initial property values for an instance of . - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class with the text of the query. - The text of the query. - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query and a . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query, a , and the - . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - The in which the executes. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - conn.Open(); - Dim txn as MySqlTransaction = conn.BeginTransaction() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn, txn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - conn.Open(); - MySqlTransaction txn = conn.BeginTransaction(); - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn, txn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the last inserted id. - - - - - - Gets or sets the SQL statement to execute at the data source. - - The SQL statement or stored procedure to execute. The default is an empty string. - - - When the property is set to , - the property should be set to the name of the stored procedure. - The user may be required to use escape character syntax if the stored procedure name - contains any special characters. The command executes this stored procedure when - you call one of the execute methods. In Connector/NET 8.0 (and previous versions), having both a stored function - and stored procedure with the same name in the same database is not supported. It is - suggested that you provide unqiue names for your stored routines. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandText = "SELECT * FROM Mytable ORDER BY id" - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandText = "SELECT * FROM mytable ORDER BY id"; - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets or sets the wait time before terminating the attempt to execute a command - and generating an error. - - The time (in seconds) to wait for the command to execute. The default is 30 - seconds. - - CommandTimeout is dependent on the ability of MySQL to cancel an executing query. - Because of this, CommandTimeout is only supported when connected to MySQL - version 5.0.0 or higher. - - - - - Gets or sets a value indicating how the property is to be interpreted. - - One of the values. - The default is . - - - When you set the property to , you - should set the property to the name of the stored - procedure. The command executes this stored procedure when you call one of the - execute methods. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets a boolean value that indicates whether the Prepared method has been called. - - - - - - Gets or sets the object used by this instance of the - . - - The connection to a data source. The default value is a null reference - (Nothing in Visual Basic). - - - If you set Connection while a transaction is in progress and the - property is not null, an - is generated. If the Transaction property is not null and the transaction - has already been committed or rolled back, Transaction is set to - null. - - - The following example creates a and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim mySelectQuery As String = "SELECT * FROM mytable ORDER BY id" - Dim myConnectString As String = "Persist Security Info=False;database=test;server=myServer" - Dim myCommand As New MySqlCommand(mySelectQuery) - myCommand.Connection = New MySqlConnection(myConnectString) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string mySelectQuery = "SELECT * FROM mytable ORDER BY id"; - string myConnectString = "Persist Security Info=False;database=test;server=myServer"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery); - myCommand.Connection = new MySqlConnection(myConnectString); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the object. - - The parameters of the SQL statement or stored procedure. The default is - an empty collection. - - Connector/NET does not support unnamed parameters. Every parameter added to the collection must - have an associated name. - - Parameters can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and displays its parameters. - To accomplish this, the method is passed a , a query string - that is a SQL SELECT statement, and an array of objects. - - Public Sub CreateMySqlCommand(myConnection As MySqlConnection, _ - mySelectQuery As String, myParamArray() As MySqlParameter) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age" - myCommand.UpdatedRowSource = UpdateRowSource.Both - myCommand.Parameters.Add(myParamArray) - Dim j As Integer - For j = 0 To myCommand.Parameters.Count - 1 - myCommand.Parameters.Add(myParamArray(j)) - Next j - Dim myMessage As String = "" - Dim i As Integer - For i = 0 To myCommand.Parameters.Count - 1 - myMessage += myCommand.Parameters(i).ToString() & ControlChars.Cr - Next i - Console.WriteLine(myMessage) - End Sub - - - public void CreateMySqlCommand(MySqlConnection myConnection, string mySelectQuery, - MySqlParameter[] myParamArray) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age"; - myCommand.Parameters.Add(myParamArray); - for (int j=0; j<myParamArray.Length; j++) - { - myCommand.Parameters.Add(myParamArray[j]) ; - } - string myMessage = ""; - for (int i = 0; i < myCommand.Parameters.Count; i++) - { - myMessage += myCommand.Parameters[i].ToString() + "\n"; - } - MessageBox.Show(myMessage); - } - - - - - - Gets the object. - - The query attributes defined for the statement. The default is an empty collection. - - Connector/NET does not support unnamed query attributes. Every query attribute added to the collection must - have an associated name. - - Query Attributes can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and also a couple of - to be added later to the . Then, it prints out the values of . - - Public Sub CreateMySqlCommandWithQueryAttributes(ByVal myConnection As MySqlConnection) - Dim myCommand As MySqlCommand = New MySqlCommand() - myCommand.Connection = myConnection - Dim mySqlAttribute As MySqlAttribute = New MySqlAttribute("qa1", "qaValue") - Dim mySqlAttribute2 As MySqlAttribute = New MySqlAttribute("qa2", 2) - myCommand.Attributes.SetAttribute(mySqlAttribute) - myCommand.Attributes.SetAttribute(mySqlAttribute2) - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," & - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2" - - Using reader = myCommand.ExecuteReader() - While reader.Read() - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}") - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}") - End While - End Using - End Sub - - - public void CreateMySqlCommandWithQueryAttributes(MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = myConnection; - - MySqlAttribute mySqlAttribute = new MySqlAttribute("qa1", "qaValue"); - MySqlAttribute mySqlAttribute2 = new MySqlAttribute("qa2", 2); - - myCommand.Attributes.SetAttribute(mySqlAttribute); - myCommand.Attributes.SetAttribute(mySqlAttribute2); - - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," + - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2"; - - using (var reader = myCommand.ExecuteReader()) - { - while (reader.Read()) - { - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}"); - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}"); - } - } - } - - - - - - Gets or sets the instance of within which executes. - - The . The default value is a null reference (Nothing in Visual Basic). - - You cannot set the Transaction property if it is already set to a - specific value, and the command is in the process of executing. If you set the - transaction to use a object that is not connected - to the same as the object, - an exception will be thrown the next time you attempt to execute a statement. - - - - - Gets or sets a boolean value that indicates whether caching is enabled. - - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - - - - Gets or sets how command results are applied to the DataRow when used by the - Update method of the DbDataAdapter. - - - - - Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control. - - - - - Attempts to cancel the execution of a currently active command - - - Cancelling a currently active query only works with MySQL versions 5.0.0 and higher. - - - - - Creates a new instance of a object. - - - This method is a strongly-typed version of . - - A object. - - - - - Check the connection to make sure - - it is open - - it is not currently being used by a reader - - and we have the right version of MySQL for the requested command type - - - - - Executes a SQL statement against the connection and returns the number of rows affected. - Number of rows affected - You can use ExecuteNonQuery to perform any type of database operation, - however any resultsets returned will not be available. Any output parameters - used in calling a stored procedure will be populated with data and can be - retrieved after execution is complete. - For UPDATE, INSERT, and DELETE statements, the return value is the number - of rows affected by the command. For all other types of statements, the return - value is -1. - - The following example creates a MySqlCommand and then - executes it using ExecuteNonQuery. The example is passed a string that is a - SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to - connect to the data source. - - Public Sub CreateMySqlCommand(myExecuteQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myExecuteQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteNonQuery() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteNonQuery(); - myConnection.Close(); - } - - - - - - Reset reader to null, to avoid "There is already an open data reader" - on the next ExecuteReader(). Used in error handling scenarios. - - - - - Reset SQL_SELECT_LIMIT that could have been modified by CommandBehavior. - - - - - Sends the value to - and builds a object. - - A object. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of MySqlDataReader is called. - - - The following example creates an instance of , then executes it by - passing a string that is a SQL SELECT statement, and a string to use to connect to the - data source. - - Public Sub CreateMySqlDataReader(mySelectQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - Try - While myReader.Read() - Console.WriteLine(myReader.GetString(0)) - End While - Finally - myReader.Close - myConnection.Close - End Try - End Sub - - - public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myConnection.Open(); - MMySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - try - { - while(myReader.Read()) - { - Console.WriteLine(myReader.GetString(0)); - } - } - finally - { - myReader.Close(); - myConnection.Close(); - } - } - - - - - - Sends the to the Connection, - and builds a using one of the values. - - One of the values. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - The supports a special mode that enables large binary - values to be read efficiently. For more information, see the SequentialAccess - setting for . - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of the MySqlDataReader is called. - If the MySqlDataReader object is created with CommandBehavior set to - CloseConnection, closing the MySqlDataReader instance closes the connection - automatically. - - - When calling ExecuteReader with the SingleRow behavior, you should be aware that using a limit - clause in your SQL will cause all rows (up to the limit given) to be retrieved by the client. The - method will still return false after the first row but pulling all rows of data - into the client will have a performance impact. If the limit clause is not necessary, it should - be avoided. - - - A object. - - - - - Executes the query, and returns the first column of the first row in the - result set returned by the query. Extra columns or rows are ignored. - - The first column of the first row in the result set, or a null reference if the - result set is empty - - - Use the ExecuteScalar method to retrieve a single value (for example, - an aggregate value) from a database. This requires less code than using the - method, and then performing the operations necessary - to generate the single value using the data returned by a - - - The following example creates a and then - executes it using ExecuteScalar. The example is passed a string that is a - SQL statement that returns an aggregate result, and a string to use to - connect to the data source. - - - Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myScalarQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteScalar() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myScalarQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteScalar(); - myConnection.Close(); - } - - - public: - void CreateMySqlCommand(String* myScalarQuery, MySqlConnection* myConnection) - { - MySqlCommand* myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand->Connection->Open(); - myCommand->ExecuteScalar(); - myConnection->Close(); - } - - - - - - - - - - Creates a prepared version of the command on an instance of MySQL Server. - - - Prepared statements are only supported on MySQL version 4.1 and higher. Calling - prepare while connected to earlier versions of MySQL will succeed but will execute - the statement in the same way as unprepared. - - - The following example demonstrates the use of the Prepare method. - - public sub PrepareExample() - Dim cmd as New MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection) - cmd.Parameters.Add( "@val", 10 ) - cmd.Prepare() - cmd.ExecuteNonQuery() - - cmd.Parameters(0).Value = 20 - cmd.ExecuteNonQuery() - end sub - - - private void PrepareExample() - { - MySqlCommand cmd = new MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection); - cmd.Parameters.Add( "@val", 10 ); - cmd.Prepare(); - cmd.ExecuteNonQuery(); - - cmd.Parameters[0].Value = 20; - cmd.ExecuteNonQuery(); - } - - - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this , and retrieves one or more - result sets from the server. - - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this using one of the - CommandBehavior values. - - One of the values, indicating - options for statement execution and data retrieval. - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Finishes asynchronous execution of a SQL statement, returning the requested - . - - The returned by the call to - . - A MySqlDataReader object that can be used to retrieve the requested rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - - An delegate that is invoked when the command's - execution has completed. Pass a null reference (Nothing in Visual Basic) - to indicate that no callback is required. - A user-defined state object that is passed to the - callback procedure. Retrieve this object from within the callback procedure - using the property. - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Finishes asynchronous execution of a SQL statement. - - The returned by the call - to . - - - - - Verifies if a query is valid even if it has not spaces or is a stored procedure call - - Query to validate - If it is necessary to add call statement - - - - Creates a clone of this object. CommandText, Connection, and Transaction properties - are included as well as the entire parameter list. - - The cloned object. - - - - Summary description for API. - - - - - Summary description for CompressedStream. - - - - - Represents an open connection to a MySQL Server database. This class cannot be inherited. - - - A MySqlConnection object represents a session to a MySQL Server - data source. When you create an instance of MySqlConnection, all - properties are set to their initial values. For a list of these values, see the - MySqlConnection constructor. - - - - If the MySqlConnection goes out of scope, it is not closed. Therefore, - you must explicitly close the connection by calling - or . - - - The following example creates a and - a MySqlConnection. The MySqlConnection is opened and set as the - for the MySqlCommand. The example then calls - , and closes the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - - Public Sub InsertRow(myConnectionString As String) - ' If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - Occurs when MySQL returns warnings as a result of executing a command or query. - - - - - Initializes a new instance of the class. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class when given a string containing the connection string. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - The connection properties used to open the MySQL database. - - - - - Determines whether the connection is a clone of other connection. - - - - - Returns the id of the server thread this connection is executing on - - - - - Gets the name of the MySQL server to which to connect. - - - - - Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error. - The value set is less than 0. - A value of 0 indicates no limit, and should be avoided in a - because an attempt to connect - will wait indefinitely. - - The following example creates a MySqlConnection - and sets some of its properties in the connection string. - - Public Sub CreateSqlConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30" - myConnection.Open() - End Sub - - - public void CreateSqlConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30"; - myConnection.Open(); - } - - - - - Gets the name of the current database or the database to be used after a connection is opened.The name of the current database or the name of the database to be used after a connection is opened. The default value is an empty string. - - The Database property does not update dynamically. - If you change the current database using a SQL statement, then this property - may reflect the wrong value. If you change the current database using the - method, this property is updated to reflect the new database. - - - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Indicates if this connection should use compression when communicating with the server. - - - - Gets the current state of the connection. - A bitwise combination of the values. The default is Closed. - - The allowed state changes are: - - - From Closed to Open, using the Open method of the connection object. - - - From Open to Closed, using either the Close method or the Dispose method of the connection object. - - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - Gets a string containing the version of the MySQL server to which the client is connected.The version of the instance of MySQL.The connection is closed. - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Gets or sets the string used to connect to a MySQL Server database. - - - The ConnectionString returned may not be exactly like what was originally - set but will be indentical in terms of keyword/value pairs. Security information - will not be included unless the Persist Security Info value is set to true. - - - You can use the ConnectionString property to connect to a database. - The following example illustrates a typical connection string. - - "Persist Security Info=False;database=MyDB;server=MySqlServer;user id=myUser;Password=myPass" - - The ConnectionString property can be set only when the connection is - closed. Many of the connection string values have corresponding read-only - properties. When the connection string is set, all of these properties are - updated, except when an error is detected. In this case, none of the properties - are updated. properties return only those settings contained in the - ConnectionString. - - - To connect to a local machine, specify "localhost" for the server. If you do not - specify a server, localhost is assumed. - - - Resetting the ConnectionString on a closed connection resets all - connection string values (and related properties) including the password. For - example, if you set a connection string that includes "Database= MyDb", and - then reset the connection string to "Data Source=myserver;User Id=myUser;Password=myPass", - the property is no longer set to MyDb. - - - The connection string is parsed immediately after being set. If errors in - syntax are found when parsing, a runtime exception, such as , - is generated. Other errors can be found only when an attempt is made to open the - connection. - - - The basic format of a connection string consists of a series of keyword/value - pairs separated by semicolons. The equal sign (=) connects each keyword and its - value. To include values that contain a semicolon, single-quote character, or - double-quote character, the value must be enclosed in double quotes. If the - value contains both a semicolon and a double-quote character, the value can be - enclosed in single quotes. The single quote is also useful if the value begins - with a double-quote character. Conversely, the double quote can be used if the - value begins with a single quote. If the value contains both single-quote and - double-quote characters, the quote character used to enclose the value must be - doubled each time it occurs within the value. - - - To include preceding or trailing spaces in the string value, the value must - be enclosed in either single quotes or double quotes. Any leading or trailing - spaces around integer, Boolean, or enumerated values are ignored, even if - enclosed in quotes. However, spaces within a string literal keyword or value are - preserved. Using .NET Framework version 1.1, single or double quotes may be used - within a connection string without using delimiters (for example, Data Source= - my'Server or Data Source= my"Server), unless a quote character is the first or - last character in the value. - - - To include an equal sign (=) in a keyword or value, it must be preceded by - another equal sign. For example, in the hypothetical connection string - - "key==word=value" - - the keyword is "key=word" and the value is "value". - - If a specific keyword in a keyword= value pair occurs multiple times in a - connection string, the last occurrence listed is used in the value set. - - Keywords are not case sensitive. - - The following table lists the valid names for keyword values within the - ConnectionString. - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
- Connect Timeout -or- Connection Timeout - 15 - The length of time (in seconds) to wait for a connection to the server before - terminating the attempt and generating an error. -
- Host -or- Server -or- Data Source -or- - DataSource -or- Address -or- Addr -or- - Network Address - localhost - - The name or network address of the instance of MySQL to which to connect. Multiple hosts can be - specified separated by &. This can be useful where multiple MySQL servers are configured for replication - and you are not concerned about the precise server you are connecting to. No attempt is made by the provider to - synchronize writes to the database so care should be taken when using this option. - - - In Unix environment with Mono, this can be a fully qualified path to MySQL socket filename. With this configuration, the Unix socket will be used instead of TCP/IP socket. - Currently only a single socket name can be given so accessing MySQL in a replicated environment using Unix sockets is not currently supported. - -
Port3306 - The port MySQL is using to listen for connections. This value is ignored if the connection protocol - is anything but socket. -
Protocolsocket - Specifies the type of connection to make to the server.Values can be: - socket or tcp for a socket connection
- pipe for a named pipe connection
- unix for a Unix socket connection
- memory to use MySQL shared memory -
- CharSet -or Character Set - - - Specifies the character set that should be used to encode all queries sent to the server. - Resultsets are still returned in the character set of the data returned. -
LoggingfalseWhen true, various pieces of information is output to any configured TraceListeners.
Allow Batchtrue - When true, multiple SQL statements can be sent with one command execution.

- -Note-
- Starting with MySQL 4.1.1, batch statements should be separated by the server-defined seperator character.
- Commands sent to earlier versions of MySQL should be seperated with ';'. -
Encryptfalse - When true, SSL/TLS encryption is used for all data sent between the - client and server if the server has a certificate installed. Recognized values - are true, false, yes, and no. -
- Initial Catalog -or- Database - mysqlThe name of the database to use intially
- Password -or- pwd - - The password for the MySQL account being used.
Persist Security Infofalse - When set to false or no (strongly recommended), security-sensitive - information, such as the password, is not returned as part of the connection if - the connection is open or has ever been in an open state. Resetting the - connection string resets all connection string values including the password. - Recognized values are true, false, yes, and no. -
- User Id -or- Username -or- Uid -or- User name - - The MySQL login account being used.
Shared Memory NameMYSQLThe name of the shared memory object to use for communication if the connection protocol is set to memory.
Allow Zero Datetimefalse - True to have MySqlDataReader.GetValue() return a MySqlDateTime for date or datetime columns that have illegal values. - False will cause a DateTime object to be returned for legal values and an exception will be thrown for illegal values. -
Convert Zero Datetimefalse - True to have MySqlDataReader.GetValue() and MySqlDataReader.GetDateTime() - return DateTime.MinValue for date or datetime columns that have illegal values. -
- Pipe Name -or- Pipe - mysql - When set to the name of a named pipe, the MySqlConnection will attempt to connect to MySQL - on that named pipe.

This settings only applies to the Windows platform. -
- Use Performance Monitor -or- UsePerformanceMonitor - false - Posts performance data that can be tracked using perfmon -
- Procedure Cache Size - 25 - How many stored procedure definitions can be held in the cache -
Use Procedure Bodiestrue - Instructs the provider to attempt to call the procedure without first resolving the metadata. This - is useful in situations where the calling user does not have access to the mysql.proc table. To - use this mode, the parameters for the procedure must be added to the command in the same order - as they appear in the procedure definition and their types must be explicitly set. -
Auto Enlisttrue - Indicates whether the connection should automatically enlist in the current transaction, - if there is one. -
Respect Binary Flagstrue - Indicates whether the connection should respect all binary flags sent to the client - as part of column metadata. False will cause the connector to behave like - Connector/NET 5.0 and earlier. -
BlobAsUTF8IncludePatternnull - Pattern that should be used to indicate which blob columns should be treated as UTF-8. -
BlobAsUTF8ExcludePatternnull - Pattern that should be used to indicate which blob columns should not be treated as UTF-8. -
Default Command Timeout30 - The default timeout that new MySqlCommand objects will use unless changed. -
Allow User Variablesfalse - Should the provider expect user variables in the SQL. -
Interactive -or- Interactive Sessionfalse - Should this session be considered interactive? -
Functions Return Stringfalse - Set this option to true to force the return value of SQL functions to be string. -
Use Affected Rowsfalse - Set this option to true to cause the affected rows reported to reflect only the - rows that are actually changed. By default, the number of rows that are matched - is returned. -
-
- - The following table lists the valid names for connection pooling values within - the ConnectionString. For more information about connection pooling, see - Connection Pooling for the MySql Data Provider. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
Connection Lifetime0 - When a connection is returned to the pool, its creation time is compared with - the current time, and the connection is destroyed if that time span (in seconds) - exceeds the value specified by Connection Lifetime. This is useful in - clustered configurations to force load balancing between a running server and a - server just brought online. - - A value of zero (0) causes pooled connections to have the maximum connection - timeout. - -
Max Pool Size100The maximum number of connections allowed in the pool.
Min Pool Size0The minimum number of connections allowed in the pool.
Poolingtrue - When true, the MySqlConnection object is drawn from the appropriate - pool, or if necessary, is created and added to the appropriate pool. Recognized - values are true, false, yes, and no. -
Connection Resetfalse - Specifies whether the database connection should be reset when being - drawn from the pool. Leaving this as false will yeild much faster - connection opens but the user should understand the side effects - of doing this such as temporary tables and user variables from the previous - session not being cleared out. -
Cache Server Propertiesfalse - Specifies whether the server variables are cached between pooled connections. - On systems where the variables change infrequently and there are lots of - connection attempts, this can speed up things dramatically. -
-
- - When setting keyword or connection pooling values that require a Boolean - value, you can use 'yes' instead of 'true', and 'no' instead of 'false'. - - - Note The MySql Data Provider uses the native socket protocol to - communicate with MySQL. Therefore, it does not support the use of an ODBC data source name (DSN) when - connecting to MySQL because it does not add an ODBC layer. - - - CAUTION In this release, the application should use caution when constructing a - connection string based on user input (for example when retrieving user ID and password information from a - dialog box, and appending it to the connection string). The application should - ensure that a user cannot embed extra connection string parameters in these - values (for example, entering a password as "validpassword;database=somedb" in - an attempt to attach to a different database). - -
- The following example creates a and sets some of its properties - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - - The following example creates a in Unix environment with Mono installed. MySQL socket filename used in this example is "/var/lib/mysql/mysql.sock". The actual filename depends on your MySQL configuration. - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - -
- - - Gets a boolean value that indicates whether the password associated to the connection is expired. - - - - Begins a database transaction.An object representing the new transaction.Parallel transactions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. Also - note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Begins a database transaction with the specified isolation level.The isolation level under which the transaction should run. The scope of the transaction. An object representing the new transaction.Parallel exceptions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. - Also note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Changes the current database for an open MySqlConnection.The name of the database to use. - - The value supplied in the database parameter must be a valid database - name. The database parameter cannot contain a null value, an empty - string, or a string with only blank characters. - - - - When you are using connection pooling against MySQL, and you close - the connection, it is returned to the connection pool. The next time the - connection is retrieved from the pool, the reset connection request - executes before the user performs any operations. - - The database name is not valid.The connection is not open.Cannot change the database. - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Pings the server. - - true if the ping was successful; otherwise, false. - - - Opens a database connection with the property settings specified by the ConnectionString.Cannot open a connection without specifying a data source or server.A connection-level error occurred while opening the connection. - - The draws an open connection from the connection pool if one is available. - Otherwise, it establishes a new connection to an instance of MySQL. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Creates and returns a object associated with the . - - A object. - - - - Closes the connection to the database. This is the preferred method of closing any open connection. - - The Close method rolls back any pending transactions. It then releases - the connection to the connection pool, or closes the connection if connection - pooling is disabled. - - - An application can call Close more than one time. No exception is - generated. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Cancels the query after the specified time interval. - - The length of time (in seconds) to wait for the cancelation of the command execution. - - - - Sets query timeout. If timeout has been set prior and not - yet cleared ClearCommandTimeout(), it has no effect. - - timeout in seconds - true if - - - - Clears query timeout, allowing next SetCommandTimeout() to succeed. - - - - - Gets a schema collection based on the provided restriction values. - - The name of the collection. - The values to restrict. - A schema collection object. - - - Empties the connection pool associated with the specified connection. - The associated with the pool to be cleared. - - - ClearPool clears the connection pool that is associated with the connection. - If additional connections associated with connection are in use at the time of the call, - they are marked appropriately and are discarded (instead of being returned to the pool) - when Close is called on them. - - - - - Clears all connection pools. - - ClearAllPools essentially performs a on all current connection - pools. - - - - - - Initiates the asynchronous execution of a transaction. - - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - The cancellation token. - - - - - Asynchronous version of the Close method. - - - - - Asynchronous version of the Close method. - - The cancellation token. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - The cancellation token. - - - - Asynchronous version of the ClearAllPools method. - - - - - Asynchronous version of the ClearAllPools method. - - The cancellation token. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - A collection of schema objects. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - The cancellation token. - A collection of schema objects. - - - - Returns schema information for the data source of this . - - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name. - - Specifies the name of the schema to return. - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name and the specified string array - for the restriction values. - - Specifies the name of the schema to return. - Specifies a set of restriction values for the requested schema. - A that contains schema information. - - - - Enlists in the specified transaction. - - - A reference to an existing in which to enlist. - - - - - Creates a new MySqlConnection object with the exact same ConnectionString value - - A cloned MySqlConnection object - - - - Represents the method that will handle the event of a - . - - - - - Provides data for the InfoMessage event. This class cannot be inherited. - - - - - Gets or sets an array of objects set with the errors found. - - - - - IDisposable wrapper around SetCommandTimeout and ClearCommandTimeout functionality. - - - - - Summary description for Crypt. - - - - - Simple XOR scramble - - Source array - Index inside source array - Destination array - Index inside destination array - Password used to xor the bits - Number of bytes to scramble - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Encrypts a password using the MySql encryption scheme - - The password to encrypt - The encryption seed the server gave us - Indicates if we should use the old or new encryption scheme - - - - - Hashes a password using the algorithm from Monty's code. - The first element in the return is the result of the "old" hash. - The second element is the rest of the "new" hash. - - Password to be hashed - Two element array containing the hashed values - - - - Provides a means of reading a forward-only stream of rows from a MySQL database. This class cannot be inherited. - - - To create a MySQLDataReader, you must call the - method of the object, rather than directly using a constructor. - - - While the MySqlDataReader is in use, the associated - is busy serving the MySqlDataReader, and no other operations can be performed - on the MySqlConnection other than closing it. This is the case until the - method of the MySqlDataReader is called. - - - and - are the only properties that you can call after the MySqlDataReader is - closed. Though the RecordsAffected property may be accessed at any time - while the MySqlDataReader exists, always call Close before returning - the value of RecordsAffected to ensure an accurate return value. - - - For optimal performance, MySqlDataReader avoids creating - unnecessary objects or making unnecessary copies of data. As a result, multiple calls - to methods such as return a reference to the - same object. Use caution if you are modifying the underlying value of the objects - returned by methods such as GetValue. - - - The following example creates a , - a , and a MySqlDataReader. The example reads through - the data, writing it out to the console. Finally, the example closes the MySqlDataReader, then the - MySqlConnection. - - Public Sub ReadMyData(myConnString As String) - Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders" - Dim myConnection As New MySqlConnection(myConnString) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - ' Always call Read before accessing data. - While myReader.Read() - Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1))) - End While - ' always call Close when done reading. - myReader.Close() - ' Close the connection when done with it. - myConnection.Close() - End Sub 'ReadMyData - - - public void ReadMyData(string myConnString) { - string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; - MySqlConnection myConnection = new MySqlConnection(myConnString); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - myConnection.Open(); - MySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - // Always call Read before accessing data. - while (myReader.Read()) { - Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1)); - } - // always call Close when done reading. - myReader.Close(); - // Close the connection when done with it. - myConnection.Close(); - } - - - - - - Gets the number of columns in the current row. - - - - - Gets a value indicating whether the MySqlDataReader contains one or more rows. - - - - - Gets a value indicating whether the data reader is closed. - - - - - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - - - - - Overloaded. Gets the value of a column in its native format. - In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets the value of a column in its native format. - [C#] In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets a value indicating the depth of nesting for the current row. This method is not - supported currently and always returns 0. - - - - - Closes the MySqlDataReader object. - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset. - - The zero-based column ordinal. - The index within the field from which to begin the read operation. - The buffer into which to read the stream of bytes. - The index for buffer to begin the read operation. - The maximum length to copy into the buffer. - The actual number of bytes read. - - - - - Gets the value of the specified column as a single character. - - - - - - - Gets the value of the specified column as a single character. - - - - - - - Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset. - - - - - - - - - - - Gets the name of the source data type. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinalThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the Type that is the data type of the object. - - - - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a globally-unique identifier(GUID). - - The name of the column. - - - - - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; threfore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the name of the specified column. - - - - - - - Gets the column ordinal, given the name of the column. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column in its native format. - - - - - - - Gets all attribute columns in the collection for the current row. - - - - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets a value indicating whether the column contains non-existent or missing values. - - - - - - - Advances the data reader to the next result, when reading the results of batch SQL statements. - - - - - - Advances the MySqlDataReader to the next record. - - - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Returns an that iterates through the . - - - - - Returns a DataTable that describes the column metadata of the MySqlDataReader. - - - - - - Summary description for BaseDriver. - - - - - For pooled connections, time when the driver was - put into idle queue - - - - - Loads the properties from the connected server into a hashtable - - - - - - - Loads all the current character set names and ids for this server - into the charSets hashtable - - - - - The exception that is thrown when MySQL returns an error. This class cannot be inherited. - - - - This class is created whenever the MySql Data Provider encounters an error generated from the server. - - - Any open connections are not automatically closed when an exception is thrown. If - the client application determines that the exception is fatal, it should close any open - objects or objects. - - - The following example generates a MySqlException due to a missing server, - and then displays the exception. - - - Public Sub ShowException() - Dim mySelectQuery As String = "SELECT column1 FROM table1" - Dim myConnection As New MySqlConnection ("Data Source=localhost;Database=Sample;") - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - - Try - myCommand.Connection.Open() - Catch e As MySqlException - MessageBox.Show( e.Message ) - End Try - End Sub - - - public void ShowException() - { - string mySelectQuery = "SELECT column1 FROM table1"; - MySqlConnection myConnection = - new MySqlConnection("Data Source=localhost;Database=Sample;"); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - - try - { - myCommand.Connection.Open(); - } - catch (MySqlException e) - { - MessageBox.Show( e.Message ); - } - } - - - - - - Gets a number that identifies the type of error. - - - - - True if this exception was fatal and cause the closing of the connection, false otherwise. - - - - - Gets the SQL state. - - - - - Gets an integer that representes the MySQL error code. - - - - - Summary description for Field. - - - - - We are adding a custom installer class to our assembly so our installer - can make proper changes to the machine.config file. - - - - - We override Install so we can add our assembly to the proper - machine.config files. - - - - - - We override Uninstall so we can remove out assembly from the - machine.config files. - - - - - - Automatically generates single-table commands used to reconcile changes made to a DataSet with the associated MySQL database. This class cannot be inherited. - - - The does not automatically generate the SQL statements required to - reconcile changes made to a DataSet with the associated instance of MySQL. - However, you can create a MySqlCommandBuilder object to automatically generate SQL statements for - single-table updates if you set the SelectCommand property - of the MySqlDataAdapter. Then, any additional SQL statements that you do not set are generated by the - MySqlCommandBuilder. - - - - The MySqlCommandBuilder registers itself as a listener for RowUpdating - events whenever you set the property. You can only associate one - MySqlDataAdapter or MySqlCommandBuilder object with each other at one time. - - - - To generate INSERT, UPDATE, or DELETE statements, the MySqlCommandBuilder uses the - SelectCommand property to retrieve a required set of metadata automatically. If you change - the SelectCommand after the metadata has is retrieved (for example, after the first update), you - should call the method to update the metadata. - - - - The SelectCommand must also return at least one primary key or unique - column. If none are present, an InvalidOperation exception is generated, - and the commands are not generated. - - - - The MySqlCommandBuilder also uses the Connection, - CommandTimeout, and Transaction - properties referenced by the SelectCommand. The user should call - RefreshSchema if any of these properties are modified, or if the - SelectCommand itself is replaced. Otherwise the InsertCommand, - UpdateCommand, and - DeleteCommand properties retain - their previous values. - - - - If you call Dispose, the MySqlCommandBuilder is disassociated - from the MySqlDataAdapter, and the generated commands are no longer used. - - - - Caution must be used when using MySqlCOmmandBuilder on MySql 4.0 systems. With MySql 4.0, - database/schema information is not provided to the connector for a query. This means that - a query that pulls columns from two identically named tables in two or more different databases - will not cause an exception to be thrown but will not work correctly. Even more dangerous - is the situation where your select statement references database X but is executed in - database Y and both databases have tables with similar layouts. This situation can cause - unwanted changes or deletes. - This note does not apply to MySQL versions 4.1 and later. - - - - The following example uses the , along - and , to - select rows from a data source. The example is passed an initialized - , a connection string, a - query string that is a SQL SELECT statement, and a string that is the - name of the database table. The example then creates a MySqlCommandBuilder. - - - Public Shared Function SelectRows(myConnection As String, mySelectQuery As String, myTableName As String) As DataSet - Dim myConn As New MySqlConnection(myConnection) - Dim myDataAdapter As New MySqlDataAdapter() - myDataAdapter.SelectCommand = New MySqlCommand(mySelectQuery, myConn) - Dim cb As SqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter) - - myConn.Open() - - Dim ds As DataSet = New DataSet - myDataAdapter.Fill(ds, myTableName) - - ' Code to modify data in DataSet here - - ' Without the MySqlCommandBuilder this line would fail. - myDataAdapter.Update(ds, myTableName) - - myConn.Close() - End Function 'SelectRows - - - public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName) - { - MySqlConnection myConn = new MySqlConnection(myConnection); - MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); - myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn); - MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter); - - myConn.Open(); - - DataSet ds = new DataSet(); - myDataAdapter.Fill(ds, myTableName); - - //code to modify data in DataSet here - - //Without the MySqlCommandBuilder this line would fail - myDataAdapter.Update(ds, myTableName); - - myConn.Close(); - - return ds; - } - - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with the associated object. - - The to use. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Gets or sets a object for which SQL statements are automatically generated. - - A object. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Retrieves parameter information from the stored procedure specified - in the MySqlCommand and populates the Parameters collection of the - specified MySqlCommand object. - This method is not currently supported since stored procedures are - not available in MySql. - - The MySqlCommand referencing the stored - procedure from which the parameter information is to be derived. - The derived parameters are added to the Parameters collection of the - MySqlCommand. - The command text is not - a valid stored procedure name. - - - - Gets the delete command. - - - - - - Gets the update command. - - - - - - Gets the insert command. - - - - - - - - - - - - - Represents a set of data commands and a database connection that are used to fill a dataset and update a MySQL database. This class cannot be inherited. - - - The MySQLDataAdapter, serves as a bridge between a - and MySQL for retrieving and saving data. The MySQLDataAdapter provides this - bridge by mapping , which changes the data in the - DataSet to match the data in the data source, and , - which changes the data in the data source to match the data in the DataSet, - using the appropriate SQL statements against the data source. - - - When the MySQLDataAdapter fills a DataSet, it will create the necessary - tables and columns for the returned data if they do not already exist. However, primary - key information will not be included in the implicitly created schema unless the - property is set to . - You may also have the MySQLDataAdapter create the schema of the DataSet, - including primary key information, before filling it with data using . - - - MySQLDataAdapter is used in conjunction with - and to increase performance when connecting to a MySQL database. - - - The MySQLDataAdapter also includes the , - , , - , and - properties to facilitate the loading and updating of data. - - - When an instance of MySQLDataAdapter is created, the read/write properties - are set to initial values. For a list of these values, see the MySQLDataAdapter - constructor. - - - Please be aware that the class allows only - Int16, Int32, and Int64 to have the AutoIncrement property set. - If you plan to use autoincremement columns with MySQL, you should consider - using signed integer columns. - - - The following example creates a and a . - The MySqlConnection is opened and set as the for the - MySqlCommand. The example then calls , and closes - the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - Public Function SelectRows(dataSet As DataSet, connection As String, query As String) As DataSet - Dim conn As New MySqlConnection(connection) - Dim adapter As New MySqlDataAdapter() - adapter.SelectCommand = new MySqlCommand(query, conn) - adapter.Fill(dataset) - Return dataset - End Function - - - public DataSet SelectRows(DataSet dataset,string connection,string query) - { - MySqlConnection conn = new MySqlConnection(connection); - MySqlDataAdapter adapter = new MySqlDataAdapter(); - adapter.SelectCommand = new MySqlCommand(query, conn); - adapter.Fill(dataset); - return dataset; - } - - - - - - Occurs during Update before a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Occurs during Update after a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Initializes a new instance of the MySqlDataAdapter class. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.SelectCommand = New MySqlCommand("SELECT id, name FROM mytable", conn) - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter(); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.SelectCommand = new MySqlCommand("SELECT id, name FROM mytable", conn); - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - the specified as the - property. - - that is a SQL SELECT statement or stored procedure and is set - as the property of the . - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - When SelectCommand (or any of the other command properties) is assigned - to a previously created , the MySqlCommand is not cloned. - The SelectCommand maintains a reference to the previously created MySqlCommand - object. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim cmd as new MySqlCommand("SELECT id, name FROM mytable", conn) - Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlCommand cmd = new MySqlCommand("SELECT id, name FROM mytable", conn); - MySqlDataAdapter da = new MySqlDataAdapter(cmd); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a object. - - A String that is a SQL SELECT statement or stored procedure to be used by - the property of the . - - A that represents the connection. - - - This implementation of the opens and closes a - if it is not already open. This can be useful in a an application that must call the - method for two or more MySqlDataAdapter objects. - If the MySqlConnection is already open, you must explicitly call - or to close it. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", conn) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", conn); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a connection string. - - A that is a SQL SELECT statement or stored procedure to - be used by the property of the . - The connection string - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test") - Dim conn As MySqlConnection = da.SelectCommand.Connection - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test"); - MySqlConnection conn = da.SelectCommand.Connection; - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Gets or sets a SQL statement or stored procedure used to delete records from the data set. - - A used during to delete records in the - database that correspond to deleted rows in the . - - - During , if this property is not set and primary key information - is present in the , the DeleteCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When DeleteCommand is assigned to a previously created , - the MySqlCommand is not cloned. The DeleteCommand maintains a reference - to the previously created MySqlCommand object. - - - The following example creates a and sets the - and DeleteCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the DeleteCommand. - cmd = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - parm.SourceVersion = DataRowVersion.Original - - da.DeleteCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the DeleteCommand. - cmd = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - parm.SourceVersion = DataRowVersion.Original; - - da.DeleteCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to insert records into the data set. - - A used during to insert records into the - database that correspond to new rows in the . - - - During , if this property is not set and primary key information - is present in the , the InsertCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When InsertCommand is assigned to a previously created , - the MySqlCommand is not cloned. The InsertCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be added to the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to select records in the data source. - - A used during to select records from the - database for placement in the . - - - When SelectCommand is assigned to a previously created , - the MySqlCommand is not cloned. The SelectCommand maintains a reference to the - previously created MySqlCommand object. - - - If the SelectCommand does not return any rows, no tables are added to the - , and no exception is raised. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to updated records in the data source. - - A used during to update records in the - database with data from the . - - - During , if this property is not set and primary key information - is present in the , the UpdateCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When UpdateCommand is assigned to a previously created , - the MySqlCommand is not cloned. The UpdateCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be merged with the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and UpdateCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the UpdateCommand. - cmd = New MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - - parm = cmd.Parameters.Add("@oldId", MySqlDbType.VarChar, 15, "id") - parm.SourceVersion = DataRowVersion.Original - - da.UpdateCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the UpdateCommand. - cmd = new MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - parm = cmd.Parameters.Add( "@oldId", MySqlDbType.VarChar, 15, "id" ); - parm.SourceVersion = DataRowVersion.Original; - - da.UpdateCommand = cmd; - - return da; - } - - - - - - Open connection if it was closed. - Necessary to workaround "connection must be open and valid" error - with batched updates. - - Row state - list of opened connections - If connection is opened by this function, the list is updated - - true if connection was opened - - - - Overridden. See . - - - - - - - - - - Overridden. See . - - - - - - - - - - Overridden. Raises the RowUpdating event. - - A MySqlRowUpdatingEventArgs that contains the event data. - - - - Overridden. Raises the RowUpdated event. - - A MySqlRowUpdatedEventArgs that contains the event data. - - - - Asynchronous version of the Fill method. - - The to fill records with. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill records with. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The cancellation token. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Async version of FillSchema - - DataSet to use - Schema Type - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataReader to use - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - DBCommand to use - Source Table - Command Behavior - DataTable[] - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataReader to use - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DBCommand to use - Command Behavior - DataTable - - - - Async version of Update - - DataRow[] to use - int - - - - Async version of Update - - DataSet to use - int - - - - Async version of Update - - DataTable to use - int - - - - Async version of Update - - DataRow[] to use - Data Table Mapping - int - - - - Async version of Update - - DataSet to use - Source Table - - - - - Represents the method that will handle the event of a . - - - - - Represents the method that will handle the event of a . - - - - - Provides data for the RowUpdating event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatingEventArgs class. - - The to - . - The to execute during . - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand to execute when performing the Update. - - - - - Provides data for the RowUpdated event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatedEventArgs class. - - The sent through an . - The executed when is called. - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand executed when Update is called. - - - - - Enables the provider to help ensure that a user has a security level adequate for accessing data. - - - - - Adds a new connection string with set of restricted keywords to the MySqlClientPermission object - - Settings to be used for the connection - Keywords to define the restrictions - KeyRestrictionBehavior to be used - - - - Returns MySqlClientPermission as an IPermission - - - - - - Associates a security action with a custom security attribute. - - - - - Represents a section within a configuration file. - - - - - Gets the MySQL configuations associated to the current configuration. - - - - - Gets a collection of the exception interceptors available in the current configuration. - - - - - Gets a collection of the command interceptors available in the current configuration. - - - - - Gets a collection of the authentication plugins available in the current configuration. - - - - - Gets or sets the replication configurations. - - - - - Defines the configurations allowed for an authentication plugin. - - - - - Gets or sets the name of the authentication plugin. - - - - - Gets or sets the type of the authentication plugin. - - - - - Defines the configurations allowed for an interceptor. - - - - - Gets or sets the name of the interceptor. - - - - - Gets or sets the type of the interceptor. - - - - - Represents a generic configuration element. - - - - - - Gets an enumerator that iterates through the returned list. - - An enumerator that iterates through the returned list. - - - - Helper class that makes it easier to work with the provider. - - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The cancellation token. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Executes a single SQL command and returns the first row of the resultset. A new MySqlConnection object - is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - DataRow containing the first row of the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Updates the given table with data from the given - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of UpdateDataset - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Executes a single command against a MySQL database. The is assumed to be - open when the method is called and remains open after the method completes. - - The object to use - The SQL command to be executed. - An array of objects to use with the command. - The number of affected records. - - - - Executes a single command against a MySQL database. - - to use. - The SQL command to be executed. - An rray of objects to use with the command. - The number of affected records. - A new is created using the given. - - - - Executes a single command against a MySQL database, possibly inside an existing transaction. - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Execute a single command against a MySQL database. - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Escapes the string. - - The string to escape. - The string with all quotes escaped. - - - - Replaces quotes with double quotes. - - The string to modidify. - A string containing double quotes instead of single quotes. - - - - Async version of ExecuteNonQuery - - object to use - SQL command to be executed - Array of objects to use with the command. - Rows affected - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - An array of objects to use with the command. - The number of rows affected. - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - The cancellation token. - An array of objects to use with the command. - The number of rows affected. - - - - Async version of ExecuteReader - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteReader - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteScalar - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Represents a parameter to a , This class cannot be inherited. - - - - - Gets or sets the to use when loading . - - - - - CLoses this object. - - An object that is a clone of this object. - - - - Initializes a new instance of the class with the parameter name, the , the size, and the source column name. - - The name of the parameter to map. - One of the values. - The length of the parameter. - The name of the source column. - - - - Initializes a new instance of the class with the parameter name and a value of the new MySqlParameter. - - The name of the parameter to map. - An that is the value of the . - - - - Initializes a new instance of the class with the parameter name and the data type. - - The name of the parameter to map. - One of the values. - - - - Initializes a new instance of the class with the parameter name, the , and the size. - - The name of the parameter to map. - One of the values. - The length of the parameter. - - - - Initializes a new instance of the class with the parameter name, the type of the parameter, the size of the parameter, a , the precision of the parameter, the scale of the parameter, the source column, a to use, and the value of the parameter. - - The name of the parameter to map. - One of the values. - The length of the parameter. - One of the values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which is resolved. - The total number of decimal places to which is resolved. - The name of the source column. - One of the values. - An that is the value of the . - - - - - Gets or sets a value indicating whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter. - As of MySql version 4.1 and earlier, input-only is the only valid choice. - - - - - Gets or sets a value indicating whether the parameter accepts null values. - - - - - Gets or sets the of the parameter. - - - - - Gets or sets the maximum number of digits used to represent the property. - - - - - Gets or sets the number of decimal places to which is resolved. - - - - - Gets or sets the maximum size, in bytes, of the data within the column. - - - - - Gets or sets the value of the parameter. - - - - - Returns the possible values for this parameter if this parameter is of type - SET or ENUM. Returns null otherwise. - - - - - Gets or sets the name of the source column that is mapped to the and used for loading or returning the . - - - - - Sets or gets a value which indicates whether the source column is nullable. - This allows to correctly generate Update statements - for nullable columns. - - - - - Gets or sets the of the parameter. - - - - - Overridden. Gets a string containing the . - - - - - - Resets the DbType property to its original settings. - - - - - Represents a collection of parameters relevant to a as well as their respective mappings to columns in a . This class cannot be inherited. - - - The number of the parameters in the collection must be equal to the number of - parameter placeholders within the command text, or an exception will be generated. - - The following example creates multiple instances of - that are exposed as a collection through the - object within . - These parameters are used to select data within the data source and place the data in - the . This code example assumes that a DataSet - object and an instance of were created properly - with the appropriate schema, commands, and connection. - - Public Sub AddParameters() - ' ... - ' create myDataSet and myDataAdapter - ' ... - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters" - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239 - - myDataAdapter.Fill(myDataSet) - End Sub 'AddSqlParameters - - - public void AddSqlParameters() - { - // ... - // create myDataSet and myDataAdapter - // ... - - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters"; - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239; - myDataAdapter.Fill(myDataSet); - - } - - - - - - Gets a value that indicates whether the - has a fixed size. - - - - - Gets a value that indicates whether the - is read-only. - - - - - Gets a value that indicates whether the - is synchronized. - - - - - Gets the number of MySqlParameter objects in the collection. - - - - - Gets the at the specified index. - - Gets the with a specified attribute. - [C#] In C#, this property is the indexer for the class. - - - - - Gets the with the specified name. - - - - - Adds a to the with the parameter name, the data type, the column length, and the source column name. - - The name of the parameter. - One of the values. - The length of the column. - The name of the source column. - The newly added object. - - - - Adds the specified object to the . - - The to add to the collection. - The newly added object. - - - - Adds a parameter and its value. - - The name of the parameter. - The value of the parameter. - A object representing the provided values. - - - - Adds a to the given the parameter name and the data type. - - The name of the parameter. - One of the values. - The newly added object. - - - - Adds a to the with the parameter name, the data type, and the column length. - - The name of the parameter. - One of the values. - The length of the column. - The newly added object. - - - - Removes all items from the collection. - - - - - Gets the location of the in the collection with a specific parameter name. - - The name of the object to retrieve. - The zero-based location of the in the collection. - - - - Gets the location of a in the collection. - - The object to locate. - The zero-based location of the in the collection. - Gets the location of a in the collection. - - - - This method will update all the items in the index hashes when - we insert a parameter somewhere in the middle - - - - - - - Adds an array of values to the end of the . - - - - - - Retrieve the parameter with the given name. - - - - - - - Adds the specified object to the . - - The to add to the collection. - The index of the new object. - - - - Gets a value indicating whether a with the specified parameter name exists in the collection. - - The name of the object to find. - true if the collection contains the parameter; otherwise, false. - - - - Gets a value indicating whether a MySqlParameter exists in the collection. - - The value of the object to find. - true if the collection contains the object; otherwise, false. - Gets a value indicating whether a exists in the collection. - - - - Copies MySqlParameter objects from the MySqlParameterCollection to the specified array. - - - - - - - Returns an enumerator that iterates through the . - - - - - - Inserts a MySqlParameter into the collection at the specified index. - - - - - - - Removes the specified MySqlParameter from the collection. - - - - - - Removes the specified from the collection using the parameter name. - - The name of the object to retrieve. - - - - Removes the specified from the collection using a specific index. - - The zero-based index of the parameter. - Removes the specified from the collection. - - - - Gets an object that can be used to synchronize access to the - . - - - - - Represents a single(not nested) TransactionScope - - - - - Defines security permissions assigned to a MySQL object. - - - - - Creates a set of permissions. - - A flag indicating if the reflection permission should be included. - A object representing a collection of permissions. - - - - BaseCommandInterceptor is the base class that should be used for all userland - command interceptors - - - - - Gets the active connection. - - - - - Executes an SQL statements that returns a scalar value such as a calculation. - - The SQL statement to execute. - A scalar value that represents the result returned by the execution of the SQL statement. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that returns the number of affected rows. - - The SQL statement to execute. - The number of affected rows. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that will return a resultset. - - The SQL statement to execute. - A value that describes the results of the query and its effect on the database. - A object containing the result of the statement execution. - false. - This method is intended to be overriden. - - - - Sets the active connection. - - The active connection. - - - - CommandInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - BaseExceptionInterceptor is the base class that should be used for all userland - exception interceptors. - - - - - Returns the received exception. - - The exception to be returned. - The exception originally received. - - - - Gets the active connection. - - - - - Initilizes this object by setting the active connection. - - The connection to become active. - - - - StandardExceptionInterceptor is the standard interceptor that simply returns the exception. - It is the default action. - - - - - Returns the received exception, which is the default action - - The exception to be returned. - The exception originally received. - - - - ExceptionInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - Interceptor is the base class for the "manager" classes such as ExceptionInterceptor, - CommandInterceptor, etc - - - - - Return schema information about procedures and functions - Restrictions supported are: - schema, name, type - - - - - - - Return schema information about parameters for procedures and functions - Restrictions supported are: - schema, name, type, parameter name - - - - - Initializes a new row for the procedure parameters table. - - - - - Parses out the elements of a procedure parameter data type. - - - - - Implementation of memcached binary client protocol. - - According to http://code.google.com/p/memcached/wiki/BinaryProtocolRevamped - - - - Sends an store command (add, replace, set). - - - - - - - - - - - Sends a get command. - - - - - - - - - Sends a delete command. - - - - - - - - Sends a command without args (like flush). - - - - - - - - Sends a command with amount (INCR/DECR) - - - - - - - - - Encodes in the binary protocol the a command of the kind set, add or replace. - - - - - - - If true applies to set, add or replace commands; if false applies to append and prepend commands. - - - - - An interface of the client memcached protocol. This class is abstract for - implementation of the Memcached client interface see for the - text protocol version and for the binary protocol version. - - - - - The port used by the connection. - - - - - The server DNS or IP address used by the connection. - - - - - The network stream used by the connecition. - - - - - Factory method for creating instances of that implement a connection with the requested features. - The connection object returned must be explicitely opened see method . - - The Memcached server DNS or IP address. - The port for the Memcached server - A set of flags indicating characterestics requested. - An instance of a client connection ready to be used. - - - - Opens the client connection. - - - - - Closes the client connection. - - - - - Adds a new key/value pair with the given TimeSpan expiration. - - The key for identifying the entry. - The data to associate with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Appens the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Executes the Check-and-set Memcached operation. - - The key for identifying the entry. - The data to use in the CAS. - The interval of timespan, use TimeSpan.Zero for no expiration. - The CAS unique value to use. - - - - - Decrements the value associated with a key by the given amount. - - The key associated with the value to decrement. - The amount to decrement the value. - - - - Removes they pair key/value given the specified key. - - - - - - Removes all entries from the storage, effectively invalidating the whole cache. - - The interval after which the cache will be cleaned. Can be TimeSpan.Zero for immediately. - - - - Get the key/value pair associated with a given key. - - The key for which to returm the key/value. - The key/value associated with the key or a MemcachedException if it does not exists. - - - - Increments the value associated with a key by the given amount. - - The key associated with the value to increment. - The amount to increment the value. - - - - Prepends the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Replaces the value associated with the given key with another value. - - The key for identifying the entry. - The data to replace the value associated with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Set the value of a given key. - - The key for identifying the entry. - The data to associate with the given key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - A set of flags for requesting new instances of connections - - - - - Requests a connection implememting the text protocol. - - - - - Requests a connection implementing the binary protocol. - - - - - Requests a TCP connection. Currently UDP is not supported. - - - - - The base exception class for all Memcached exceptions. - - - - - Implementation of the Memcached text client protocol. - - - - - Sends a command to the memcached server. - - - - - - - This version is for commands that take a key, data, expiration and casUnique. - - - - Sends a command to the memcached server. - - - - - - This version is for commands that take a key, data and expiration - - - - Send a command to memcached server. - - - - - This version is for commands that don't need flags neither expiration fields. - - - - Sends a command to the server. - - - - This version is for commands that only require a key - - - - Sends a command to the server. - - - - - This version is for commands that only require a key and an integer value. - - - - Sends a command to the server. - - - - This version is for commands that only require a key and expiration. - - - - Represents a query attribute to a . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the attribute name and its value. - - Name of the attribute. - Value of the attribute. - - - - Name of the query attribute. - - - - - Value of the query attribute. - - - - - Gets or sets the of the attribute. - - - - - Sets the MySqlDbType from the Value - - - - - Gets the value for the attribute type. - - - - - Serialize the value of the query attribute. - - - - - Represents a collection of query attributes relevant to a . - - - The following example creates multiple instances of - that are exposed as a collection through the - object within . This code example assumes that an instance - of was created - properly. - - Public Sub AddQueryAttributes() - ' ... - ' create MySqlCommand - ' ... - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute") - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now) - End Sub - - - public void AddQueryAttributes() - { - // ... - // create MySqlCommand - // ... - - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute"); - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now); - } - - - - - - Gets the at the specified index. - - - - - Gets the number of objects in the collection. - - - - - Adds the specified object to the . - - object to add. - - - - Adds a query attribute and its value. - - Name of the query attribute. - Value of the query attribute. - - - - Removes all items from the collection. - - - - - Returns an enumerator that iterates through the . - - - - - Abstract class that provides common functionality for connection options that apply for all protocols. - - - - - Readonly field containing a collection of protocol shared connection options. - - - - - Gets or sets a flag indicating if the object has access to procedures. - - - - - Gets or sets a dictionary representing key-value pairs for each connection option. - - - - - Gets or sets the name of the server. - - The server. - - - - Gets or sets the name of the database for the initial connection. - - - - - Gets or sets the protocol that should be used for communicating - with MySQL. - - - - - Gets or sets the port number that is used when the socket - protocol is being used. - - - - - Gets or sets a boolean value that indicates whether this connection - should resolve DNS SRV records. - - - - - Gets or sets the user ID that should be used to connect with. - - - - - Gets or sets the password that should be used to make a connection. - - - - - Gets or sets the path to the certificate file to be used. - - - - - Gets or sets the password to be used in conjunction with the certificate file. - - - - - Gets or sets the location to a personal store where a certificate is held. - - - - - Gets or sets a certificate thumbprint to ensure correct identification of a certificate contained within a personal store. - - - - - Indicates whether to use SSL connections and how to handle server certificate errors. - - - - - Sets the TLS versions to use in a SSL connection to the server. - - - Tls version=TLSv1.1,TLSv1.2; - - - - - Gets or sets the path to a local key file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the path to a local certificate file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the idle connection time(seconds) for TCP connections. - - - - - Gets or sets the character set that should be used for sending queries to the server. - - - - - Analyzes the connection string for potential duplicated or invalid connection options. - - Connection string. - Flag that indicates if the connection is using X Protocol. - Flag that indicates if the default port is used. - - - - Represents a set of methods for creating instances of the MySQL client implementation of the data source classes. - - - - - Gets an instance of the . - This can be used to retrieve strongly typed data objects. - - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommand. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnection. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbParameter. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnectionStringBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommandBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbDataAdapter. - - - - Provide a simple caching layer - - - - - Aids in the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the Classic protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the name of the named pipe that should be used - for communicating with MySQL. - - - - - Gets or sets a boolean value that indicates whether this connection - should use compression. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - commands to send multiple SQL statements in one execution. - - - - - Gets or sets a boolean value that indicates whether logging is enabled. - - - - - Gets or sets the base name of the shared memory objects used to - communicate with MySQL when the shared memory protocol is being used. - - - - - Gets or sets the default command timeout. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - to load data local infile. - - - - - Gets or sets the safe path where files can be read and uploaded to the server. - - - - - Gets or sets a boolean value that indicates if the password should be persisted - in the connection string. - - - - - Gets or sets a boolean value that indicates if the connection should be encrypted. - - Obsolte. Use instead. - - - - Gets or sets a boolean value that indicates if RSA public keys should be retrieved from the server. - - This option is only relevant when SSL is disabled. Setting this option to true in - 8.0 servers that have the caching_sha2_password authentication plugin as the default plugin will - cause the connection attempt to fail if the user hasn't successfully connected to the server on a - previous occasion. - - - - Gets or sets the default authentication plugin to be used. This plugin takes precedence over - the server-side default authentication plugin when a valid authentication plugin is specified. - - - The default authentication plugin is mandatory for supporting user-less and password-less Kerberos authentications. - If no value is set, it uses the server-side default authentication plugin. - - - - - Gets or sets a boolean value that indicates if zero date time values are supported. - - Default value is false. - - - - Gets or sets a boolean value that indicates if zero datetime values should be - converted to DateTime.MinValue. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the Usage Advisor should be enabled. - - Default value is false. - - - - Gets or sets the size of the stored procedure cache. - - Default value is 25. - - - - Gets or sets a boolean value that indicates if the performance monitor hooks should be enabled. - - Default value is false. - - - - Gets or sets a boolean value that indicates if an opened connection should particiapte in the current scope. - - Default value is true. - - - - Gets or sets a boolean value that indicates if security asserts must be included. - - Must be set to true when using the class in a partial trust environment, - with the library installed in the GAC of the hosting environment. Not supported in .NET Core. - Default value is false. - - - - Gets or sets a boolean value that indicates if column binary flags set by the server are ignored. - - Default value is true. - - - - Gets or sets a boolean value that indicates if TINYINT(1) shound be treated as a BOOLEAN. - - Default value is true. - - - - Gets or sets a boolean value that indicates if the provider expects user variables in the SQL. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the session should be interactive. - - Default value is false. - - - - Gets or sets a boolean value that indicates if server functions should be treated as returning a string. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the server should report affected rows instead of found rows. - - Default value is false. - - - - Gets or sets a boolean value that indicates if items of data type BINARY(16) should be treated as guids. - - Default value is false. - - - - Gets or sets a boolean value that indicates if SQL Server syntax should be allowed by supporting square brackets - around symbols instead of backticks. - - Default value is false. - - - - Gets or sets a boolean value that indicates if caching of TableDirect commands is enabled. - - Default value is false. - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - Default value is 0. - - - - Gets or sets a boolean value that indicates if stored routine parameters should be checked against the server. - - Default value is true. - - - - Gets or sets a boolean value that indicates if this connection will use replication. - - Default value is false. - - - - Gets or sets the list of interceptors that can triage thrown MySqlExceptions. - - - - - Gets or sets the list of interceptors that can intercept command operations. - - - - - Gets or sets the lifetime of a pooled connection. - - Default value is 0. - - - - Gets or sets a boolean value indicating if connection pooling is enabled. - - Default value is true. - - - - Gets the minimum connection pool size. - - Default value is 0. - - - - Gets or sets the maximum connection pool setting. - - Default value is 100. - - - - Gets or sets a boolean value that indicates if the connection should be reset when retrieved - from the pool. - - Default value is false. - - - - Gets or sets a boolean value that indicates whether the server variable settings are updated by a - SHOW VARIABLES command each time a pooled connection is returned. - - Default value is false. - - - - Indicates whether the driver should treat binary BLOBs as UTF8. - - Default value is false. - - - - Gets or sets the pattern to match for the columns that should be treated as UTF8. - - - - - Gets or sets the pattern to match for the columns that should not be treated as UTF8. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Summary description for ClientParam. - - - - - DB Operations Code - - - - - Specifies MySQL specific data type of a field, property, for use in a . - - - - - - A fixed precision and scale numeric value between -1038 - -1 and 10 38 -1. - - - - - The signed range is -128 to 127. The unsigned - range is 0 to 255. - - - - - A 16-bit signed integer. The signed range is - -32768 to 32767. The unsigned range is 0 to 65535 - - - - - Specifies a 24 (3 byte) signed or unsigned value. - - - - - A 32-bit signed integer - - - - - A 64-bit signed integer. - - - - - A small (single-precision) floating-point - number. Allowable values are -3.402823466E+38 to -1.175494351E-38, - 0, and 1.175494351E-38 to 3.402823466E+38. - - - - - A normal-size (double-precision) - floating-point number. Allowable values are -1.7976931348623157E+308 - to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to - 1.7976931348623157E+308. - - - - - A timestamp. The range is '1970-01-01 00:00:00' to sometime in the - year 2037 - - - - - Date The supported range is '1000-01-01' to '9999-12-31'. - - - - - Time The range is '-838:59:59' to '838:59:59'. - - - - - DateTime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - Datetime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - A year in 2- or 4-digit format (default is 4-digit). The - allowable values are 1901 to 2155, 0000 in the 4-digit year - format, and 1970-2069 if you use the 2-digit format (70-69). - - - - - Obsolete Use Datetime or Date type - - - - - A variable-length string containing 0 to 65535 characters - - - - - Bit-field data type - - - - - JSON - - - - - New Decimal - - - - - An enumeration. A string object that can have only one value, - chosen from the list of values 'value1', 'value2', ..., NULL - or the special "" error value. An ENUM can have a maximum of - 65535 distinct values - - - - - A set. A string object that can have zero or more values, each - of which must be chosen from the list of values 'value1', 'value2', - ... A SET can have a maximum of 64 members. - - - - - A binary column with a maximum length of 255 (2^8 - 1) - characters - - - - - A binary column with a maximum length of 16777215 (2^24 - 1) bytes. - - - - - A binary column with a maximum length of 4294967295 or - 4G (2^32 - 1) bytes. - - - - - A binary column with a maximum length of 65535 (2^16 - 1) bytes. - - - - - A variable-length string containing 0 to 255 bytes. - - - - - A fixed-length string. - - - - - Geometric (GIS) data type. - - - - - Unsigned 8-bit value. - - - - - Unsigned 16-bit value. - - - - - Unsigned 24-bit value. - - - - - Unsigned 32-bit value. - - - - - Unsigned 64-bit value. - - - - - Fixed length binary string. - - - - - Variable length binary string. - - - - - A text column with a maximum length of 255 (2^8 - 1) characters. - - - - - A text column with a maximum length of 16777215 (2^24 - 1) characters. - - - - - A text column with a maximum length of 4294967295 or - 4G (2^32 - 1) characters. - - - - - A text column with a maximum length of 65535 (2^16 - 1) characters. - - - - - A guid column. - - - - - Allows the user to specify the type of connection that should - be used. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - SSL options for connection. - - - - - Do not use SSL. - - - - - Use SSL, if server supports it. This option is only available for the classic protocol. - - - - - Always use SSL. Deny connection if server does not support SSL. - Do not perform server certificate validation. - This is the default SSL mode when the same isn't specified as part of the connection string. - - - - - Always use SSL. Validate server SSL certificate, but different host name mismatch. - - - - - Always use SSL and perform full certificate validation. - - - - - Specifies the connection types supported - - - - - Use TCP/IP sockets. - - - - - Use client library. - - - - - Use MySQL embedded server. - - - - - Defines the location of the certificate store. - - - - - Do not use certificate store. - - - - - Use certificate store for the current user. - - - - - User certificate store for the machine. - - - - - Specifies the authentication mechanism that should be used. - - - - - If SSL is enabled or Unix sockets are being used, sets PLAIN as the authentication mechanism; - otherwise, it tries to use MYSQL41 and then SHA256_MEMORY. - - - - - Authenticate using PLAIN. - - - - - Authenticate using MYSQL41. - - - - - Authenticate using EXTERNAL. - - - - - Authenticate using SHA256_MEMORY. - - - - - Defines waiting options that may be used with row locking options. - - - - - Waits until the blocking transaction releases the row lock. - - - - - Never waits to acquire a row lock. The query executes immediately, - failing with an error if a requested row is locked. - - - - - Never waits to acquire a row lock. The query executes immediately, - removing locked rows from the result set. - - - - - Defines the type of compression used when data is exchanged between client and server. - - - - - Uses compression if client and server are able to reach a concensus. Otherwise, compression - is not used. - - - - - Enforces the use of compression. If no concensus is reached, an error is raised. - - - - - Disables compression. - - - - - Defines the compression algorithms that can be used. - - - - - The warnings that cause a connection to close. - - - - - Controls which column type should be read as type System.Guid. - - - - - Same as Char36 when OldGuids equals False, otherwise, the same as LittleEndianBinary16. - - - - - No column types are read or written as type Guid. - - - - - Char(36) columns are read or written as type Guid using lowercase hex with hyphens, which match UUID(). - - - - - Char(32) columns are read or written as type Guid using lowercase hex without hyphens. - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order, which matches UUID_TO_BIN(x). - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order - with time parts swapped, which matches UUID_TO_BIN(x,1). - - - - - Binary(16) columns are read or written as type Guid using little-endian byte order, - that is, the byte order used by System.Guid.ToByteArray and System.Guid.#ctor(System.Byte[]). - - - - - Collection of error codes that can be returned by the server - - - - - - - - - - - Error level - - - - - Error code - - - - - Error message - - - - - Provides a reference to error codes returned by MySQL. - - - - - ER_HASHCHK - - - - ER_NISAMCHK - - - - ER_NO - - - - ER_YES - - - The file couldn't be created. - ER_CANT_CREATE_FILE - - - The table couldn't be created. - ER_CANT_CREATE_TABLE - - - The database couldn't be created. - ER_CANT_CREATE_DB - - - The database couldn't be created, it already exists. - ER_DB_CREATE_EXISTS - - - The database couldn't be dropped, it doesn't exist. - ER_DB_DROP_EXISTS - - - The database couldn't be dropped, the file can't be deleted. - ER_DB_DROP_DELETE - - - The database couldn't be dropped, the directory can't be deleted. - ER_DB_DROP_RMDIR - - - The file couldn't be deleted. - ER_CANT_DELETE_FILE - - - The record couldn't be read from the system table. - ER_CANT_FIND_SYSTEM_REC - - - The status couldn't be retrieved. - ER_CANT_GET_STAT - - - The working directory couldn't be retrieved. - ER_CANT_GET_WD - - - The file couldn't be locked. - ER_CANT_LOCK - - - The file couldn't be opened. - ER_CANT_OPEN_FILE - - - The file couldn't be found. - ER_FILE_NOT_FOUND - - - The directory couldn't be read. - ER_CANT_READ_DIR - - - The working directory couldn't be entered. - ER_CANT_SET_WD - - - The record changed since it was last read. - ER_CHECKREAD - - - The disk is full. - ER_DISK_FULL - - - - There is already a key with the given values. - - - - An error occurred when closing the file. - ER_ERROR_ON_CLOSE - - - An error occurred when reading from the file. - ER_ERROR_ON_READ - - - An error occurred when renaming then file. - ER_ERROR_ON_RENAME - - - An error occurred when writing to the file. - ER_ERROR_ON_WRITE - - - The file is in use. - ER_FILE_USED - - - Sorting has been aborted. - ER_FILSORT_ABORT - - - The view doesn't exist. - ER_FORM_NOT_FOUND - - - Got the specified error from the table storage engine. - ER_GET_ERRNO - - - The table storage engine doesn't support the specified option. - ER_ILLEGAL_HA - - - - The specified key was not found. - - - - The file contains incorrect information. - ER_NOT_FORM_FILE - - - The key file is incorrect for the table, it should be repaired. - ER_NOT_KEYFILE - - - The key file is old for the table, it should be repaired. - ER_OLD_KEYFILE - - - The table is read-only - ER_OPEN_AS_READONLY - - - The server is out of memory, it should be restarted. - ER_OUTOFMEMORY - - - The server is out of sort-memory, the sort buffer size should be increased. - ER_OUT_OF_SORTMEMORY - - - An unexpected EOF was found when reading from the file. - ER_UNEXPECTED_EOF - - - Too many connections are open. - ER_CON_COUNT_ERROR - - - The server is out of resources, check if MySql or some other process is using all available memory. - ER_OUT_OF_RESOURCES - - - - Given when the connection is unable to successfully connect to host. - - - - The handshake was invalid. - ER_HANDSHAKE_ERROR - - - Access was denied for the specified user using the specified database. - ER_DBACCESS_DENIED_ERROR - - - - Normally returned when an incorrect password is given - - - - No database has been selected. - ER_NO_DB_ERROR - - - The command is unknown. - ER_UNKNOWN_COM_ERROR - - - The specified column cannot be NULL. - ER_BAD_NULL_ERROR - - - The specified database is not known. - - - The specified table already exists. - ER_TABLE_EXISTS_ERROR - - - The specified table is unknown. - ER_BAD_TABLE_ERROR - - - The specified column is ambiguous. - ER_NON_UNIQ_ERROR - - - The server is currently being shutdown. - ER_SERVER_SHUTDOWN - - - The specified columns is unknown. - ER_BAD_FIELD_ERROR - - - The specified column isn't in GROUP BY. - ER_WRONG_FIELD_WITH_GROUP - - - The specified columns cannot be grouped on. - ER_WRONG_GROUP_FIELD - - - There are sum functions and columns in the same statement. - ER_WRONG_SUM_SELECT - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT - - - The identifier name is too long. - ER_TOO_LONG_IDENT - - - The column name is duplicated. - ER_DUP_FIELDNAME - - - - Duplicate Key Name - - - - - Duplicate Key Entry - - - - The column specifier is incorrect. - ER_WRONG_FIELD_SPEC - - - An error occurred when parsing the statement. - ER_PARSE_ERROR - - - The statement is empty. - ER_EMPTY_QUERY - - - The table alias isn't unique. - ER_NONUNIQ_TABLE - - - The default value is invalid for the specified field. - ER_INVALID_DEFAULT - - - The table has multiple primary keys defined. - ER_MULTIPLE_PRI_KEY - - - Too many keys were defined for the table. - ER_TOO_MANY_KEYS - - - Too many parts to the keys were defined for the table. - ER_TOO_MANY_KEY_PARTS - - - The specified key is too long - ER_TOO_LONG_KEY - - - The specified key column doesn't exist in the table. - ER_KEY_COLUMN_DOES_NOT_EXITS - - - The BLOB column was used as a key, this can't be done. - ER_BLOB_USED_AS_KEY - - - The column length is too big for the specified column type. - ER_TOO_BIG_FIELDLENGTH - - - There can only be one auto-column, and it must be defined as a PK. - ER_WRONG_AUTO_KEY - - - The server is ready to accept connections. - ER_READY - - - - ER_NORMAL_SHUTDOWN - - - The server received the specified signal and is aborting. - ER_GOT_SIGNAL - - - The server shutdown is complete. - ER_SHUTDOWN_COMPLETE - - - The server is forcing close of the specified thread. - ER_FORCING_CLOSE - - - An error occurred when creating the IP socket. - ER_IPSOCK_ERROR - - - The table has no index like the one used in CREATE INDEX. - ER_NO_SUCH_INDEX - - - The field separator argument is not what is expected, check the manual. - ER_WRONG_FIELD_TERMINATORS - - - The BLOB columns must terminated, fixed row lengths cannot be used. - ER_BLOBS_AND_NO_TERMINATED - - - The text file cannot be read. - ER_TEXTFILE_NOT_READABLE - - - The specified file already exists. - ER_FILE_EXISTS_ERROR - - - Information returned by the LOAD statement. - ER_LOAD_INFO - - - Information returned by an UPDATE statement. - ER_ALTER_INFO - - - The prefix key is incorrect. - ER_WRONG_SUB_KEY - - - All columns cannot be removed from a table, use DROP TABLE instead. - ER_CANT_REMOVE_ALL_FIELDS - - - Cannot DROP, check that the column or key exists. - ER_CANT_DROP_FIELD_OR_KEY - - - Information returned by an INSERT statement. - ER_INSERT_INFO - - - The target table cannot be specified for update in FROM clause. - ER_UPDATE_TABLE_USED - - - The specified thread ID is unknown. - ER_NO_SUCH_THREAD - - - The thread cannot be killed, the current user is not the owner. - ER_KILL_DENIED_ERROR - - - No tables used in the statement. - ER_NO_TABLES_USED - - - Too many string have been used for the specified column and SET. - ER_TOO_BIG_SET - - - A unique filename couldn't be generated. - ER_NO_UNIQUE_LOGFILE - - - The specified table was locked with a READ lock, and can't be updated. - ER_TABLE_NOT_LOCKED_FOR_WRITE - - - The specified table was not locked with LOCK TABLES. - ER_TABLE_NOT_LOCKED - - - BLOB and Text columns cannot have a default value. - ER_BLOB_CANT_HAVE_DEFAULT - - - The specified database name is incorrect. - ER_WRONG_DB_NAME - - - The specified table name is incorrect. - ER_WRONG_TABLE_NAME - - - The SELECT command would examine more than MAX_JOIN_SIZE rows, check the WHERE clause and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is ok. - ER_TOO_BIG_SELECT - - - An unknown error occurred. - ER_UNKNOWN_ERROR - - - The specified procedure is unknown. - ER_UNKNOWN_PROCEDURE - - - The number of parameters provided for the specified procedure is incorrect. - ER_WRONG_PARAMCOUNT_TO_PROCEDURE - - - The parameters provided for the specified procedure are incorrect. - ER_WRONG_PARAMETERS_TO_PROCEDURE - - - The specified table is unknown. - ER_UNKNOWN_TABLE - - - The specified column has been specified twice. - ER_FIELD_SPECIFIED_TWICE - - - The group function has been incorrectly used. - ER_INVALID_GROUP_FUNC_USE - - - The specified table uses an extension that doesn't exist in this MySQL version. - ER_UNSUPPORTED_EXTENSION - - - The table must have at least one column. - ER_TABLE_MUST_HAVE_COLUMNS - - - The specified table is full. - ER_RECORD_FILE_FULL - - - The specified character set is unknown. - ER_UNKNOWN_CHARACTER_SET - - - Too many tables, MySQL can only use the specified number of tables in a JOIN. - ER_TOO_MANY_TABLES - - - Too many columns - ER_TOO_MANY_FIELDS - - - The row size is too large, the maximum row size for the used tables (not counting BLOBS) is specified, change some columns or BLOBS. - ER_TOO_BIG_ROWSIZE - - - A thread stack overrun occurred. Stack statistics are specified. - ER_STACK_OVERRUN - - - A cross dependency was found in the OUTER JOIN, examine the ON conditions. - ER_WRONG_OUTER_JOIN - - - The table handler doesn't support NULL in the given index, change specified column to be NOT NULL or use another handler. - ER_NULL_COLUMN_IN_INDEX - - - The specified user defined function cannot be loaded. - ER_CANT_FIND_UDF - - - The specified user defined function cannot be initialised. - ER_CANT_INITIALIZE_UDF - - - No paths are allowed for the shared library. - ER_UDF_NO_PATHS - - - The specified user defined function already exists. - ER_UDF_EXISTS - - - The specified shared library cannot be opened. - ER_CANT_OPEN_LIBRARY - - - The specified symbol cannot be found in the library. - ER_CANT_FIND_DL_ENTRY - - - The specified function is not defined. - ER_FUNCTION_NOT_DEFINED - - - The specified host is blocked because of too many connection errors, unblock with 'mysqladmin flush-hosts'. - ER_HOST_IS_BLOCKED - - - - The given host is not allowed to connect - - - - - The anonymous user is not allowed to connect - - - - - The given password is not allowed - - - - - The given password does not match - - - - Information returned by an UPDATE statement. - ER_UPDATE_INFO - - - A new thread couldn't be created. - ER_CANT_CREATE_THREAD - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT_ON_ROW - - - The specified table can't be re-opened. - ER_CANT_REOPEN_TABLE - - - The NULL value has been used incorrectly. - ER_INVALID_USE_OF_NULL - - - The regular expression contains an error. - ER_REGEXP_ERROR - - - GROUP columns (MIN(), MAX(), COUNT(), ...) cannot be mixes with no GROUP columns if there is not GROUP BY clause. - ER_MIX_OF_GROUP_FUNC_AND_FIELDS - - - - ER_NONEXISTING_GRANT - - - - ER_TABLEACCESS_DENIED_ERROR - - - - ER_COLUMNACCESS_DENIED_ERROR - - - - ER_ILLEGAL_GRANT_FOR_TABLE - - - - ER_GRANT_WRONG_HOST_OR_USER - - - - ER_NO_SUCH_TABLE - - - - ER_NONEXISTING_TABLE_GRANT - - - - ER_NOT_ALLOWED_COMMAND - - - - ER_SYNTAX_ERROR - - - - ER_DELAYED_CANT_CHANGE_LOCK - - - - ER_TOO_MANY_DELAYED_THREADS - - - - ER_ABORTING_CONNECTION - - - - An attempt was made to send or receive a packet larger than - max_allowed_packet_size - - - - - ER_NET_READ_ERROR_FROM_PIPE - - - - ER_NET_FCNTL_ERROR - - - - ER_NET_PACKETS_OUT_OF_ORDER - - - - ER_NET_UNCOMPRESS_ERROR - - - - ER_NET_READ_ERROR - - - - ER_NET_READ_INTERRUPTED - - - - ER_NET_ERROR_ON_WRITE - - - - ER_NET_WRITE_INTERRUPTED - - - - ER_TOO_LONG_STRING - - - - ER_TABLE_CANT_HANDLE_BLOB - - - - ER_TABLE_CANT_HANDLE_AUTO_INCREMENT - - - - ER_DELAYED_INSERT_TABLE_LOCKED - - - - ER_WRONG_COLUMN_NAME - - - - ER_WRONG_KEY_COLUMN - - - - ER_WRONG_MRG_TABLE - - - - ER_DUP_UNIQUE - - - - ER_BLOB_KEY_WITHOUT_LENGTH - - - - ER_PRIMARY_CANT_HAVE_NULL - - - - ER_TOO_MANY_ROWS - - - - ER_REQUIRES_PRIMARY_KEY - - - - ER_NO_RAID_COMPILED - - - - ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE - - - - ER_KEY_DOES_NOT_EXITS - - - - ER_CHECK_NO_SUCH_TABLE - - - - ER_CHECK_NOT_IMPLEMENTED - - - - ER_CANT_DO_THIS_DURING_AN_TRANSACTION - - - - ER_ERROR_DURING_COMMIT - - - - ER_ERROR_DURING_ROLLBACK - - - - ER_ERROR_DURING_FLUSH_LOGS - - - - ER_ERROR_DURING_CHECKPOINT - - - - ER_NEW_ABORTING_CONNECTION - - - - ER_DUMP_NOT_IMPLEMENTED - - - - ER_FLUSH_SOURCE_BINLOG_CLOSED - - - - ER_INDEX_REBUILD - - - - ER_SOURCE - - - - ER_SOURCE_NET_READ - - - - ER_SOURCE_NET_WRITE - - - - ER_FT_MATCHING_KEY_NOT_FOUND - - - - ER_LOCK_OR_ACTIVE_TRANSACTION - - - - ER_UNKNOWN_SYSTEM_VARIABLE - - - - ER_CRASHED_ON_USAGE - - - - ER_CRASHED_ON_REPAIR - - - - ER_WARNING_NOT_COMPLETE_ROLLBACK - - - - ER_TRANS_CACHE_FULL - - - - ER_REPLICA_MUST_STOP - - - - ER_REPLICA_NOT_RUNNING - - - - ER_BAD_REPLICA - - - - ER_SOURCE_INFO - - - - ER_REPLICA_THREAD - - - - ER_TOO_MANY_USER_CONNECTIONS - - - - ER_SET_CONSTANTS_ONLY - - - - ER_LOCK_WAIT_TIMEOUT - - - - ER_LOCK_TABLE_FULL - - - - ER_READ_ONLY_TRANSACTION - - - - ER_DROP_DB_WITH_READ_LOCK - - - - ER_CREATE_DB_WITH_READ_LOCK - - - - ER_WRONG_ARGUMENTS - - - - ER_NO_PERMISSION_TO_CREATE_USER - - - - ER_UNION_TABLES_IN_DIFFERENT_DIR - - - - ER_LOCK_DEADLOCK - - - - ER_TABLE_CANT_HANDLE_FT - - - - ER_CANNOT_ADD_FOREIGN - - - - ER_NO_REFERENCED_ROW - - - - ER_ROW_IS_REFERENCED - - - - ER_CONNECT_TO_SOURCE - - - - ER_QUERY_ON_SOURCE - - - - ER_ERROR_WHEN_EXECUTING_COMMAND - - - - ER_WRONG_USAGE - - - - ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT - - - - ER_CANT_UPDATE_WITH_READLOCK - - - - ER_MIXING_NOT_ALLOWED - - - - ER_DUP_ARGUMENT - - - - ER_USER_LIMIT_REACHED - - - - ER_SPECIFIC_ACCESS_DENIED_ERROR - - - - ER_LOCAL_VARIABLE - - - - ER_GLOBAL_VARIABLE - - - - ER_NO_DEFAULT - - - - ER_WRONG_VALUE_FOR_VAR - - - - ER_WRONG_TYPE_FOR_VAR - - - - ER_VAR_CANT_BE_READ - - - - ER_CANT_USE_OPTION_HERE - - - - ER_NOT_SUPPORTED_YET - - - - ER_SOURCE_FATAL_ERROR_READING_BINLOG - - - - ER_REPLICA_IGNORED_TABLE - - - - ER_INCORRECT_GLOBAL_LOCAL_VAR - - - - ER_WRONG_FK_DEF - - - - ER_KEY_REF_DO_NOT_MATCH_TABLE_REF - - - - ER_OPERAND_COLUMNS - - - - ER_SUBQUERY_NO_1_ROW - - - - ER_UNKNOWN_STMT_HANDLER - - - - ER_CORRUPT_HELP_DB - - - - ER_CYCLIC_REFERENCE - - - - ER_AUTO_CONVERT - - - - ER_ILLEGAL_REFERENCE - - - - ER_DERIVED_MUST_HAVE_ALIAS - - - - ER_SELECT_REDUCED - - - - ER_TABLENAME_NOT_ALLOWED_HERE - - - - ER_NOT_SUPPORTED_AUTH_MODE - - - - ER_SPATIAL_CANT_HAVE_NULL - - - - ER_COLLATION_CHARSET_MISMATCH - - - - ER_REPLICA_WAS_RUNNING - - - - ER_REPLICA_WAS_NOT_RUNNING - - - - ER_TOO_BIG_FOR_UNCOMPRESS - - - - ER_ZLIB_Z_MEM_ERROR - - - - ER_ZLIB_Z_BUF_ERROR - - - - ER_ZLIB_Z_DATA_ERROR - - - - ER_CUT_VALUE_GROUP_CONCAT - - - - ER_WARN_TOO_FEW_RECORDS - - - - ER_WARN_TOO_MANY_RECORDS - - - - ER_WARN_NULL_TO_NOTNULL - - - - ER_WARN_DATA_OUT_OF_RANGE - - - - WARN_DATA_TRUNCATED - - - - ER_WARN_USING_OTHER_HANDLER - - - - ER_CANT_AGGREGATE_2COLLATIONS - - - - ER_DROP_USER - - - - ER_REVOKE_GRANTS - - - - ER_CANT_AGGREGATE_3COLLATIONS - - - - ER_CANT_AGGREGATE_NCOLLATIONS - - - - ER_VARIABLE_IS_NOT_STRUCT - - - - ER_UNKNOWN_COLLATION - - - - ER_REPLICA_IGNORED_SSL_PARAMS - - - - ER_SERVER_IS_IN_SECURE_AUTH_MODE - - - - ER_WARN_FIELD_RESOLVED - - - - ER_BAD_REPLICA_UNTIL_COND - - - - ER_MISSING_SKIP_REPLICA - - - - ER_UNTIL_COND_IGNORED - - - - ER_WRONG_NAME_FOR_INDEX - - - - ER_WRONG_NAME_FOR_CATALOG - - - - ER_WARN_QC_RESIZE - - - - ER_BAD_FT_COLUMN - - - - ER_UNKNOWN_KEY_CACHE - - - - ER_WARN_HOSTNAME_WONT_WORK - - - - ER_UNKNOWN_STORAGE_ENGINE - - - - ER_WARN_DEPRECATED_SYNTAX - - - - ER_NON_UPDATABLE_TABLE - - - - ER_FEATURE_DISABLED - - - - ER_OPTION_PREVENTS_STATEMENT - - - - ER_DUPLICATED_VALUE_IN_TYPE - - - - ER_TRUNCATED_WRONG_VALUE - - - - ER_TOO_MUCH_AUTO_TIMESTAMP_COLS - - - - ER_INVALID_ON_UPDATE - - - - ER_UNSUPPORTED_PS - - - - ER_GET_ERRMSG - - - - ER_GET_TEMPORARY_ERRMSG - - - - ER_UNKNOWN_TIME_ZONE - - - - ER_WARN_INVALID_TIMESTAMP - - - - ER_INVALID_CHARACTER_STRING - - - - ER_WARN_ALLOWED_PACKET_OVERFLOWED - - - - ER_CONFLICTING_DECLARATIONS - - - - ER_SP_NO_RECURSIVE_CREATE - - - - ER_SP_ALREADY_EXISTS - - - - ER_SP_DOES_NOT_EXIST - - - - ER_SP_DROP_FAILED - - - - ER_SP_STORE_FAILED - - - - ER_SP_LILABEL_MISMATCH - - - - ER_SP_LABEL_REDEFINE - - - - ER_SP_LABEL_MISMATCH - - - - ER_SP_UNINIT_VAR - - - - ER_SP_BADSELECT - - - - ER_SP_BADRETURN - - - - ER_SP_BADSTATEMENT - - - - ER_UPDATE_LOG_DEPRECATED_IGNORED - - - - ER_UPDATE_LOG_DEPRECATED_TRANSLATED - - - - ER_QUERY_INTERRUPTED - - - - ER_SP_WRONG_NO_OF_ARGS - - - - ER_SP_COND_MISMATCH - - - - ER_SP_NORETURN - - - - ER_SP_NORETURNEND - - - - ER_SP_BAD_CURSOR_QUERY - - - - ER_SP_BAD_CURSOR_SELECT - - - - ER_SP_CURSOR_MISMATCH - - - - ER_SP_CURSOR_ALREADY_OPEN - - - - ER_SP_CURSOR_NOT_OPEN - - - - ER_SP_UNDECLARED_VAR - - - - ER_SP_WRONG_NO_OF_FETCH_ARGS - - - - ER_SP_FETCH_NO_DATA - - - - ER_SP_DUP_PARAM - - - - ER_SP_DUP_VAR - - - - ER_SP_DUP_COND - - - - ER_SP_DUP_CURS - - - - ER_SP_CANT_ALTER - - - - ER_SP_SUBSELECT_NYI - - - - ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_SP_VARCOND_AFTER_CURSHNDLR - - - - ER_SP_CURSOR_AFTER_HANDLER - - - - ER_SP_CASE_NOT_FOUND - - - - ER_FPARSER_TOO_BIG_FILE - - - - ER_FPARSER_BAD_HEADER - - - - ER_FPARSER_EOF_IN_COMMENT - - - - ER_FPARSER_ERROR_IN_PARAMETER - - - - ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER - - - - ER_VIEW_NO_EXPLAIN - - - - ER_FRM_UNKNOWN_TYPE - - - - ER_WRONG_OBJECT - - - - ER_NONUPDATEABLE_COLUMN - - - - ER_VIEW_SELECT_DERIVED - - - - ER_VIEW_SELECT_CLAUSE - - - - ER_VIEW_SELECT_VARIABLE - - - - ER_VIEW_SELECT_TMPTABLE - - - - ER_VIEW_WRONG_LIST - - - - ER_WARN_VIEW_MERGE - - - - ER_WARN_VIEW_WITHOUT_KEY - - - - ER_VIEW_INVALID - - - - ER_SP_NO_DROP_SP - - - - ER_SP_GOTO_IN_HNDLR - - - - ER_TRG_ALREADY_EXISTS - - - - ER_TRG_DOES_NOT_EXIST - - - - ER_TRG_ON_VIEW_OR_TEMP_TABLE - - - - ER_TRG_CANT_CHANGE_ROW - - - - ER_TRG_NO_SUCH_ROW_IN_TRG - - - - ER_NO_DEFAULT_FOR_FIELD - - - - ER_DIVISION_BY_ZERO - - - - ER_TRUNCATED_WRONG_VALUE_FOR_FIELD - - - - ER_ILLEGAL_VALUE_FOR_TYPE - - - - ER_VIEW_NONUPD_CHECK - - - - ER_VIEW_CHECK_FAILED - - - - ER_PROCACCESS_DENIED_ERROR - - - - ER_RELAY_LOG_FAIL - - - - ER_PASSWD_LENGTH - - - - ER_UNKNOWN_TARGET_BINLOG - - - - ER_IO_ERR_LOG_INDEX_READ - - - - ER_BINLOG_PURGE_PROHIBITED - - - - ER_FSEEK_FAIL - - - - ER_BINLOG_PURGE_FATAL_ERR - - - - ER_LOG_IN_USE - - - - ER_LOG_PURGE_UNKNOWN_ERR - - - - ER_RELAY_LOG_INIT - - - - ER_NO_BINARY_LOGGING - - - - ER_RESERVED_SYNTAX - - - - ER_WSAS_FAILED - - - - ER_DIFF_GROUPS_PROC - - - - ER_NO_GROUP_FOR_PROC - - - - ER_ORDER_WITH_PROC - - - - ER_LOGGING_PROHIBIT_CHANGING_OF - - - - ER_NO_FILE_MAPPING - - - - ER_WRONG_MAGIC - - - - ER_PS_MANY_PARAM - - - - ER_KEY_PART_0 - - - - ER_VIEW_CHECKSUM - - - - ER_VIEW_MULTIUPDATE - - - - ER_VIEW_NO_INSERT_FIELD_LIST - - - - ER_VIEW_DELETE_MERGE_VIEW - - - - ER_CANNOT_USER - - - - ER_XAER_NOTA - - - - ER_XAER_INVAL - - - - ER_XAER_RMFAIL - - - - ER_XAER_OUTSIDE - - - - ER_XAER_RMERR - - - - ER_XA_RBROLLBACK - - - - ER_NONEXISTING_PROC_GRANT - - - - ER_PROC_AUTO_GRANT_FAIL - - - - ER_PROC_AUTO_REVOKE_FAIL - - - - ER_DATA_TOO_LONG - - - - ER_SP_BAD_SQLSTATE - - - - ER_STARTUP - - - - ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR - - - - ER_CANT_CREATE_USER_WITH_GRANT - - - - ER_WRONG_VALUE_FOR_TYPE - - - - ER_TABLE_DEF_CHANGED - - - - ER_SP_DUP_HANDLER - - - - ER_SP_NOT_VAR_ARG - - - - ER_SP_NO_RETSET - - - - ER_CANT_CREATE_GEOMETRY_OBJECT - - - - ER_FAILED_ROUTINE_BREAK_BINLOG - - - - ER_BINLOG_UNSAFE_ROUTINE - - - - ER_BINLOG_CREATE_ROUTINE_NEED_SUPER - - - - ER_EXEC_STMT_WITH_OPEN_CURSOR - - - - ER_STMT_HAS_NO_OPEN_CURSOR - - - - ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_NO_DEFAULT_FOR_VIEW_FIELD - - - - ER_SP_NO_RECURSION - - - - ER_TOO_BIG_SCALE - - - - ER_TOO_BIG_PRECISION - - - - ER_M_BIGGER_THAN_D - - - - ER_WRONG_LOCK_OF_SYSTEM_TABLE - - - - ER_CONNECT_TO_FOREIGN_DATA_SOURCE - - - - ER_QUERY_ON_FOREIGN_DATA_SOURCE - - - - ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST - - - - ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE - - - - ER_FOREIGN_DATA_STRING_INVALID - - - - ER_CANT_CREATE_FEDERATED_TABLE - - - - ER_TRG_IN_WRONG_SCHEMA - - - - ER_STACK_OVERRUN_NEED_MORE - - - - ER_TOO_LONG_BODY - - - - ER_WARN_CANT_DROP_DEFAULT_KEYCACHE - - - - ER_TOO_BIG_DISPLAYWIDTH - - - - ER_XAER_DUPID - - - - ER_DATETIME_FUNCTION_OVERFLOW - - - - ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG - - - - ER_VIEW_PREVENT_UPDATE - - - - ER_PS_NO_RECURSION - - - - ER_SP_CANT_SET_AUTOCOMMIT - - - - ER_MALFORMED_DEFINER - - - - ER_VIEW_FRM_NO_USER - - - - ER_VIEW_OTHER_USER - - - - ER_NO_SUCH_USER - - - - ER_FORBID_SCHEMA_CHANGE - - - - ER_ROW_IS_REFERENCED_2 - - - - ER_NO_REFERENCED_ROW_2 - - - - ER_SP_BAD_VAR_SHADOW - - - - ER_TRG_NO_DEFINER - - - - ER_OLD_FILE_FORMAT - - - - ER_SP_RECURSION_LIMIT - - - - ER_SP_PROC_TABLE_CORRUPT - - - - ER_SP_WRONG_NAME - - - - ER_TABLE_NEEDS_UPGRADE - - - - ER_SP_NO_AGGREGATE - - - - ER_MAX_PREPARED_STMT_COUNT_REACHED - - - - ER_VIEW_RECURSIVE - - - - ER_NON_GROUPING_FIELD_USED - - - - ER_TABLE_CANT_HANDLE_SPKEYS - - - - ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA - - - - ER_REMOVED_SPACES - - - - ER_AUTOINC_READ_FAILED - - - - ER_USERNAME - - - - ER_HOSTNAME - - - - ER_WRONG_STRING_LENGTH - - - - ER_NON_INSERTABLE_TABLE - - - - ER_ADMIN_WRONG_MRG_TABLE - - - - ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT - - - - ER_NAME_BECOMES_EMPTY - - - - ER_AMBIGUOUS_FIELD_TERM - - - - ER_FOREIGN_SERVER_EXISTS - - - - ER_FOREIGN_SERVER_DOESNT_EXIST - - - - ER_ILLEGAL_HA_CREATE_OPTION - - - - ER_PARTITION_REQUIRES_VALUES_ERROR - - - - ER_PARTITION_WRONG_VALUES_ERROR - - - - ER_PARTITION_MAXVALUE_ERROR - - - - ER_PARTITION_SUBPARTITION_ERROR - - - - ER_PARTITION_SUBPART_MIX_ERROR - - - - ER_PARTITION_WRONG_NO_PART_ERROR - - - - ER_PARTITION_WRONG_NO_SUBPART_ERROR - - - - ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR - - - - ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR - - - - ER_FIELD_NOT_FOUND_PART_ERROR - - - - ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR - - - - ER_INCONSISTENT_PARTITION_INFO_ERROR - - - - ER_PARTITION_FUNC_NOT_ALLOWED_ERROR - - - - ER_PARTITIONS_MUST_BE_DEFINED_ERROR - - - - ER_RANGE_NOT_INCREASING_ERROR - - - - ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR - - - - ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR - - - - ER_PARTITION_ENTRY_ERROR - - - - ER_MIX_HANDLER_ERROR - - - - ER_PARTITION_NOT_DEFINED_ERROR - - - - ER_TOO_MANY_PARTITIONS_ERROR - - - - ER_SUBPARTITION_ERROR - - - - ER_CANT_CREATE_HANDLER_FILE - - - - ER_BLOB_FIELD_IN_PART_FUNC_ERROR - - - - ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF - - - - ER_NO_PARTS_ERROR - - - - ER_PARTITION_MGMT_ON_NONPARTITIONED - - - - ER_FOREIGN_KEY_ON_PARTITIONED - - - - ER_DROP_PARTITION_NON_EXISTENT - - - - ER_DROP_LAST_PARTITION - - - - ER_COALESCE_ONLY_ON_HASH_PARTITION - - - - ER_REORG_HASH_ONLY_ON_SAME_NO - - - - ER_REORG_NO_PARAM_ERROR - - - - ER_ONLY_ON_RANGE_LIST_PARTITION - - - - ER_ADD_PARTITION_SUBPART_ERROR - - - - ER_ADD_PARTITION_NO_NEW_PARTITION - - - - ER_COALESCE_PARTITION_NO_PARTITION - - - - ER_REORG_PARTITION_NOT_EXIST - - - - ER_SAME_NAME_PARTITION - - - - ER_NO_BINLOG_ERROR - - - - ER_CONSECUTIVE_REORG_PARTITIONS - - - - ER_REORG_OUTSIDE_RANGE - - - - ER_PARTITION_FUNCTION_FAILURE - - - - ER_PART_STATE_ERROR - - - - ER_LIMITED_PART_RANGE - - - - ER_PLUGIN_IS_NOT_LOADED - - - - ER_WRONG_VALUE - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE - - - - ER_FILEGROUP_OPTION_ONLY_ONCE - - - - ER_CREATE_FILEGROUP_FAILED - - - - ER_DROP_FILEGROUP_FAILED - - - - ER_TABLESPACE_AUTO_EXTEND_ERROR - - - - ER_WRONG_SIZE_NUMBER - - - - ER_SIZE_OVERFLOW_ERROR - - - - ER_ALTER_FILEGROUP_FAILED - - - - ER_BINLOG_ROW_LOGGING_FAILED - - - - ER_BINLOG_ROW_WRONG_TABLE_DEF - - - - ER_BINLOG_ROW_RBR_TO_SBR - - - - ER_EVENT_ALREADY_EXISTS - - - - ER_EVENT_STORE_FAILED - - - - ER_EVENT_DOES_NOT_EXIST - - - - ER_EVENT_CANT_ALTER - - - - ER_EVENT_DROP_FAILED - - - - ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG - - - - ER_EVENT_ENDS_BEFORE_STARTS - - - - ER_EVENT_EXEC_TIME_IN_THE_PAST - - - - ER_EVENT_OPEN_TABLE_FAILED - - - - ER_EVENT_NEITHER_M_EXPR_NOR_M_AT - - - - ER_COL_COUNT_DOESNT_MATCH_CORRUPTED - - - - ER_CANNOT_LOAD_FROM_TABLE - - - - ER_EVENT_CANNOT_DELETE - - - - ER_EVENT_COMPILE_ERROR - - - - ER_EVENT_SAME_NAME - - - - ER_EVENT_DATA_TOO_LONG - - - - ER_DROP_INDEX_FK - - - - ER_WARN_DEPRECATED_SYNTAX_WITH_VER - - - - ER_CANT_WRITE_LOCK_LOG_TABLE - - - - ER_CANT_LOCK_LOG_TABLE - - - - ER_FOREIGN_DUPLICATE_KEY - - - - ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE - - - - ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR - - - - ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT - - - - ER_NDB_CANT_SWITCH_BINLOG_FORMAT - - - - ER_PARTITION_NO_TEMPORARY - - - - ER_PARTITION_CONST_DOMAIN_ERROR - - - - ER_PARTITION_FUNCTION_IS_NOT_ALLOWED - - - - ER_DDL_LOG_ERROR - - - - ER_NULL_IN_VALUES_LESS_THAN - - - - ER_WRONG_PARTITION_NAME - - - - ER_CANT_CHANGE_TRANSACTION_ISOLATION - - - - ER_DUP_ENTRY_AUTOINCREMENT_CASE - - - - ER_EVENT_MODIFY_QUEUE_ERROR - - - - ER_EVENT_SET_VAR_ERROR - - - - ER_PARTITION_MERGE_ERROR - - - - ER_CANT_ACTIVATE_LOG - - - - ER_RBR_NOT_AVAILABLE - - - - ER_BASE64_DECODE_ERROR - - - - ER_EVENT_RECURSION_FORBIDDEN - - - - ER_EVENTS_DB_ERROR - - - - ER_ONLY_INTEGERS_ALLOWED - - - - ER_UNSUPORTED_LOG_ENGINE - - - - ER_BAD_LOG_STATEMENT - - - - ER_CANT_RENAME_LOG_TABLE - - - - ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_STORED_FCT - - - - ER_NATIVE_FCT_NAME_COLLISION - - - - ER_DUP_ENTRY_WITH_KEY_NAME - - - - ER_BINLOG_PURGE_EMFILE - - - - ER_EVENT_CANNOT_CREATE_IN_THE_PAST - - - - ER_EVENT_CANNOT_ALTER_IN_THE_PAST - - - - ER_REPLICA_INCIDENT - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT - - - - ER_BINLOG_UNSAFE_STATEMENT - - - - ER_REPLICA_FATAL_ERROR - - - - ER_REPLICA_RELAY_LOG_READ_FAILURE - - - - ER_REPLICA_RELAY_LOG_WRITE_FAILURE - - - - ER_REPLICA_CREATE_EVENT_FAILURE - - - - ER_REPLICA_SOURCE_COM_FAILURE - - - - ER_BINLOG_LOGGING_IMPOSSIBLE - - - - ER_VIEW_NO_CREATION_CTX - - - - ER_VIEW_INVALID_CREATION_CTX - - - - ER_SR_INVALID_CREATION_CTX - - - - ER_TRG_CORRUPTED_FILE - - - - ER_TRG_NO_CREATION_CTX - - - - ER_TRG_INVALID_CREATION_CTX - - - - ER_EVENT_INVALID_CREATION_CTX - - - - ER_TRG_CANT_OPEN_TABLE - - - - ER_CANT_CREATE_SROUTINE - - - - ER_REPLICA_AMBIGOUS_EXEC_MODE - - - - ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT - - - - ER_REPLICA_CORRUPT_EVENT - - - - ER_LOAD_DATA_INVALID_COLUMN - - - - ER_LOG_PURGE_NO_FILE - - - - ER_XA_RBTIMEOUT - - - - ER_XA_RBDEADLOCK - - - - ER_NEED_REPREPARE - - - - ER_DELAYED_NOT_SUPPORTED - - - - WARN_NO_SOURCE_INFO - - - - WARN_OPTION_IGNORED - - - - WARN_PLUGIN_DELETE_BUILTIN - - - - WARN_PLUGIN_BUSY - - - - ER_VARIABLE_IS_READONLY - - - - ER_WARN_ENGINE_TRANSACTION_ROLLBACK - - - - ER_REPLICA_HEARTBEAT_FAILURE - - - - ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE - - - - ER_NDB_REPLICATION_SCHEMA_ERROR - - - - ER_CONFLICT_FN_PARSE_ERROR - - - - ER_EXCEPTIONS_WRITE_ERROR - - - - ER_TOO_LONG_TABLE_COMMENT - - - - ER_TOO_LONG_FIELD_COMMENT - - - - ER_FUNC_INEXISTENT_NAME_COLLISION - - - - ER_DATABASE_NAME - - - - ER_TABLE_NAME - - - - ER_PARTITION_NAME - - - - ER_SUBPARTITION_NAME - - - - ER_TEMPORARY_NAME - - - - ER_RENAMED_NAME - - - - ER_TOO_MANY_CONCURRENT_TRXS - - - - WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED - - - - ER_DEBUG_SYNC_TIMEOUT - - - - ER_DEBUG_SYNC_HIT_LIMIT - - - - ER_ERROR_LAST - - - - ER_CLIENT_INTERACTION_TIMEOUT - - - - WriteInteger - - - - - - - Summary description for MySqlPool. - - - - - It is assumed that this property will only be used from inside an active - lock. - - - - - Indicates whether this pool is being cleared. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - Removes a connection from the in use pool. The only situations where this method - would be called are when a connection that is in use gets some type of fatal exception - or when the connection is being returned to the pool and it's too old to be - returned. - - - - - - Clears this pool of all idle connections and marks this pool and being cleared - so all other connections are closed when they are returned. - - - - - Remove expired drivers from the idle pool - - - - Closing driver is a potentially lengthy operation involving network - IO. Therefore we do not close expired drivers while holding - idlePool.SyncRoot lock. We just remove the old drivers from the idle - queue and return them to the caller. The caller will need to close - them (or let GC close them) - - - - - Summary description for MySqlPoolManager. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove drivers that have been idle for too long. - - - - - Remove hosts that have been on the demoted list for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Provides a class capable of executing a SQL script containing - multiple SQL statements including CREATE PROCEDURE statements - that require changing the delimiter - - - - - Handles the event raised whenever a statement is executed. - - - - - Handles the event raised whenever an error is raised by the execution of a script. - - - - - Handles the event raised whenever a script execution is finished. - - - - - Initializes a new instance of the - class. - - - - - Initializes a new instance of the - class. - - The connection. - - - - Initializes a new instance of the - class. - - The query. - - - - Initializes a new instance of the - class. - - The connection. - The query. - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the query. - - The query. - - - - Gets or sets the delimiter. - - The delimiter. - - - - Executes this instance. - - The number of statements executed as part of the script. - - - - Initiates the asynchronous execution of SQL statements. - - The number of statements executed as part of the script inside. - - - - Initiates the asynchronous execution of SQL statements. - - The cancellation token. - The number of statements executed as part of the script inside. - - - - Represents the method that will handle errors when executing MySQL statements. - - - - - Represents the method that will handle errors when executing MySQL scripts. - - - - - Sets the arguments associated to MySQL scripts. - - - - - Gets the statement text. - - The statement text. - - - - Gets the line. - - The line. - - - - Gets the position. - - The position. - - - - Sets the arguments associated to MySQL script errors. - - - - - Initializes a new instance of the class. - - The exception. - - - - Gets the exception. - - The exception. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignore; otherwise, false. - - - - Summary description for MySqlStream. - - - - - ReadPacket is called by NativeDriver to start reading the next - packet on the stream. - - - - - Reads the specified number of bytes from the stream and stores them at given - offset in the buffer. - Throws EndOfStreamException if not all bytes can be read. - - Stream to read from - Array to store bytes read from the stream - The offset in buffer at which to begin storing the data read from the current stream. - Number of bytes to read - - - - LoadPacket loads up and decodes the header of the incoming packet. - - - - - Traces information about the client execution. - - - - - Gets the list of trace listeners. - - - - - Gets or sets the switch to control tracing and debugging. - - - - - Gets or sets a flag indicating if query analysis is enabled. - - - - - Enables query analysis. - - The host on which to enable query analysis. - The interval of time for logging trace information. - - - - Disables query analysis. - - - - - Specifies the types of warning flags. - - - - - No index exists. - - - - - Bad index exists. - - - - - Rows have been excluded from the result. - - - - - Columns have been excluded from the result. - - - - - Type conversions took place. - - - - - Specifies the event that triggered the trace. - - - - - A connection has been opened. - - - - - A connection has been closed. - - - - - A query has been executed. - - - - - Data has been retrieved from the resultset. - - - - - Data retrieval has ended. - - - - - Query execution has ended. - - - - - The statement to be executed has been created. - - - - - The statement has been executed. - - - - - The statement is no longer required. - - - - - The query provided is of a nonquery type. - - - - - Usage advisor warnings have been requested. - - - - - Noncritical problem. - - - - - An error has been raised during data retrieval. - - - - - The query has been normalized. - - - - - Summary description for Driver. - - - - - Sets the current database for the this connection - - - - - - Return the appropriate set of connection flags for our - server capabilities and our user requested options. - - - - - Query is the method that is called to send all queries to the server - - - - - Verify that the file to upload is in a valid directory - according to the safe path entered by a user under - "AllowLoadLocalInfileInPath" connection option. - - File to validate against the safe path. - - - - Sends the specified file to the server. - This supports the LOAD DATA LOCAL INFILE - - - - - - FetchDataRow is the method that the data reader calls to see if there is another - row to fetch. In the non-prepared mode, it will simply read the next data packet. - In the prepared mode (statementId > 0), it will - - - - - Execution timeout, in milliseconds. When the accumulated time for network IO exceeds this value - TimeoutException is thrown. This timeout needs to be reset for every new command - - - - - - Summary description for PreparedStatement. - - - - - Prepares CommandText for use with the Prepare method - - Command text stripped of all paramter names - - Takes the output of TokenizeSql and creates a single string of SQL - that only contains '?' markers for each parameter. It also creates - the parameterMap array list that includes all the paramter names in the - order they appeared in the SQL - - - - - Defines a replication configurarion element in the configuration file. - - - - - Gets a collection of objects representing the server groups. - - - - - Defines a replication server group in the configuration file. - - - - - Gets or sets the name of the replication server group configuration. - - - - - Gets or sets the group type of the replication server group configuration. - - - - - Gets or sets the number of seconds to wait for retry. - - - - - Gets a collection of objects representing the - server configurations associated to this group configuration. - - - - - Defines a replication server in configuration file. - - - - - Gets or sets the name of the replication server configuration. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets the connection string associated to this replication server. - - - - - Manager for Replication and Load Balancing features - - - - - Returns Replication Server Group List - - - - - Adds a Default Server Group to the list - - Group name - Time between reconnections for failed servers - Replication Server Group added - - - - Adds a Server Group to the list - - Group name - ServerGroup type reference - Time between reconnections for failed servers - Server Group added - - - - Gets the next server from a replication group - - Group name - True if the server to return must be a source - Replication Server defined by the Load Balancing plugin - - - - Gets a Server Group by name - - Group name - Server Group if found, otherwise throws an MySqlException - - - - Validates if the replication group name exists - - Group name to validate - true if the replication group name is found; otherwise, false - - - - Assigns a new server driver to the connection object - - Group name - True if the server connection to assign must be a source - MySqlConnection object where the new driver will be assigned - - - - Class that implements Round Robing Load Balancing technique. - - - - - Gets an available server based on Round Robin load balancing. - - Flag indicating if the server to return must be a source. - A object representing the next available server. - - - - Represents a server in a Replication environment. - - - - - Gets the server name. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets the connection string used to connect to the server. - - - - - Gets a flag indicating if the server is available to be considered in load balancing. - - - - - Base class used to implement load balancing features. - - - - - List of servers available for replication. - - - - The group name. - The number of seconds to perform a retry. - - - - Gets the group name. - - - - - Gets the retry time between connections to failed servers. - - - - - Gets the server list in the group. - - - - - Adds a server into the group. - - The server name. - A flag indicating if the server to add is source or replica. - The connection string used by this server. - A object representing the recently added object. - - - - Removes a server from the group. - - The server name. - - - - Gets a server by name. - - The server name. - The replication server. - - - - Must be implemented. Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - Currently not being used. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Handles a failed connection to a server. - - The failed server. - This method can be overrided to implement a custom failover handling. - - - - Handles a failed connection to a server. - - The failed server. - The exception that caused the failover. - - - - return the ordinal for the given column name - - - - - - - Retrieve the value as the given column index - - The column value to retrieve - The value as the given column - - - - Closes the current resultset, dumping any data still on the wire - - - - - Loads the column metadata for the current resultset - - - - - Represents a schema and its contents. - - - - - Gets or sets the name of the schema. - - - - - Gets the list of columns in the schema. - - - - - Gets the list of rows in the schema. - - - - - Represents a row within a schema. - - - - - Represents a column within a schema. - - - - - The name of the column. - - - - - The type of the column. - - - - - GetForeignKeysOnTable retrieves the foreign keys on the given table. - Since MySQL supports foreign keys on versions prior to 5.0, we can't use - information schema. MySQL also does not include any type of SHOW command - for foreign keys so we have to resort to use SHOW CREATE TABLE and parsing - the output. - - The table to store the key info in. - The table to get the foeign key info for. - Only get foreign keys that match this name. - Should column information be included in the table. - - - - Builds the initial part of the COM_QUERY packet - - Collection of parameters - Collection of attributes - A - - - - Serializes the given parameter to the given memory stream - - - This method is called by PrepareSqlBuffers to convert the given - parameter to bytes and write those bytes to the given memory stream. - - - True if the parameter was successfully serialized, false otherwise. - - - - Summary description for StoredProcedure. - - - - - Defines the basic operations to be performed on the table cache. - - - - - The maximum age allowed for cache entries. - - - - - Adds the given command and result set to the cache. - - The command to store in the cache. - The resultset associated to the stored command. - - - - Retrieves the specified command from the cache. - - The command to retrieve. - The allowed age for the cache entry. - - - - - Removes the specified command from the cache. - - The command to remove from the cache. - - - - Clears the cache. - - - - - Removes cache entries older than the value defined by . - - - - - Stream that supports timeout of IO operations. - This class is used is used to support timeouts for SQL command, where a - typical operation involves several network reads/writes. - Timeout here is defined as the accumulated duration of all IO operations. - - - - - Construct a TimedStream - - Undelying stream - - - - Figure out whether it is necessary to reset timeout on stream. - We track the current value of timeout and try to avoid - changing it too often, because setting Read/WriteTimeout property - on network stream maybe a slow operation that involves a system call - (setsockopt). Therefore, we allow a small difference, and do not - reset timeout if current value is slightly greater than the requested - one (within 0.1 second). - - - - - Common handler for IO exceptions. - Resets timeout to infinity if timeout exception is - detected and stops the times. - - original exception - - - - Represents a SQL transaction to be made in a MySQL database. This class cannot be inherited. - - The application creates a MySqlTransaction object by calling - on the object. All subsequent operations associated with the - transaction (for example, committing or aborting the transaction), are performed on the - MySqlTransaction object. - - The following example creates a and a MySqlTransaction. - It also demonstrates how to use the , - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub 'RunTransaction - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Gets the object associated with the transaction, or a null reference (Nothing in Visual Basic) if the transaction is no longer valid. - - The object associated with this transaction. - - A single application may have multiple database connections, each - with zero or more transactions. This property enables you to - determine the connection object associated with a particular - transaction created by . - - - - - Specifies the for this transaction. - - - The for this transaction. The default is ReadCommitted. - - - Parallel transactions are not supported. Therefore, the IsolationLevel - applies to the entire transaction. - - - - - Commits the database transaction. - - The Commit method is equivalent to the MySQL SQL statement - COMMIT. - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Rolls back a transaction from a pending state. - - The Rollback method is equivalent to the MySQL statement ROLLBACK. - The transaction can only be rolled back from a pending state - (after BeginTransaction has been called, but before Commit is - called). - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Defines the type of the column. - - - - - GSS API constants - - - - - GSS_C_NT_HOSTBASED_SERVICE (1.2.840.113554.1.2.1.4) - - - - - GSS_KRB5_NT_PRINCIPAL_NAME (1.2.840.113554.1.2.2.1) - - - - - GSS_C_NT_USER_NAME (1.2.840.113554.1.2.1.1) - - - - - GSS_KRB5_MECH_OID_DESC (1.2.840.113554.1.2.2) - - - - - GSS_KRB5_MECH_OID_DESC Set - - - - - Defines a security context - - - - - Sets the main properties to create and initiate a security context. - - Service Principal Name. - Credentials. - Requested flags. - - - - Initiate the security context - - Challenge received by the server. - A byte array containing the response to be sent to the server - - - - Unwrap a message. - - Message acquired from the server. - Unwrapped message. - - - - Wrap a message. - - Message to be wrapped. - A byte array containing the wrapped message. - - - - Allocate a clr byte array and copy the token data over - - Buffer. - A byte array - - - - Cleanups unmanaged resources - - - - - No flags provided - - - - - Delegates credentials to a remote peer. Do not delegate the credentials if the value is false. - - - - - Requests that the peer authenticate itself. If false, authenticate to the remote peer only. - - - - - Enables replay detection for messages protected with gss_wrap(3GSS) or gss_get_mic(3GSS). Do not attempt to detect replayed messages if false. - - - - - Enables detection of out-of-sequence protected messages. Do not attempt to detect out-of-sequence messages if false. - - - - - Requests that confidential service be made available by means of gss_wrap(3GSS). If false, no per-message confidential service is required. - - - - - Requests that integrity service be made available by means of gss_wrap(3GSS) or gss_get_mic(3GSS). If false, no per-message integrity service is required. - - - - - Does not reveal the initiator's identify to the acceptor. Otherwise, authenticate normally. - - - - - (Returned only) If true, the protection services specified by the states of GSS_C_CONF_FLAG and GSS_C_INTEG_FLAG are available - if the accompanying major status return value is either GSS_S_COMPLETE or GSS_S_CONTINUE_NEEDED. If false, the protection services are available - only if the accompanying major status return value is GSS_S_COMPLETE. - - - - - (Returned only) If true, the resultant security context may be transferred to other processes by means of a call to gss_export_sec_context(3GSS). If false, the security context cannot be transferred. - - - - - Credentials to use to establish the context - - - - - Acquires credentials for the supplied principal using the supplied password - - Username - Password - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires credentials for the supplied principal using material stored in a valid keytab - - Username - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires default credentials stored in the cache - - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Translates a name in internal form to a textual representation. - - Name in internal form (GSSAPI). - - - - size_t->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - - Converts a contiguous string name to GSS_API internal format - The gss_import_name() function converts a contiguous string name to internal form. In general, - the internal name returned by means of the output_name parameter will not be a mechanism name; the exception to this is if the input_name_type - indicates that the contiguous string provided by means of the input_name_buffer parameter is of type GSS_C_NT_EXPORT_NAME, in which case, - the returned internal name will be a mechanism name for the mechanism that exported the name. - - Status code returned by the underlying mechanism. - The gss_buffer_desc structure containing the name to be imported. - A gss_OID that specifies the format that the input_name_buffer is in. - The gss_name_t structure to receive the returned name in internal form. Storage associated with this name must be freed by the application after use with a call to gss_release_name(). - - The gss_import_name() function may return the following status codes: - GSS_S_COMPLETE: The gss_import_name() function completed successfully. - GSS_S_BAD_NAMETYPE: The input_name_type was unrecognized. - GSS_S_BAD_NAME: The input_name parameter could not be interpreted as a name of the specified type. - GSS_S_BAD_MECH: The input_name_type was GSS_C_NT_EXPORT_NAME, but the mechanism contained within the input_name is not supported. - - - - - Allows an application to acquire a handle for a pre-existing credential by name. GSS-API implementations must impose a local access-control - policy on callers of this routine to prevent unauthorized callers from acquiring credentials to which they are not entitled. - This routine is not intended to provide a "login to the network" function, as such a function would involve the creation of new credentials - rather than merely acquiring a handle to existing credentials - - Mechanism specific status code. - Name of principal whose credential should be acquired. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Acquires a credential for use in establishing a security context using a password. - - Mechanism specific status code. - Name of principal whose credential should be acquired. - The password. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred_with_password() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Obtains information about a credential. - - Mechanism specific status code. - A handle that refers to the target credential. - The name whose identity the credential asserts. - The number of seconds for which the credential remain valid. - If the credential has expired, this parameter is set to zero. - How the credential may be used. - Set of mechanisms supported by the credential. - - gss_init_sec_context() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: The referenced credentials could not be accessed. - GSS_S_DEFECTIVE_CREDENTIAL: The referenced credentials were invalid. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - If the lifetime parameter is not passed in as NULL, then its value is set to 0. - - - - - Initiates the establishment of a security context between the application and a remote peer. - Initially, the input_token parameter should be specified either as GSS_C_NO_BUFFER, or as a pointer to a gss_buffer_desc object whose length field - contains the value zero. The routine may return a output_token which should be transferred to the peer application, where the peer application will - present it to gss_accept_sec_context. If no token need be sent, gss_init_sec_context will indicate this by setting the length field of the output_token - argument to zero. To complete the context establishment, one or more reply tokens may be required from the peer application; if so, gss_init_sec_context - will return a status containing the supplementary information bit GSS_S_CONTINUE_NEEDED. In this case, gss_init_sec_context should be called again when the - reply token is received from the peer application, passing the reply token to gss_init_sec_context via the input_token parameters. - - Mechanism specific status code. - Handle for credentials claimed. Supply GSS_C_NO_CREDENTIAL to act as a default initiator principal. - If no default initiator is defined, the function will return GSS_S_NO_CRED. - Context handle for new context. Supply GSS_C_NO_CONTEXT for first call; use value returned by first call in continuation calls. - Resources associated with this context-handle must be released by the application after use with a call to gss_delete_sec_context(). - Name of target. - Object ID of desired mechanism. Supply GSS_C_NO_OID to obtain an implementation specific default. - Contains various independent flags, each of which requests that the context support a specific service option. - Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be logically-ORed together to form the bit-mask value. - Desired number of seconds for which context should remain valid. Supply 0 to request a default validity period. - Application-specified bindings. Allows application to securely bind channel identification information to the security context. - Specify GSS_C_NO_CHANNEL_BINDINGS if channel bindings are not used. - Token received from peer application. Supply GSS_C_NO_BUFFER, or a pointer to a buffer containing the value GSS_C_EMPTY_BUFFER on initial call. - Actual mechanism used. The OID returned via this parameter will be a pointer to static storage that should be treated as read-only; - In particular the application should not attempt to free it. Specify NULL if not required. - Token to be sent to peer application. If the length field of the returned buffer is zero, no token need be sent to the peer application. - Storage associated with this buffer must be freed by the application after use with a call to gss_release_buffer(). - Contains various independent flags, each of which indicates that the context supports a specific service option. - Specify NULL if not required. Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be - logically-ANDed with the ret_flags value to test whether a given option is supported by the context. - Number of seconds for which the context will remain valid. If the implementation does not support context expiration, - the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_init_sec_context() may return the following status codes: - - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTINUE_NEEDED: A token from the peer application is required to complete the context, and gss_init_sec_context() must be called again with that token. - GSS_S_DEFECTIVE_TOKEN: Consistency checks performed on the input_token failed. - GSS_S_DEFECTIVE_CREDENTIAL: Consistency checks performed on the credential failed. - GSS_S_NO_CRED: The supplied credentials are not valid for context acceptance, or the credential handle does not reference any credentials. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - GSS_S_BAD_BINDINGS: The input_token contains different channel bindings than those specified by means of the input_chan_bindings parameter. - GSS_S_BAD_SIG: The input_token contains an invalid MIC or a MIC that cannot be verified. - GSS_S_OLD_TOKEN: The input_token is too old. This is a fatal error while establishing context. - GSS_S_DUPLICATE_TOKEN: The input_token is valid, but it is a duplicate of a token already processed.This is a fatal error while establishing context. - GSS_S_NO_CONTEXT: The supplied context handle does not refer to a valid context. - GSS_S_BAD_NAMETYPE: The provided target_name parameter contains an invalid or unsupported name type. - GSS_S_BAD_NAME: The supplied target_name parameter is ill-formed. - GSS_S_BAD_MECH: The token received specifies a mechanism that is not supported by the implementation or the provided credential. - - - - - Allows an application to obtain a textual representation of a GSS-API status code, for display to the user or for logging purposes. - Since some status values may indicate multiple conditions, applications may need to call gss_display_status multiple times, - each call generating a single text string. The message_context parameter is used by gss_display_status to store state information about which - error messages have already been extracted from a given status_value; message_context must be initialized to 0 by the application prior to the first call, - and gss_display_status will return a non-zero value in this parameter if there are further messages to extract. - - Mechanism specific status code. - Status value to be converted. - GSS_C_GSS_CODE - status_value is a GSS status code. GSS_C_MECH_CODE - status_value is a mechanism status code. - Underlying mechanism (used to interpret a minor status value). Supply GSS_C_NO_OID to obtain the system default. - Should be initialized to zero by the application prior to the first call. - On return from gss_display_status(), a non-zero status_value parameter indicates that additional messages may be extracted from the status code via - subsequent calls to gss_display_status(), passing the same status_value, status_type, mech_type, and message_context parameters. - Textual interpretation of the status_value. Storage associated with this parameter must be freed by the application - after use with a call to gss_release_buffer(). - - gss_display_status() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Indicates that translation in accordance with an unsupported mechanism type was requested. - GSS_S_BAD_STATUS: The status value was not recognized, or the status type was neither GSS_C_GSS_CODE nor GSS_C_MECH_CODE. - - - - - Allows an application to obtain a textual representation of an opaque internal-form name for display purposes. - The syntax of a printable name is defined by the GSS-API implementation. - - Mechanism specific status code. - Name to be displayed. - Buffer to receive textual name string. - The type of the returned name. - - gss_display_name() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: input_name was ill-formed. - - - - - Free storage associated with a buffer. The storage must have been allocated by a GSS-API routine. - In addition to freeing the associated storage, the routine will zero the length field in the descriptor to which the buffer parameter refers, - and implementations are encouraged to additionally set the pointer field in the descriptor to NULL. Any buffer object returned by a GSS-API routine - may be passed to gss_release_buffer (even if there is no storage associated with the buffer). - - Mechanism-specific status code. - The storage associated with the buffer will be deleted. The gss_buffer_desc object will not be freed, - but its length field will be zeroed. - - The gss_release_buffer() function may return the following status codes: - GSS_S_COMPLETE: Successful completion - - - - - Delete a security context. gss_delete_sec_context will delete the local data structures associated with the specified security context, - and may generate an output_token, which when passed to the peer gss_process_context_token will instruct it to do likewise. - If no token is required by the mechanism, the GSS-API should set the length field of the output_token (if provided) to zero. - No further security services may be obtained using the context specified by context_handle. - - Mechanism specific status code. - Context handle identifying context to delete. After deleting the context, - the GSS-API will set this context handle to GSS_C_NO_CONTEXT. - - The gss_delete_sec_context() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CONTEXT: No valid context was supplied. - - - - - Free GSSAPI-allocated storage associated with an internal-form name. The name is set to GSS_C_NO_NAME on successful completion of this call. - - Mechanism specific status code. - The name to be deleted. - - The gss_release_name() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: The name parameter did not contain a valid name. - - - - - Informs GSS-API that the specified credential handle is no longer required by the application, and frees associated resources. - The cred_handle is set to GSS_C_NO_CREDENTIAL on successful completion of this call. - - Mechanism specific status code. - Opaque handle identifying credential to be released. If GSS_C_NO_CREDENTIAL is supplied, - the routine will complete successfully, but will do nothing. - - The gss_release_cred() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: Credentials could not be accessed. - - - - - Converts a message previously protected by gss_wrap back to a usable form, verifying the embedded MIC. - The conf_state parameter indicates whether the message was encrypted; the qop_state parameter indicates the strength of - protection that was used to provide the confidentiality and integrity services. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Protected message. - Buffer to receive unwrapped message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_DEFECTIVE_TOKEN: The token failed consistency checks. - GSS_S_BAD_SIG: The MIC was incorrect. - GSS_S_DUPLICATE_TOKEN: The token was valid, and contained a correct MIC for the message, but it had already been processed. - GSS_S_OLD_TOKEN: The token was valid, and contained a correct MIC for the message, but it is too old to check for duplication. - GSS_S_UNSEQ_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - a later token has already been received. - GSS_S_GAP_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - an earlier expected token has not yet been received. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - - - - - Attaches a cryptographic MIC and optionally encrypts the specified input_message. The output_message contains both the MIC and the message. - The qop_req parameter allows a choice between several cryptographic algorithms, if supported by the chosen mechanism. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Message to be protected. - Buffer to receive protected message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - GSS_S_BAD_QOP: The specified QOP is not supported by the mechanism. - - - - - MIT Kerberos 5 GSS Bindings Linux - - - - - Automatic dynamic disposable - - - - - Automatic dynamic disposable storing - - - - - Automatic dynamic disposable storing , will be called at dispose - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Automatic dynamic disposable - - - - - Original value, can be used with ref - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Returns stored value - - - - - Gets the Kerberos configuration from the "krb5.conf/krb5.ini" file - - - - - Memory pinned object - - - - - Create memory pinned object from - - Any class type - Value to pin - Pinned value - - - - Memory pinned object - - Any class type - - - - Original object value, can be used with ref - - - - - In memory address of the object - - - - - Create memory pinned object from - - Value to pin - - - - Returns address of object in memory - - - - - Returns original object value - - - - - DNS resolver that runs queries against a server. - - - - - Initializes a new instance of the class. - - - - - Gets the DNS SVR records of the service name that is provided. - - A list of s sorted as described in RFC2782. - - - - Sorts a list of DNS SRV records according to the sorting rules described in RFC2782. - - List of s to sort. - A new list of sorted s. - - - - Resets the DnsSrvResolver - - - - - Class that represents a DNS SRV record. - RFC 2782 (https://tools.ietf.org/html/rfc2782) - - - - - Gets the port. - - - - - Gets the priority. - - - - - Gets the target domain name. - - - - - Gets the weight. - - - - - Initializes a new instance of class. - - The port. - The priority. - The target. - The weight. - - - - Initializes a new instance of class. - - The DNS SRV record. - - - - Compare two objects. First, using their priority and - if both have the same, then using their weights. - - A to compare. - A to compare. - - - - - Initializes a new instance of the class from a . - - The DNS SRV record. - - - - This class is modeled after .NET Stopwatch. It provides better - performance (no system calls).It is however less precise than - .NET Stopwatch, measuring in milliseconds. It is adequate to use - when high-precision is not required (e.g for measuring IO timeouts), - but not for other tasks. - - - - - Wrapper around NetworkStream. - - MyNetworkStream is equivalent to NetworkStream, except - 1. It throws TimeoutException if read or write timeout occurs, instead - of IOException, to match behavior of other streams (named pipe and - shared memory). This property comes handy in TimedStream. - - 2. It implements workarounds for WSAEWOULDBLOCK errors, that can start - occuring after stream has times out. For a discussion about the CLR bug, - refer to http://tinyurl.com/lhgpyf. This error should never occur, as - we're not using asynchronous operations, but apparerntly it does occur - directly after timeout has expired. - The workaround is hinted in the URL above and implemented like this: - For each IO operation, if it throws WSAEWOULDBLOCK, we explicitely set - the socket to Blocking and retry the operation once again. - - - - - Determines whether the connection state is closed or open. - - true if connection is closed; otherwise, false. - - - - Set keepalive + timeout on socket. - - socket - keepalive timeout, in seconds - - - - Read a single quoted identifier from the stream - - - - - - - Helper class to encapsulate shared memory functionality - Also cares of proper cleanup of file mapping object and cew - - - - - Summary description for SharedMemoryStream. - - - - - By creating a private ctor, we keep the compiler from creating a default ctor - - - - - Mark - or + signs that are unary ops as no output - - - - - - Handles SSL connections for the Classic and X protocols. - - - - - Contains the connection options provided by the user. - - - - - A flag to establish how certificates are to be treated and validated. - - - - - Defines the supported TLS protocols. - - - - - Retrieves a collection containing the client SSL PFX certificates. - - Dependent on connection string settings. - Either file or store based certificates are used. - - - - Initiates the SSL connection. - - The base stream. - The encoding used in the SSL connection. - The connection string used to establish the connection. - A instance ready to initiate an SSL connection. - - - - Verifies the SSL certificates used for authentication. - - An object that contains state information for this validation. - The MySQL server certificate used to authenticate the remote party. - The chain of certificate authorities associated with the remote certificate. - One or more errors associated with the remote certificate. - true if no errors were found based on the selected SSL mode; false, otherwise. - - - - Gets the extension of the specified file. - - The path of the file. - Flag to indicate if the result should be converted to lower case. - The . character is ommited from the result. - - - - - Summary description for StreamCreator. - - - - - Set the keepalive timeout on the socket. - - The socket object. - The keepalive timeout, in seconds. - - - - Summary description for Version. - - - - - Provides functionality to read SSL PEM certificates and to perform multiple validations via Bouncy Castle. - - - - - Raises an exception if the specified connection option is null, empty or whitespace. - - The connection option to verify. - The name of the connection option. - - - - Reads the specified file as a byte array. - - The path of the file to read. - A byte array representing the read file. - - - - Reads the SSL certificate file. - - The path to the certificate file. - A instance representing the SSL certificate file. - - - - Reads the SSL certificate key file. - - The path to the certificate key file. - A instance representing the SSL certificate key file. - - - - Verifies that the certificate has not yet expired. - - The certificate to verify. - - - - Verifies a certificate CA status. - - The certificate to validate. - A flag indicating the expected CA status. - - - - Verifies that the certificate was signed using the private key that corresponds to the specified public key - - The client side certificate containing the public key. - The server certificate. - - - - Verifies that no SSL policy errors regarding the identitfy of the host were raised. - - A instance set with the raised SSL errors. - - - - Verifies that the issuer matches the CA by comparing the CA certificate issuer and the server certificate issuer. - - The CA certificate. - The server certificate. - - - - - Gets and sets the host list. - - - - - Gets the active host. - - - - - Active host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - object that represents the next available host. - - - - Implements common elements that allow to manage the hosts available for client side failover. - - - - - Gets and sets the failover group which consists of a host list. - - - - - Resets the manager. - - - - - Sets the host list to be used during failover operations. - - The host list. - The failover method. - - - - Attempts to establish a connection to a host specified from the list. - - The original connection string set by the user. - An out parameter that stores the updated connection string. - A object in case this is a pooling scenario. - A flag indicating if the default port is used in the connection. - An instance if the connection was succesfully established, a exception is thrown otherwise. - - - - - Creates a if more than one host is found. - - A string containing an unparsed list of hosts. - true if the connection is X Protocol; otherwise false. - true if the connection data is a URI; otherwise false. - The number of hosts found, -1 if an error was raised during parsing. - - - - Creates a object based on the provided parameters. - - The host string that can be a simple host name or a host name and port. - The priority of the host. - The port number of the host. - true if the connection data is a URI; otherwise false. - - - - - Attempts the next host in the list. Moves to the first element if the end of the list is reached. - - - - - Determines the next host on which to attempt a connection by checking the value of the Priority property in descending order. - - - - - Determines the next host on which to attempt a connection randomly. - - - - - Depicts a host which can be failed over to. - - - - - Gets and sets the name or address of the host. - - - - - Gets and sets the port number. - - - - - Gets a value between 0 and 100 which represents the priority of the host. - - - - - Flag to indicate if this host is currently being used. - - - - - Flag to indicate if this host has been attempted to connection. - - - - - Time since the host has been demoted. - - - - - Initializes a object. - - The host. - The port. - The priority. - - - - Compares two objects of type . - - FailoverServer object to compare. - True if host properties are the same. Otherwise, false. - - - - Manages the hosts available for client side failover using the Random Failover method. - The Random Failover method attempts to connect to the hosts specified in the list randomly until all the hosts have been attempted. - - - - - The initial host taken from the list. - - - - - The host for the current connection attempt. - - - - - Random object to get the next host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - Manages the hosts available for client side failover using the Sequential Failover method. - The Sequential Failover method attempts to connect to the hosts specified in the list one after another until the initial host is reached. - - - - - The initial host taken from the list. - - - - - The index of the current host. - - - - - The host for the current connection attempt. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter is null. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter's SelectCommand is null. - - - - - Looks up a localized string similar to Invalid attempt to access a field before calling Read(). - - - - - Looks up a localized string similar to Authentication to host '{0}' for user '{1}' using method '{2}' failed with message: {3}. - - - - - Looks up a localized string similar to Authentication method '{0}' not supported by any of the available plugins.. - - - - - Looks up a localized string similar to Authentication plugin '{0}' is currently not supported.. - - - - - Looks up a localized string similar to Version string not in acceptable format. - - - - - Looks up a localized string similar to The buffer cannot be null. - - - - - Looks up a localized string similar to The buffer is not large enough. - - - - - Looks up a localized string similar to Canceling an executing query requires MySQL 5.0 or higher.. - - - - - Looks up a localized string similar to Canceling an active query is only supported on MySQL 5.0.0 and above. . - - - - - Looks up a localized string similar to Parameters can only be derived for commands using the StoredProcedure command type.. - - - - - Looks up a localized string similar to MySqlCommandBuilder does not support multi-table statements. - - - - - Looks up a localized string similar to MySqlCommandBuilder cannot operate on tables with no unique or key columns. - - - - - Looks up a localized string similar to Chaos isolation level is not supported . - - - - - Looks up a localized string similar to Clear-password authentication is not supported over insecure channels.. - - - - - Looks up a localized string similar to The CommandText property has not been properly initialized.. - - - - - Looks up a localized string similar to Compression is not supported.. - - - - - Looks up a localized string similar to The connection is already open.. - - - - - Looks up a localized string similar to Connection unexpectedly terminated.. - - - - - Looks up a localized string similar to Connection must be valid and open. - - - - - Looks up a localized string similar to The connection is not open.. - - - - - Looks up a localized string similar to The connection property has not been set or is null.. - - - - - Looks up a localized string similar to Could not find specified column in results: {0}. - - - - - Looks up a localized string similar to Count cannot be negative. - - - - - Looks up a localized string similar to SetLength is not a valid operation on CompressedStream. - - - - - Looks up a localized string similar to The given value was not in a supported format.. - - - - - Looks up a localized string similar to There is already an open DataReader associated with this Connection which must be closed first.. - - - - - Looks up a localized string similar to The default connection encoding was not found. Please report this as a bug along with your connection string and system details.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not currently support distributed transactions.. - - - - - Looks up a localized string similar to Specifying multiple host names with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Specifying a port number with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Using Unix domain sockets with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Unable to locate any hosts for {0}.. - - - - - Looks up a localized string similar to Connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to SSL connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to Encoding error during validation.. - - - - - Looks up a localized string similar to Error creating socket connection. - - - - - Looks up a localized string similar to Verify that user '{0}'@'{1}' has enough privileges to execute.. - - - - - Looks up a localized string similar to Fatal error encountered during command execution.. - - - - - Looks up a localized string similar to Fatal error encountered during data read.. - - - - - Looks up a localized string similar to Fatal error encountered attempting to read the resultset.. - - - - - Looks up a localized string similar to File based certificates are only supported when connecting to MySQL Server 5.1 or greater.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a certificate.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a key.. - - - - - Looks up a localized string similar to Failed to read file at the specified location.. - - - - - Looks up a localized string similar to No file path has been provided for the connection option {0}.. - - - - - Looks up a localized string similar to From index and length use more bytes than from contains. - - - - - Looks up a localized string similar to From index must be a valid index inside the from buffer. - - - - - Looks up a localized string similar to Call to GetHostEntry failed after {0} while querying for hostname '{1}': SocketErrorCode={2}, ErrorCode={3}, NativeErrorCode={4}.. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from server.. - - - - - Looks up a localized string similar to Value has an unsupported format.. - - - - - Looks up a localized string similar to An incorrect response was received from the server.. - - - - - Looks up a localized string similar to Index and length use more bytes than to has room for. - - - - - Looks up a localized string similar to Index must be a valid position in the buffer. - - - - - Looks up a localized string similar to The provided key is invalid.. - - - - - Looks up a localized string similar to Certificate with Thumbprint '{0}' not found.. - - - - - Looks up a localized string similar to You have specified an invalid column ordinal.. - - - - - Looks up a localized string similar to The requested value '{0}' is invalid for the given keyword '{1}'.. - - - - - Looks up a localized string similar to The host name or IP address is invalid.. - - - - - Looks up a localized string similar to Microsecond must be a value between 0 and 999999.. - - - - - Looks up a localized string similar to Millisecond must be a value between 0 and 999. For more precision use Microsecond.. - - - - - Looks up a localized string similar to No other SSL options are accepted when SSL Mode is set to None.. - - - - - Looks up a localized string similar to Either provide a valid path for 'allowloadlocalinfileinpath' or enable 'allowloadlocalinfile'.. - - - - - Looks up a localized string similar to Procedure or function '{0}' cannot be found in database '{1}'.. - - - - - Looks up a localized string similar to The certificate is invalid.. - - - - - Looks up a localized string similar to Unable to validate the signature.. - - - - - Looks up a localized string similar to Unable to verify the signature.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to Option "tls-version" can not be specified when SSL connections are disabled.. - - - - - Looks up a localized string similar to '{0}' not recognized as a valid TLS protocol version (should be one of TLSv1, TLSv1.1, TLSv1.2{1}).. - - - - - Looks up a localized string similar to '{0}' is an illegal value for a boolean option.. - - - - - Looks up a localized string similar to Keyword does not allow null values.. - - - - - Looks up a localized string similar to Option not supported.. - - - - - Looks up a localized string similar to Server asked for stream in response to LOAD DATA LOCAL INFILE, but the functionality is disabled by the client setting 'allowlocalinfile' to 'false'.. - - - - - Looks up a localized string similar to Mixing named and unnamed parameters is not allowed.. - - - - - Looks up a localized string similar to INTERNAL ERROR: More than one output parameter row detected.. - - - - - Looks up a localized string similar to Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.. - - - - - Looks up a localized string similar to NamedPipeStream does not support seeking. - - - - - Looks up a localized string similar to NamedPipeStream doesn't support SetLength. - - - - - Looks up a localized string similar to The new value must be a MySqlParameter object.. - - - - - Looks up a localized string similar to Invalid attempt to call NextResult when the reader is closed.. - - - - - Looks up a localized string similar to When calling stored procedures and 'Use Procedure Bodies' is false, all parameters must have their type explicitly set.. - - - - - Looks up a localized string similar to Nested transactions are not supported.. - - - - - Looks up a localized string similar to The host {0} does not support SSL connections.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows.. - - - - - Looks up a localized string similar to Cannot retrieve Windows identity for current user. Connections that use IntegratedSecurity cannot be pooled. Use either 'ConnectionReset=true' or 'Pooling=false' in the connection string to fix.. - - - - - Looks up a localized string similar to The object is not open or has been disposed.. - - - - - Looks up a localized string similar to The offset cannot be negative. - - - - - Looks up a localized string similar to Offset must be a valid position in buffer. - - - - - Looks up a localized string similar to Authentication with old password no longer supported, use 4.1 style passwords.. - - - - - Looks up a localized string similar to The option '{0}' is not currently supported.. - - - - - Looks up a localized string similar to Parameter '{0}' has already been defined.. - - - - - Looks up a localized string similar to Parameter cannot have a negative value. - - - - - Looks up a localized string similar to Parameter cannot be null. - - - - - Looks up a localized string similar to Parameter '{0}' can't be null or empty.. - - - - - Looks up a localized string similar to Parameter index was not found in Parameter Collection.. - - - - - Looks up a localized string similar to Parameter is invalid.. - - - - - Looks up a localized string similar to Parameter '{0}' must be defined.. - - - - - Looks up a localized string similar to Parameter '{0}' was not found during prepare.. - - - - - Looks up a localized string similar to Parameter can't be null or empty.. - - - - - Looks up a localized string similar to Password must be valid and contain length characters. - - - - - Looks up a localized string similar to This category includes a series of counters for MySQL. - - - - - Looks up a localized string similar to .NET Data Provider for MySQL. - - - - - Looks up a localized string similar to The number of times a procedures metadata had to be queried from the server.. - - - - - Looks up a localized string similar to Hard Procedure Queries. - - - - - Looks up a localized string similar to The number of times a procedures metadata was retrieved from the client-side cache.. - - - - - Looks up a localized string similar to Soft Procedure Queries. - - - - - Looks up a localized string similar to same name are not supported.. - - - - - Looks up a localized string similar to MySQL Server {0} dos not support query attributes.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not support query attributes with prepared statements for this version of MySQL Server.. - - - - - Looks up a localized string similar to Packets larger than max_allowed_packet are not allowed.. - - - - - Looks up a localized string similar to Reading from the stream has failed.. - - - - - Looks up a localized string similar to Invalid attempt to read a prior column using SequentialAccess. - - - - - Looks up a localized string similar to Replicated connections allow only readonly statements.. - - - - - Looks up a localized string similar to Attempt to connect to '{0}' server failed.. - - - - - Looks up a localized string similar to No available server found.. - - - - - Looks up a localized string similar to Replication group '{0}' not found.. - - - - - Looks up a localized string similar to Replicated server not found: '{0}'. - - - - - Looks up a localized string similar to Routine '{0}' cannot be found. Either check the spelling or make sure you have sufficient rights to execute the routine.. - - - - - Looks up a localized string similar to Attempt to call stored function '{0}' without specifying a return parameter. - - - - - Looks up a localized string similar to Retrieval of the RSA public key is not enabled for insecure connections.. - - - - - Looks up a localized string similar to Connector/NET no longer supports server versions prior to 5.0. - - - - - Looks up a localized string similar to Snapshot isolation level is not supported.. - - - - - Looks up a localized string similar to Socket streams do not support seeking. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from procedure cache.. - - - - - Looks up a localized string similar to Stored procedures are not supported on this version of MySQL. - - - - - Looks up a localized string similar to The certificate authority (CA) does not match.. - - - - - Looks up a localized string similar to The host name does not match the name on the certificate.. - - - - - Looks up a localized string similar to The certificate is not a certificate authority (CA).. - - - - - Looks up a localized string similar to SSL Connection error.. - - - - - Looks up a localized string similar to Connection protocol '{0}' does not support SSL connections.. - - - - - Looks up a localized string similar to The stream has already been closed. - - - - - Looks up a localized string similar to The stream does not support reading. - - - - - Looks up a localized string similar to The stream does not support writing. - - - - - Looks up a localized string similar to String can't be empty.. - - - - - Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. - - - - - Looks up a localized string similar to error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} seconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to This connection is using {0}, which is now deprecated and will be removed in a future release of Connector/NET.. - - - - - Looks up a localized string similar to TLSv1.3 is supported in .NET Framework 4.8 or .NET Core 3.0.. - - - - - Looks up a localized string similar to No supported TLS protocol version found in the 'tls-versions' list.. - - - - - Looks up a localized string similar to {0}: Connection Closed. - - - - - Looks up a localized string similar to Unable to trace. There are more than Int32.MaxValue connections in use.. - - - - - Looks up a localized string similar to {0}: Error encountered during row fetch. Number = {1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Connection Opened: connection string = '{1}'. - - - - - Looks up a localized string similar to {0}: Error encountered attempting to open result: Number={1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Query Closed. - - - - - Looks up a localized string similar to {0}: Query Normalized: {2}. - - - - - Looks up a localized string similar to {0}: Query Opened: {2}. - - - - - Looks up a localized string similar to {0}: Resultset Opened: field(s) = {1}, affected rows = {2}, inserted id = {3}. - - - - - Looks up a localized string similar to {0}: Resultset Closed. Total rows={1}, skipped rows={2}, size (bytes)={3}. - - - - - Looks up a localized string similar to {0}: Set Database: {1}. - - - - - Looks up a localized string similar to {0}: Statement closed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement executed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement prepared: sql='{1}', statement id={2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query is using a bad index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The field '{2}' was converted to the following types: {3}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query does not use an index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The following columns were not accessed: {2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Skipped {2} rows. Consider a more focused query.. - - - - - Looks up a localized string similar to {0}: MySql Warning: Level={1}, Code={2}, Message={3}. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseCommandInterceptor. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseExceptionInterceptor. - - - - - Looks up a localized string similar to Unable to connect to any of the specified MySQL hosts.. - - - - - Looks up a localized string similar to Unable to create plugin for authentication method '{0}'. Please see inner exception for details.. - - - - - Looks up a localized string similar to Unable to derive stored routine parameters. The 'Parameters' information schema table is not available and access to the stored procedure body has been disabled.. - - - - - Looks up a localized string similar to Unable to enable query analysis. Be sure the MySql.Data.EMTrace assembly is properly located and registered.. - - - - - Looks up a localized string similar to An error occured attempting to enumerate the user-defined functions. Do you have SELECT privileges on the mysql.func table?. - - - - - Looks up a localized string similar to Unable to execute stored procedure '{0}'.. - - - - - Looks up a localized string similar to There was an error parsing the foreign key definition.. - - - - - Looks up a localized string similar to Error encountered reading the RSA public key.. - - - - - Looks up a localized string similar to Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string.. - - - - - Looks up a localized string similar to Unable to start a second async operation while one is running.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows. - - - - - Looks up a localized string similar to Unknown authentication method '{0}' was requested.. - - - - - Looks up a localized string similar to Unknown connection protocol. - - - - - Looks up a localized string similar to Trying to upload a file from outside the path set on 'allowloadlocalinfileinpath' is invalid.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to The requested column value could not be treated as or conveted to a Guid.. - - - - - Looks up a localized string similar to Windows authentication connections are not supported on {0}. - - - - - Looks up a localized string similar to Writing to the stream failed.. - - - - - Looks up a localized string similar to Parameter '{0}' is not found but a parameter with the name '{1}' is found. Parameter names must include the leading parameter marker.. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Appdata path is not defined.. - - - - - Looks up a localized string similar to Authentication failed using MYSQL41 and SHA256_MEMORY. Check the user name and password or try using a secure connection.. - - - - - Looks up a localized string similar to You can't get more sessions because Client is closed.. - - - - - Looks up a localized string similar to Client option '{0}' does not support value '{1}'.. - - - - - Looks up a localized string similar to Client option '{0}' is not recognized as valid.. - - - - - Looks up a localized string similar to {0} '{1}' does not exist in schema '{2}'.. - - - - - Looks up a localized string similar to Compression requested but the compression algorithm negotiation failed.. - - - - - Looks up a localized string similar to Compression using {0} is not supported.. - - - - - Looks up a localized string similar to Failed to load libzstd.dll. Removing zstd_stream from the client supported compression algorithms.. - - - - - Looks up a localized string similar to Compression using {0} is not supported in .NET Framework.. - - - - - Looks up a localized string similar to The connection property 'compression' acceptable values are: 'preferred', 'required' or 'disabled'. The value '{0}' is not acceptable.. - - - - - Looks up a localized string similar to Compression is not enabled.. - - - - - Looks up a localized string similar to Compression requested but the server does not support it.. - - - - - Looks up a localized string similar to There are still decompressed messages pending to be processed.. - - - - - Looks up a localized string similar to '{0}' cannot be set to false with DNS SRV lookup enabled.. - - - - - Looks up a localized string similar to Scheme '{0}' is not valid.. - - - - - Looks up a localized string similar to Duplicate key '{0}' used in "connection-attributes".. - - - - - Looks up a localized string similar to Key name in connection attribute cannot be an empty string.. - - - - - Looks up a localized string similar to At least one option must be specified.. - - - - - Looks up a localized string similar to This feature is currently not supported.. - - - - - Looks up a localized string similar to This functionality is only supported in MySQL {0} and higher.. - - - - - Looks up a localized string similar to Collation with id '{0}' not found.. - - - - - Looks up a localized string similar to The value of "connection-attributes" must be either a boolean or a list of key-value pairs.. - - - - - Looks up a localized string similar to Connection Data is incorrect.. - - - - - Looks up a localized string similar to The connection string is invalid.. - - - - - Looks up a localized string similar to '{0}' is not a valid connection string attribute.. - - - - - Looks up a localized string similar to The connection timeout value must be a positive integer (including 0).. - - - - - Looks up a localized string similar to Decimal (BCD) format is invalid.. - - - - - Looks up a localized string similar to Field type with name '{0}' not found.. - - - - - Looks up a localized string similar to Index type with name '{0}' not found.. - - - - - Looks up a localized string similar to The value provided is not a valid JSON document. {0}. - - - - - Looks up a localized string similar to {0} is not a valid column name in the row.. - - - - - Looks up a localized string similar to {0} is not a valid index for the row.. - - - - - Looks up a localized string similar to Session state is not valid.. - - - - - Looks up a localized string similar to Invalid Uri . - - - - - Looks up a localized string similar to Invalid uri query value. - - - - - Looks up a localized string similar to Key names in "connection-attributes" cannot start with "_".. - - - - - Looks up a localized string similar to Json configuration must contain 'uri' or 'host' but not both.. - - - - - Looks up a localized string similar to Keyword '{0}' not found.. - - - - - Looks up a localized string similar to Keyword not supported.. - - - - - Looks up a localized string similar to Field '{0}' is mandatory.. - - - - - Looks up a localized string similar to Missed required schema option.. - - - - - Looks up a localized string similar to More than one document id was generated. Please use the DocumentIds property instead.. - - - - - Looks up a localized string similar to There is no data at index {0}. - - - - - Looks up a localized string similar to No 'host' has been specified.. - - - - - Looks up a localized string similar to No more data in resultset.. - - - - - Looks up a localized string similar to Object '{0}' not found. - - - - - Looks up a localized string similar to No placeholders.. - - - - - Looks up a localized string similar to Connection closed. Reason: connection idle was too long. - - - - - Looks up a localized string similar to Connection closed. Reason: connection was killed by a different session. - - - - - Looks up a localized string similar to Connection closed. Reason: server was shutdown. - - - - - Looks up a localized string similar to {0} must be a value greater than 0.. - - - - - Looks up a localized string similar to Path not found '{0}'.. - - - - - Looks up a localized string similar to Queue timeout expired. The timeout period elapsed prior to getting a session from the pool.. - - - - - Looks up a localized string similar to Providing a port number as part of the host address isn't supported when using connection strings in basic format or anonymous objects. Use URI format instead.. - - - - - Looks up a localized string similar to You must either assign no priority to any of the hosts or give a priority for every host.. - - - - - Looks up a localized string similar to The priority must be between 0 and 100.. - - - - - Looks up a localized string similar to ProgramData path is not defined.. - - - - - Looks up a localized string similar to Replacement document has an '_id' that is - different from the matched document.. - - - - - Looks up a localized string similar to The server doesn't support the requested operation. Please update the MySQL Server, client library, or both.. - - - - - Looks up a localized string similar to The process of closing the resultset and resulted in results being lost.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} milliseconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout was exceeded for each selected server.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout of {0} milliseconds was exceeded.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout was exceeded.. - - - - - Looks up a localized string similar to Unable to connect to any specified host.. - - - - - Looks up a localized string similar to Unable to read or decode data value.. - - - - - Looks up a localized string similar to Unable to open a session.. - - - - - Looks up a localized string similar to Unexpected end of packet found while reading data values. - - - - - Looks up a localized string similar to Field name '{0}' is not allowed.. - - - - - Looks up a localized string similar to Unknown placeholder :{0}. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Summary description for MySqlUInt64. - - - - - An exception thrown by MySQL when a type conversion does not succeed. - - - - Initializes a new instance of the class with a specified error message. - Message describing the error. - - - - Represents a datetime data type object in a MySql database. - - - - - Defines whether the UTF or local timezone will be used. - - - - - Constructs a new MySqlDateTime object by setting the individual time properties to - the given values. - - The year to use. - The month to use. - The day to use. - The hour to use. - The minute to use. - The second to use. - The microsecond to use. - - - - Constructs a new MySqlDateTime object by using values from the given object. - - The object to copy. - - - - Constructs a new MySqlDateTime object by copying the current value of the given object. - - The MySqlDateTime object to copy. - - - - Enables the contruction of a MySqlDateTime object by parsing a string. - - - - - Indicates if this object contains a value that can be represented as a DateTime - - - - Returns the year portion of this datetime - - - Returns the month portion of this datetime - - - Returns the day portion of this datetime - - - Returns the hour portion of this datetime - - - Returns the minute portion of this datetime - - - Returns the second portion of this datetime - - - - Returns the milliseconds portion of this datetime - expressed as a value between 0 and 999 - - - - - Returns the microseconds portion of this datetime (6 digit precision) - - - - - Returns true if this datetime object has a null value - - - - - Retrieves the value of this as a DateTime object. - - - - Returns this value as a DateTime - - - Returns a MySQL specific string representation of this value - - - - - - - - - Represents a decimal data type object in a MySql database. - - - - - Gets a boolean value signaling if the type is null. - - - - - Gets or sets the decimal precision of the type. - - - - - Gets or sets the scale of the type. - - - - - Gets the decimal value associated to this type. - - - - - Converts this decimal value to a double value. - - The value of this type converted to a dobule value. - - - - Represents a geometry data type object in a MySql database. - - - - - Gets the x coordinate. - - - - - Gets the y coordinate. - - - - - Gets the SRID value. - - - - - Gets a boolean value that signals if the type is null. - - - - - Gets the value associated to this type. - - - - - Gets the value associated to this type. - - - - Returns the Well-Known Text representation of this value - POINT({0} {1})", longitude, latitude - http://dev.mysql.com/doc/refman/4.1/en/gis-wkt-format.html - - - - Get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - - - - Try to get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - Out mysqlGeometryValue - - - - Sets the DSInfo when GetSchema is called for the DataSourceInformation collection. - - - - - Gets the well-known text representation of the geomtry object. - - A string representation of the WKT. - - - - Enables X Protocol packets from the network stream to be retrieved and processed - - - - - The instance of the stream that holds the network connection with MySQL Server. - - - - - This field is used to enable compression and decompression actions in the communication channel. - - - - - A Queue to store the pending packets removed from the - - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - The XCompressionController to be used for compression actions. - - - - Identifies the kind of packet received over the network and execute - the corresponding processing. - - - - - Reads data from the network stream and create a packet of type . - - A . - - - - Sends the read/write actions to the MyNetworkStream class. - - - - - Reads the pending packets present in the network channel and processes them accordingly. - - - - - Implementation of EXTERNAL authentication type. - - - - - Implementation of MySQL41 authentication type. - - - - - Implementation of PLAIN authentication type. - - - - - Compares two Guids in string format. - - The first string to compare. - The first string to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Compares two objects. - - The first to compare. - The second to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Provides functionality for loading unmanaged libraries. - - - - - Loads the specified unmanaged library from the embedded resources. - - The application name. - The library name. - - - - Provides support for configuring X Protocol compressed messages. - - - - - The capabilities sub-key used to specify the compression algorithm. - - - - - The capabilities key used to specify the compression capability. - - - - - Messages with a value lower than this threshold will not be compressed. - - - - - Default value for enabling or disabling combined compressed messages. - - - - - Default value for the maximum number of combined compressed messages contained in a compression message. - - - - - The capabilities sub-key used to specify if combining compressed messages is permitted. - - - - - The capabilities sub-key used to specify the maximum number of compressed messages contained in a compression message. - - - - - Buffer used to store the data received from the server. - - - - - Deflate stream used for compressing data. - - - - - Deflate stream used for decompressing data. - - - - - Flag indicating if the initialization is for compression or decompression. - - - - - Stores the communication packet generated the last time ReadNextBufferedMessage method was called. - - - - - Indicates if the libzstd.dll has been loaded. - - - - - Stream used to store multiple X Protocol messages. - - - - - ZStandard stream used for decompressing data. - - - - - Main constructor used to set the compression algorithm and initialize the list of messages to - be compressed by the client. - - The compression algorithm to use. - Flag indicating if the initialization is for compression or decompression. - - - - Gets or sets the list of messages that should be compressed by the client when compression is enabled. - - - - - Gets or sets the compression algorithm. - - - - - Flag indicating if compression is enabled. - - - - - Flag indicating if the last decompressed message contains multiple messages. - - - - - General method used to compress data using the compression algorithm defined in the constructor. - - The data to compress. - A compressed byte array. - - - - Compresses data using the deflate_stream algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the lz4_message algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the zstd_stream algorithm. - - The data to compress. - A compressed byte array. - - - - General method used to decompress data using the compression algorithm defined in the constructor. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the deflate_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the lz4_message compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the zstd_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Closes and disposes of any open streams. - - - - - Gets the byte array representing the next X Protocol frame that is stored in cache. - - A byte array representing an X Protocol frame. - - - - Gets a representing the next X Protocol frame that is stored in cache. - - A with the next X Protocol frame. - - - - Loads the libzstd.dll assembly. - - - - - Constructor that sets the stream used to read or write data. - - The stream used to read or write data. - - - - Constructor that sets the stream used to read or write data and the compression controller. - - The stream used to read or write data. - The compression controller. - - - - Gets or sets the compression controller uses to manage compression operations. - - - - - Writes X Protocol frames to the X Plugin. - - The integer representation of the client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Writes X Protocol frames to the X Plugin. - - The client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Reads X Protocol frames incoming from the X Plugin. - - A instance representing the X Protocol frame that was read. - - - - Abstract class for the protocol base operations in client/server communication. - - - - - Expression parser for MySQL-X protocol. - - - string being parsed. - - - Token stream produced by lexer. - - - Parser's position in token stream. - - - Mapping of names to positions for named placeholders. Used for both string values ":arg" and numeric values ":2". - - - Number of positional placeholders. - - - Are relational columns identifiers allowed? - - - Token types used by the lexer. - - - Token. Includes type and string value of the token. - - - Mapping of reserved words to token types. - - - Does the next character equal the given character? (respects bounds) - - - Helper function to match integer or floating point numbers. This function should be called when the position is on the first character of the number (a - digit or '.'). - - @param i The current position in the string - @return the next position in the string after the number. - - - Lexer for MySQL-X expression language. - - - Assert that the token at pos is of type type. - - - Does the current token have type `t'? - - - Does the next token have type `t'? - - - Does the token at position `pos' have type `t'? - - - Consume token. - - @return the string value of the consumed token - - - Parse a paren-enclosed expression list. This is used for function params or IN params. - - @return a List of expressions - - - Parse a function call of the form: IDENTIFIER PAREN_EXPR_LIST. - - @return an Expr representing the function call. - - - Parse an identifier for a function call: [schema.]name - - - Parse a document path member. - - - Parse a document path array index. - - - Parse a JSON-style document path, like WL#7909, but prefix by @. instead of $. - - - Parse a document field. - - - Parse a column identifier (which may optionally include a JSON document path). - - - Build a unary operator expression. - - - Parse an atomic expression. (c.f. grammar at top) - - - Parse a left-associated binary operator. - - @param types - The token types that denote this operator. - @param innerParser - The inner parser that should be called to parse operands. - @return an expression tree of the binary operator or a single operand - - - Parse the entire string as an expression. - - @return an X-protocol expression tree - - - - Parse an ORDER BY specification which is a comma-separated list of expressions, each may be optionally suffixed by ASC/DESC. - - - Parse a SELECT projection which is a comma-separated list of expressions, each optionally suffixed with a target alias. - - - Parse an INSERT field name. - @todo unit test - - - Parse an UPDATE field which can include can document paths. - - - Parse a document projection which is similar to SELECT but with document paths as the target alias. - - - Parse a list of expressions used for GROUP BY. - - - @return the number of positional placeholders in the expression. - - - @return a mapping of parameter names to positions. - - - Proto-buf helper to build a LITERAL Expr with a Scalar NULL type. - - - Proto-buf helper to build a LITERAL Expr with a Scalar DOUBLE type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar SINT (signed int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar UINT (unsigned int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar STRING type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar OCTETS type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar BOOL type (wrapped in Any). - - - Wrap an Any value in a LITERAL expression. - - - Build an Any with a string value. - - - - Parses an anonymous object into a dictionary. - - The object to parse. - A dictionary if the provided object is an anonymous object; otherwise, null. - - - List of operators which will be serialized as infix operators. - - - Scalar to string. - - - JSON document path to string. - - - Column identifier (or JSON path) to string. - - - Function call to string. - - - Create a string from a list of (already stringified) parameters. Surround by parens and separate by commas. - - - Convert an operator to a string. Includes special cases for chosen infix operators (AND, OR) and special forms such as LIKE and BETWEEN. - - - Escape a string literal. - - - Quote a named identifer. - - - Serialize an expression to a string. - - - - Build the message to be sent to MySQL Server to execute statement "Create" or "Modify" collection with schema options - - The namespace - The name of the command to be executed on MySql Server - Array of KeyValuePairs with the parameters required to build the message - void. - - - - Sends the delete documents message - - - - - Sends the CRUD modify message - - - - - Class implementation for a default communication kind. - - - - - Constructor method for the communication routing service - - A MySqlXConnectionStringBuilder setted with the information to use in the connection - - - - Gets the current connection base on the connection mode - - One of the values of ConnectionMode Offline, ReadOnly, WriteOnly, ReadWrite - - - - - Abstract class used to define the kind of server in environments with multiple types of distributed systems. - - - - - Main class for parsing json strings. - - - - - Initializes a new instance of the JsonParser class. - - - - - Parses the received string into a dictionary. - - The string to parse. - A object that represents the parsed string. - - - - Abstract class to manage and encapsulate one or more actual connections. - - - - - Creates a new session object with the values of the settings parameter. - - Settings to be used in the session object - - - - Sets the connection's charset default collation. - - The opened session. - The character set. - - - - Gets the version of the server. - - An instance of containing the server version. - - - - Gets the thread Id of the connection. - - Thread Id - - - - Implementation class for object that manages low-level work of queuing tasks onto threads. - - - - - Implementation class of InternalSession to manage connections using the Xprotocol type object. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Reorder the list of algorithms retrieved from server to the preferred order - - - - - Validate the algorithms given in the connection string are valid compared with enum CompressionAlgorithms - - - - - Negotiates compression capabilities with the server. - - An array containing the compression algorithms supported by the server. - An array containing the compression algorithms given by user/client. - - - - Prepare the dictionary of arguments required to create a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Prepare the dictionary of arguments required to Modify a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to Modify the collection. - - - - - Gets the compression algorithm being used to compress or decompress data. - - Flag to indicate if the compression algorithm should be - retrieved from the reader or writer controller. - The name of the compression algorithm being used if any. - null if no compression algorithm is being used. - - - - Represents a base class for a Session. - - - - - Flag to set if prepared statements are supported. - - - - - Gets the connection settings for this session. - - - - - Gets the currently active schema. - - - - - Gets the default schema provided when creating the session. - - - - - Gets the connection uri representation of the connection options provided during the creation of the session. - - - - - Initializes a new instance of the BaseSession class based on the specified connection string. - - The connection used to create the session. - A object. - is null. - Unable to parse the when - in URI format. - - When using Unix sockets the protocol=unix or protocol=unixsocket connection option is required. - This will enable elements passed in the server connection option to be treated as Unix sockets. The user is also required - to explicitly set sslmode to none since X Plugin does not support SSL when using Unix sockets. Note that - protocol=unix and protocol=unixsocket are synonyms. -   - Multiple hosts can be specified as part of the , - which enables client-side failover when trying to establish a connection. -   - Connection URI examples: - - mysqlx://test:test@[192.1.10.10,localhost] - - mysqlx://test:test@[192.1.10.10,127.0.0.1] - - mysqlx://root:@[../tmp/mysqlx.sock,/tmp/mysqld.sock]?protocol=unix&sslmode=none - - mysqlx://test:test@[192.1.10.10:33060,127.0.0.1:33060] - - mysqlx://test:test@[192.1.10.10,120.0.0.2:22000,[::1]:33060]/test?connectiontimeout=10 - - mysqlx://test:test@[(address=server.example,priority=20),(address=127.0.0.1,priority=100)] - - mysqlx://test:test@[(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25)] - -   - Connection string examples: - - server=10.10.10.10,localhost;port=33060;uid=test;password=test; - - host=10.10.10.10,192.101.10.2,localhost;port=5202;uid=test;password=test; - - host=./tmp/mysqld.sock,/var/run/mysqldx.sock;port=5202;uid=root;protocol=unix;sslmode=none; - - server=(address=server.example,priority=20),(address=127.0.0.1,priority=100);port=33060;uid=test;password=test; - - server=(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25);port=33060;uid=test;password=test; - -   - Failover methods - - Sequential: Connection attempts will be performed in a sequential order, that is, one after another until - a connection is successful or all the elements from the list have been tried. - - - Priority based: If a priority is provided, the connection attemps will be performed in descending order, starting - with the host with the highest priority. Priority must be a value between 0 and 100. Additionally, it is required to either - give a priority for every host or no priority to any host. - - - - - - Initializes a new instance of the BaseSession class based on the specified anonymous type object. - - The connection data as an anonymous type used to create the session. - A object. - is null. - - Multiple hosts can be specified as part of the , which enables client-side failover when trying to - establish a connection. -   - To assign multiple hosts, create a property similar to the connection string examples shown in - . Note that the value of the property must be a string. - - - - - - Drops the database/schema with the given name. - - The name of the schema. - is null. - - - - Creates a schema/database with the given name. - - The name of the schema/database. - A object that matches the recently created schema/database. - - - - Gets the schema with the given name. - - The name of the schema. - A object set with the provided schema name. - - - - Gets a list of schemas (or databases) in this session. - - A list containing all existing schemas (or databases). - - - - Starts a new transaction. - - - - - Commits the current transaction. - - A object containing the results of the commit operation. - - - - Rolls back the current transaction. - - - - - Closes this session or releases it to the pool. - - - - - Closes this session - - - - - Sets a transaction savepoint with an autogenerated name. - - The autogenerated name of the transaction savepoint. - - - - Sets a named transaction savepoint. - - The name of the transaction savepoint. - The name of the transaction savepoint. - - - - Removes the named savepoint from the set of savepoints within the current transaction. - - The name of the transaction savepoint. - - - - Rolls back a transaction to the named savepoint without terminating the transaction. - - The name of the transaction savepoint. - - - - Parses the connection data. - - The connection string or connection URI. - A object. - An updated connection string representation of the provided connection string or connection URI. - - - - Parses a connection URI. - - The connection URI to parse. - The connection string representation of the provided . - - - - Validates if the string provided is a Unix socket file. - - The Unix socket to evaluate. - true if is a valid Unix socket; otherwise, false. - - - - Converts the URI object into a connection string. - - An instance with the values for the provided connection options. - The path of the Unix socket file. - If true the replaces the value for the server connection option; otherwise, false - Flag indicating if this is a connection using DNS SRV. - A connection string. - - - - Parses a connection string. - - The connection string to parse. - The parsed connection string. - - - - Normalizes the Unix socket by removing leading and ending parenthesis as well as removing special characters. - - The Unix socket to normalize. - A normalized Unix socket. - - - - Disposes the current object. Disposes of the managed state if the flag is set to true. - - Flag to indicate if the managed state is to be disposed. - - - - Disposes the current object. Code added to correctly implement the disposable pattern. - - - - - Describes the state of the session. - - - - - The session is closed. - - - - - The session is open. - - - - - The session object is connecting to the data source. - - - - - The session object is executing a command. - - - - - Class encapsulating a session pooling functionality. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove hosts from the demoted list that have already been there for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Get a session from pool or create a new one. - - - - - - Closes all sessions the Client object created and destroys the managed pool. - - - - - Represents a collection of documents. - - - - - Creates an containing the provided objects that can be used to add - one or more items to a collection. - - The objects to add. - An object containing the objects to add. - is null. - This method can take anonymous objects, domain objects, or just plain JSON strings. - The statement can be further modified before execution. - - - - Creates a with the given condition that can be used to remove - one or more documents from a collection.The statement can then be further modified before execution. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Removes the document with the given identifier. - - The unique identifier of the document to replace. - A object containing the results of the execution. - is null or white space. - This is a direct execution method. - - - - Creates a with the given condition that can be used to modify one or more - documents from a collection. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Replaces the document matching the given identifier. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - is null or whitespace. - is null. - This is a direct execution method. Operation succeeds even if no matching document was found; - in which case, the Result.RecordsAffected property is zero. If the new document contains an identifier, the value - is ignored. - - - - Adds the given document to the collection unless the identifier or any other field that has a unique index - already exists, in which case it will update the matching document. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - The server version is lower than 8.0.3. - is null or white space. - is null. - The is different from the one in . - This is a direct execution method. - - - - Returns the number of documents in this collection on the server. - - The number of documents found. - - - - Creates a with the given condition which can be used to find documents in a - collection. - - An optional condition to match documents. - A object set with the given condition. - The statement can then be further modified before execution. - - - - Creates an index based on the properties provided in the JSON document. - - The index name. - JSON document describing the index to be created. - - is a JSON document with the following fields: - - - fields: array of IndexField objects, each describing a single document member to be - included in the index (see below). - - type: string, (optional) the type of index. One of INDEX or SPATIAL. Default is INDEX and may - be omitted. - -   - A single IndexField description consists of the following fields: - - - field: string, the full document path to the document member or field to be indexed. - - type: string, one of the supported SQL column types to map the field into (see the following list). - For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for - indexing may be added. - - required: bool, (optional) true if the field is required to exist in the document. defaults to - false, except for GEOJSON where it defaults to true. - - options: int, (optional) special option flags for use when decoding GEOJSON data. - - srid: int, (optional) srid value for use when decoding GEOJSON data. - -   - Supported SQL column types: - - - INT [UNSIGNED] - - TINYINT [UNSIGNED] - - SMALLINT [UNSIGNED] - - MEDIUMINT [UNSIGNED] - - INTEGER [UNSIGNED] - - BIGINT [UNSIGNED] - - REAL [UNSIGNED] - - FLOAT [UNSIGNED] - - DOUBLE [UNSIGNED] - - DECIMAL [UNSIGNED] - - NUMERIC [UNSIGNED] - - DATE - - TIME - - TIMESTAMP - - DATETIME - - TEXT[(length)] - - CHAR[(lenght)] - - GEOJSON (extra options: options, srid) - - - - - - Drops a collection index. - - The index name. - is null or white space. - - - - Verifies if the current collection exists in the server schema. - - true if the collection exists; otherwise, false. - - - - Returns the document with the given identifier. - - The unique identifier of the document to replace. - A object if a document matching given identifier exists; otherwise, null. - is null or white space. - This is a direct execution method. - - - - Base abstract class that defines elements inherited by all result types. - - - - - Gets the number of records affected by the statement that generated this result. - - - - - Gets the object of the session. - - - - - Gets a read-only collection of objects derived from statement execution. - - - - - Gets the number of warnings in the collection derived from statement execution. - - - - - No action is performed by this method. It is intended to be overriden by child classes if required. - - - - - Base abstract class for API statement. - - - - - - Initializes a new instance of the BaseStatement class based on the specified session. - - The session where the statement will be executed. - - - - Gets the that owns the statement. - - - - - Executes the base statements. This method is intended to be defined by child classes. - - A result object containing the details of the execution. - - - - Executes a statement asynchronously. - - A result object containing the details of the execution. - - - - Validates if the session is open and valid. - - - - - Sets the status as Changed for prepared statement validation. - - - - - Converts a statement to prepared statement for a second execution - without any change but Bind, Limit, or Offset. - - - - - Abstract class for buffered results. - - Generic result type. - - - - Index of the current item. - - - - - List of generic items in this buffered result. - - - - - Flag that indicates if all items have been read. - - - - - Gets a dictionary containing the column names and their index. - - - - - Gets the page size set for this buffered result. - - - - - Loads the column data into the field. - - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - Retrieves one element from the generic items associated to this buffered result. - - A generic object that corresponds to the current or default item. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Gets the current item. - - All items have already been read. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Resets the value of the field to zero. - - - - - Gets an representation of this object. - - An representation of this object. - - - - Gets an representation of this object. - - An representation of this object. - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - No body has been defined for this method. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - If false, throws an exception if the collection exists. - - - - - Object which hold the Level and Schema parameters. - - - - - This object store the required parameters to modify a Collection with schema validation. - - - - - This object store the required parameters to Modify a Collection with schema validation. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - It can be STRICT to enable schema validation or OFF to disable . - - - - - The JSON which define the rules to be validated in the collection. - - - - - The possible values for parameter Level in Validation object. - - - - - Class to represent an error in this result. - - - - - Numeric code. - - - - - Return code indicating the outcome of the executed SQL statement. - - - - - Error message. - - - - - Initializes a new instance of the ErrorInfo class. - - - - - Abstract class for filterable statements. - - The filterable statement. - The database object. - The type of result. - - - - Initializes a new instance of the FiltarableStatement class based on the target and condition. - - The database object. - The optional filter condition. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Sets the number of items to be returned by the operation. - - The number of items to be returned. - The implementing statement type. - is equal or lower than 0. - - - - Sets the number of items to be skipped before including them into the result. - - The number of items to be skipped. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameter name. - The value of the parameter. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a DbDoc object. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a JSON string. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as an anonymous object: new { param1 = value1, param2 = value2, ... }. - The implementing statement type. - - - - Executes the statement. - - The function to execute. - The generic object to use. - A generic result object containing the results of the execution. - - - - Clones the filterable data but Session and Target remain the - same. - - A clone of this filterable statement. - - - - Represents a general statement result. - - - - - Gets the last inserted identifier (if there is one) by the statement that generated this result. - - - - - Gets the list of generated identifiers in the order of the Add() calls. - - - - - Abstract class to select a database object target. - - The database object. - The execution result. - - - - Initializes a new instance of the TargetedBaseStatement class based on the provided target. - - The database object. - - - - Gets the database target. - - - - - Represents a warning in this result. - - - - - Numeric value associated to the warning message. - - - - - Error message. - - - - - Strict level for the warning. - - - - - Initializes a new instance of the WarningInfo class based on the code and msg. - - The code for the warning. - The error message for the warning. - - - - Represents a chaining collection insert statement. - - - - - Adds documents to the collection. - - The documents to add. - This object. - The array is null. - - - - Executes the Add statement. - - A object containing the results of the execution. - - - - Implementation class for CRUD statements with collections using an index. - - - - - Executes this statement. - - A object containing the results of the execution. - - - - Represents a collection statement. - - - - - - Converts base s into objects. - - Array of objects to be converted to objects. - An enumerable collection of objects. - - - - Represents the result of an operation that includes a collection of documents. - - - - - Represents a chaining collection find statement. - - - - - List of column projections that shall be returned. - - List of columns. - This object set with the specified columns or fields. - - - - Executes the Find statement. - - A object containing the results of execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with the lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the collection aggregation. - - The field list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Represents a chaining collection modify statement. - - - - - Sets key and value. - - The document path key. - The new value. - This object. - - - - Changes value for a key. - - The document path key. - The new value. - This object. - - - - Removes keys or values from a document. - - An array of document paths representing the keys to be removed. - This object. - - - - Creates a object set with the changes to be applied to all matching documents. - - The JSON-formatted object describing the set of changes. - A object set with the changes described in . - can be a object, an anonymous object, or a JSON string. - is null. - is null or white space. - - - - Inserts an item into the specified array. - - The document path key including the index on which the item will be inserted. - The value to insert into the array. - A object containing the updated array. - - - - Appends an item to the specified array. - - The document path key. - The value to append to the array. - A object containing the updated array. - - - - Allows the user to set the sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the modify statement. - - A object containing the results of the execution. - - - - Represents a chaining collection remove statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the remove statement. - - A object containing the results of the execution. - - - - Represents a database object. - - - - - Gets the session that owns the database object. - - - - - Gets the schema that owns the database object. - - - - - Gets the database object name. - - - - - Verifies that the database object exists in the database. - - True if the object exists in database, false otherwise. - - - - Represents a generic document in JSON format. - - - - - Initializes a new instance of the DbDoc class based on the object provided. The value can be a domain object, anonymous object, or JSON string. - - The value for this DbDoc. - - - - Gets the value of a document property. - - The key path for the property. - - - - - Gets the identifier of the document. - - - - - Gets a value indicating if this document has an identifier (property named _id with a value). - - - - - Sets a property on this document. - - The key of the property. - The new property value. - - - - Returns this document in Json format. - - A Json formatted string. - - - - Compares this DbDoc with another one. - - The DbDoc to compare to. - True if they are equal, false otherwise. - - - - Gets a value that serves as a hash function for a particular type. - - A hash code for the current object. - - - - Represents a collection of documents with a generic type. - - - - - Initializes a new instance of the generic Collection class based on the specified schema - and name. - - The object associated to this collection. - The name of the collection. - - - - Creates an containing the provided generic object. The add - statement can be further modified before execution. - - The generic object to add. - An object containing the object to add. - - - - Defines elements that allow to iterate through the contents of various items. - - - - - Initializes a new instance of the Iterator class. - - - - - This method is not yet implemented. - - - - Exception is always thrown since the body of the method is not yet implemented. - - - - Defines a MySql expression. - - - - - Main class for session operations related to Connector/NET implementation of the X DevAPI. - - - - - Opens a session to the server given or to the first available server if multiple servers were specified. - - The connection string or URI string format. - - A object representing the established session. - Multiple hosts can be specified as part of the which - will enable client side failover when trying to establish a connection. For additional details and syntax - examples refer to the remarks section. - - - - Opens a session to the server given. - - The connection data for the server. - - A object representing the established session. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Enables the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the X protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - A flag indicating if the default port is used in the connection. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets the connection attributes. - - - - - Path to a local file containing certificate revocation lists. - - - - - Gets or sets the compression type between client and server. - - - - - Gets or sets the compression algorithm. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Represents a table column. - - - - - Gets the original column name. - - - - - Gets the alias of the column name. - - - - - Gets the table name the column orginates from. - - - - - Gets the alias of the table name . - - - - - Gets the schema name the column originates from. - - - - - Gets the catalog the schema originates from. - In MySQL protocol this is `def` by default. - - - - - Gets the collation used for this column. - - - - - Gets the character set used for this column. - - - - - Gets the column length. - - - - - Gets the fractional decimal digits for floating point and fixed point numbers. - - - - - Gets the Mysql data type. - - - - - Gets the .NET Clr data type. - - - - - True if it's a signed number. - - - - - True if column is UINT zerofill or BYTES rightpad. - - - - - Initializes a new instance of the Column class. - - - - - Represents a resultset that contains rows of data. - - - - - Gets the columns in this resultset. - - - - - Gets the number of columns in this resultset. - - - - - Gets a list containing the column names in this resultset. - - - - - Gets the rows of this resultset. This collection will be incomplete unless all the rows have been read - either by using the Next method or the Buffer method. - - - - - Gets the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Allows getting the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Returns the index of the given column name. - - The name of the column to find. - The numeric index of column. - - - - Represents a single row of data in a table. - - - - - Gets the value of the row at the given index. - - The column index to retrieve the value. - The value at the index. - - - - Gets the value of the column as a string. - - The name of the column. - The value of the column as a string. - - - - Gets a string based indexer into the row. Returns the value as a CLR type. - - The column index to get. - The CLR value for the column. - - - - Inherits from . Creates a resultset that contains rows of data. - - - - - Represents a resultset that contains rows of data for relational operations. - - - - - Gets a boolean value indicating if this result has data. - - - - - Moves to next resultset. - - True if there is a new resultset, false otherwise. - - - - Represents a sql statement. - - - - - Initializes a new instance of the SqlStament class bassed on the session and sql statement. - - The session the Sql statement belongs to. - The Sql statement. - - - - Gets the current Sql statement. - - - - - Gets the list of parameters associated to this Sql statement. - - - - - Executes the current Sql statement. - - A object with the resultset and execution status. - - - - Binds the parameters values by position. - - The parameter values. - This set with the binded parameters. - - - - Represents a server Table or View. - - - - - Gets a value indicating whether the object is - a View (True) or a Table (False). - - - - - Creates a set with the columns to select. The table select - statement can be further modified before execution. This method is intended to select a set - of table rows. - - The optional column names to select. - A object for select chain operations. - - - - Creates a set with the fileds to insert to. The table - insert statement can be further modified before exeuction. This method is intended to - insert one or multiple rows into a table. - - The list of fields to insert. - A object for insert chain operations. - - - - Creates a . This method is intended to update table rows - values. - - A object for update chain operations. - - - - Creates a . This method is intended to delete rows from a - table. - - A object for delete chain operations. - - - - Returns the number of rows in the table on the server. - - The number of rows. - - - - Verifies if the table exists in the database. - - true if the table exists; otherwise, false. - - - - Represents a chaining table delete statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Executes the delete statement. - - A object containing the results of the delete execution. - - - - Represents a chaining table insert statement. - - - - - Executes the insert statement. - - A object containing the results of the insert statement. - - - - Values to be inserted. - Multiple rows supported. - - The values to be inserted. - This same object. - - - - Represents a chaining table select statement. - - - - - Executes the select statement. - - A object containing the results of the execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the table aggregation. - - The column list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a chaining table update statement. - - - - - Executes the update statement. - - A object ocntaining the results of the update statement execution. - - - - Column and value to be updated. - - Column name. - Value to be updated. - This same object. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a schema or database. - - - - - Session related to current schema. - - - - - Returns a list of all collections in this schema. - - A list representing all found collections. - - - - Returns a list of all tables in this schema. - - A list representing all found tables. - - - - Gets a collection by name. - - The name of the collection to get. - Ensures the collection exists in the schema. - A object matching the given name. - - - - Gets a typed collection object. This is useful for using domain objects. - - The type of collection returned. - The name of collection to get. - A generic object set with the given name. - - - - Gets the given collection as a table. - - The name of the collection. - A object set with the given name. - - - - Gets a table object. Upon return the object may or may not be valid. - - The name of the table object. - A object set with the given name. - - - - Creates a collection. - - The name of the collection to create. - If false, throws an exception if the collection exists. - Collection referente. - - - - Creates a collection including a schema validation. - - The name of the collection to create. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Modify a collection adding or removing schema validation parameters. - - The name of the collection to create. - This object encapsulate the Validation parameters level and schema. - Collection referente. - - - - Drops the given collection. - - The name of the collection to drop. - is null. - - - - Determines if this schema actually exists. - - True if exists, false otherwise. - - - - Represents a single server session. - - - - - Returns a object that can be used to execute the given SQL. - - The SQL to execute. - A object set with the provided SQL. - - - - Sets the schema in the database. - - The schema name to be set. - - - - Executes a query in the database to get the current schema. - - Current database object or null if no schema is selected. - - - - Closes the current session properly after it was closed by the server. - - - - Holder for reflection information generated from mysqlx.proto - - - File descriptor for mysqlx.proto - - - - IDs of messages that can be sent from client to the server - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ClientMessages message type. - - - - IDs of messages that can be sent from server to client - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ServerMessages message type. - - - - NOTICE has to stay at 11 forever - - - - - generic Ok message - - - - Field number for the "msg" field. - - - - generic Error message - - A ``severity`` of ``ERROR`` indicates the current message sequence is - aborted for the given error and the session is ready for more. - - In case of a ``FATAL`` error message the client should not expect - the server to continue handling any further messages and should - close the connection. - - :param severity: severity of the error message - :param code: error-code - :param sql_state: SQL state - :param msg: human readable error message - - - - Field number for the "severity" field. - - - Field number for the "code" field. - - - Field number for the "sql_state" field. - - - Field number for the "msg" field. - - - Container for nested types declared in the Error message type. - - - Holder for reflection information generated from mysqlx_connection.proto - - - File descriptor for mysqlx_connection.proto - - - - a Capability - - a tuple of a ``name`` and a :protobuf:msg:`Mysqlx.Datatypes::Any` - - - - Field number for the "name" field. - - - Field number for the "value" field. - - - - Capabilities - - - - Field number for the "capabilities" field. - - - - get supported connection capabilities and their current state - - :returns: :protobuf:msg:`Mysqlx.Connection::Capabilities` or :protobuf:msg:`Mysqlx::Error` - - - - - sets connection capabilities atomically - - only provided values are changed, other values are left unchanged. - If any of the changes fails, all changes are discarded. - - :precond: active sessions == 0 - :returns: :protobuf:msg:`Mysqlx::Ok` or :protobuf:msg:`Mysqlx::Error` - - - - Field number for the "capabilities" field. - - - - announce to the server that the client wants to close the connection - - it discards any session state of the server - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "uncompressed_size" field. - - - Field number for the "server_messages" field. - - - Field number for the "client_messages" field. - - - Field number for the "payload" field. - - - Holder for reflection information generated from mysqlx_crud.proto - - - File descriptor for mysqlx_crud.proto - - - - DataModel to use for filters, names, ... - - - - - ViewAlgorithm defines how MySQL Server processes the view - - - - - MySQL chooses which algorithm to use - - - - - the text of a statement that refers to the view and the view definition are merged - - - - - the view are retrieved into a temporary table - - - - - ViewSqlSecurity defines the security context in which the view is going to be - executed, this means that VIEW can be executed with current user permissions or - with permissions of the uses who defined the VIEW - - - - - ViewCheckOption limits the write operations done on a `VIEW` - (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE` - - - - - the view WHERE clause is checked, but no underlying views are checked - - - - - the view WHERE clause is checked, then checking recurses to underlying views - - - - - column definition - - - - Field number for the "name" field. - - - - optional - - - - Field number for the "alias" field. - - - - optional - - - - Field number for the "document_path" field. - - - - a projection - - :param source: the expression identifying an element from the source data - which can include a column identifier or any expression - :param alias: optional alias. Required for DOCUMENTs (clients may use - the source string as default) - - - - Field number for the "source" field. - - - - required - - - - Field number for the "alias" field. - - - - optional - - - - - collection - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema" field. - - - - optional - - - - - limit - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - limit expression - - LimitExpr in comparison to Limit, is able to specify that row_count and - offset are placeholders. - This message support expressions of following types Expr/literal/UINT, - Expr/PLACEHOLDER. - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - sort order - - - - Field number for the "expr" field. - - - - required - - - - Field number for the "direction" field. - - - - optional//[ default=ASC ] - - - - Container for nested types declared in the Order message type. - - - - update operations - - :param source: specification of the value to be updated - if data_model is TABLE, a column name may be specified and also a document path, if the column has type JSON - if data_model is DOCUMENT, only document paths are allowed - in both cases, schema and table must be not set - :param operation: the type of operation to be performed - :param value: an expression to be computed as the new value for the operation - - - - Field number for the "source" field. - - - - required - - - - Field number for the "operation" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - Container for nested types declared in the UpdateOperation message type. - - - - only allowed for TABLE - - - - - no value (removes the identified path from a object or array) - - - - - sets the new value on the identified path - - - - - replaces a value if the path exists - - - - - source and value must be documents - - - - - insert the value in the array at the index identified in the source path - - - - - append the value on the array at the identified path - - - - - merge JSON object value with the provided patch expression - - - - - Find Documents/Rows in a Collection/Table - - .. uml:: - - client -> server: Find - ... one or more Resultset ... - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: list of column projections that shall be returned - :param args: values for parameters used in filter expression - :param criteria: filter criteria - :param limit: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :param order: sort-order in which the rows/document shall be returned in - :param grouping: column expression list for aggregation (GROUP BY) - :param grouping_criteria: filter criteria for aggregated groups - :param locking: perform row locking on matches - :param locking_options: additional options how to handle locked rows - :param limit_expr: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "grouping" field. - - - Field number for the "grouping_criteria" field. - - - - optional - - - - Field number for the "locking" field. - - - - optional - - - - Field number for the "locking_options" field. - - - - optional - - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Container for nested types declared in the Find message type. - - - - Lock matching rows against updates - - - - - Lock matching rows so no other transaction can read or write to it - - - - - Do not wait to acquire row lock, fail with an error if a requested row is locked - - - - - Do not wait to acquire a row lock, remove locked rows from the result set - - - - - Insert documents/rows into a collection/table - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: name of the columns to insert data into (empty if data_model is DOCUMENT) - :param row: set of rows to insert into the collection/table (a single expression with a JSON document literal or an OBJECT expression) - :param args: values for parameters used in row expressions - :param upsert: true if this should be treated as an Upsert (that is, update on duplicate key) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "row" field. - - - Field number for the "args" field. - - - Field number for the "upsert" field. - - - - optional//[default = false] - - - - Container for nested types declared in the Insert message type. - - - Field number for the "field" field. - - - - Update documents/rows in a collection/table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param operation: list of operations to be applied. Valid operations will depend on the data_model. - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "operation" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - - Delete documents/rows from a Collection/Table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional//[default = UNDEFINED] - - - - Field number for the "security" field. - - - - optional//[default = DEFINER] - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "replace_existing" field. - - - - optional//[default = false] - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional - - - - Field number for the "security" field. - - - - optional - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "if_exists" field. - - - - optional//[ default = false ] - - - - Holder for reflection information generated from mysqlx_cursor.proto - - - File descriptor for mysqlx_cursor.proto - - - - Open a cursor - - .. uml:: - - client -> server: Open - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, the ID is going to represent new cursor and assigned to it statement - :param stmt: statement which resultset is going to be iterated through the cursor - :param fetch_rows: number of rows which should be retrieved from sequential cursor - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - Container for nested types declared in the Open message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "prepare_execute" field. - - - - optional - - - - Container for nested types declared in the OneOfMessage message type. - - - - Fetch next portion of data from a cursor - - .. uml:: - - client -> server: Fetch - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be already open - :param fetch_rows: number of rows which should be retrieved from sequential cursor - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - - Close cursor - - .. uml:: - - client -> server: Close - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be allocated/open - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "cursor_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_datatypes.proto - - - File descriptor for mysqlx_datatypes.proto - - - - a scalar - - - - Field number for the "type" field. - - - - required - - - - Field number for the "v_signed_int" field. - - - Field number for the "v_unsigned_int" field. - - - Field number for the "v_octets" field. - - - - 4 is unused, was Null which doesn't have a storage anymore - - - - Field number for the "v_double" field. - - - Field number for the "v_float" field. - - - Field number for the "v_bool" field. - - - Field number for the "v_string" field. - - - Enum of possible cases for the "DefaultOneOf" oneof. - - - Container for nested types declared in the Scalar message type. - - - - a string with a charset/collation - - - - Field number for the "value" field. - - - - required - - - - Field number for the "collation" field. - - - Enum of possible cases for the "String_present" oneof. - - - - an opaque octet sequence, with an optional content_type - See ``Mysqlx.Resultset.ColumnMetadata`` for list of known values. - - - - Field number for the "value" field. - - - - required - - - - Field number for the "content_type" field. - - - - a object - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array - - - - Field number for the "value" field. - - - - a helper to allow all field types - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scalar" field. - - - Field number for the "obj" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Any message type. - - - Holder for reflection information generated from mysqlx_expect.proto - - - File descriptor for mysqlx_expect.proto - - - - open an Expect block and set/unset the conditions that have to be fulfilled - - if any of the conditions fail, all enclosed messages will fail with - a Mysqlx.Error message. - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Field number for the "op" field. - - - - [ default = EXPECT_CTX_COPY_PREV ];//optional - - - - Field number for the "cond" field. - - - Container for nested types declared in the Open message type. - - - - copy the operations from the parent Expect-block - - - - - start with a empty set of operations - - - - Field number for the "condition_key" field. - - - - required - - - - Field number for the "condition_value" field. - - - - optional - - - - Field number for the "op" field. - - - - [ default = EXPECT_OP_SET ];//optional - - - - Container for nested types declared in the Condition message type. - - - - Change error propagation behaviour - - - - - Check if X Protocol field exists - - - - - Check if X Protocol support document _id generation - - - - - set the condition - - set, if not set - overwrite, if set - - - - - unset the condition - - - - - close a Expect block - - closing a Expect block restores the state of the previous Expect block - for the following messages - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Holder for reflection information generated from mysqlx_expr.proto - - - File descriptor for mysqlx_expr.proto - - - - Expressions - - the "root" of the expression tree - - .. productionlist:: - expr: `operator` | - : `identifier` | - : `function_call` | - : variable | - : `literal` | - : placeholder - - If expression type is PLACEHOLDER then it refers to the value of a parameter - specified when executing a statement (see `args` field of `StmtExecute` command). - Field `position` (which must be present for such an expression) gives 0-based - position of the parameter in the parameter list. - - - - Field number for the "type" field. - - - - required - - - - Field number for the "identifier" field. - - - Field number for the "variable" field. - - - Field number for the "literal" field. - - - Field number for the "function_call" field. - - - Field number for the "operator" field. - - - Field number for the "position" field. - - - Field number for the "object" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Expr message type. - - - - identifier: name, schame.name - - .. productionlist:: - identifier: string "." string | - : string - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema_name" field. - - - - DocumentPathItem - - .. productionlist:: - document_path: path_item | path_item document_path - path_item : member | array_index | "**" - member : "." string | "." "*" - array_index : "[" number "]" | "[" "*" "]" - - - - Field number for the "type" field. - - - - required - - - - Field number for the "value" field. - - - Field number for the "index" field. - - - Container for nested types declared in the DocumentPathItem message type. - - - - .member - - - - - .* - - - - - [index] - - - - - [*] - - - - - ** - - - - - col_identifier (table): col@doc_path, tbl.col@doc_path col, tbl.col, schema.tbl.col - col_identifier (document): doc_path - - .. productionlist:: - col_identifier: string "." string "." string | - : string "." string | - : string | - : string "." string "." string "@" document_path | - : string "." string "@" document_path | - : string "@" document_path | - : document_path - document_path: member | arrayLocation | doubleAsterisk - member = "." string | "." "*" - arrayLocation = "[" index "]" | "[" "*" "]" - doubleAsterisk = "**" - - - - Field number for the "document_path" field. - - - Field number for the "name" field. - - - Field number for the "table_name" field. - - - Field number for the "schema_name" field. - - - - function call: ``func(a, b, "1", 3)`` - - .. productionlist:: - function_call: `identifier` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - operator: ``<<(a, b)`` - - .. note:: - - Non-authoritative list of operators implemented (case sensitive): - - Nullary - * ``*`` - * ``default`` - - Unary - * ``!`` - * ``sign_plus`` - * ``sign_minus`` - * ``~`` - - Binary - * ``&&`` - * ``||`` - * ``xor`` - * ``==`` - * ``!=`` - * ``>`` - * ``>=`` - * ``<`` - * ``<=`` - * ``&`` - * ``|`` - * ``^`` - * ``<<`` - * ``>>`` - * ``+`` - * ``-`` - * ``*`` - * ``/`` - * ``div`` - * ``%`` - * ``is`` - * ``is_not`` - * ``regexp`` - * ``not_regexp`` - * ``like`` - * ``not_like`` - * ``cast`` - * ``cont_in`` - * ``not_cont_in`` - - Using special representation, with more than 2 params - * ``in`` (param[0] IN (param[1], param[2], ...)) - * ``not_in`` (param[0] NOT IN (param[1], param[2], ...)) - - Ternary - * ``between`` - * ``between_not`` - * ``date_add`` - * ``date_sub`` - - Units for date_add/date_sub - * ``MICROSECOND`` - * ``SECOND`` - * ``MINUTE`` - * ``HOUR`` - * ``DAY`` - * ``WEEK`` - * ``MONTH`` - * ``QUARTER`` - * ``YEAR`` - * ``SECOND_MICROSECOND`` - * ``MINUTE_MICROSECOND`` - * ``MINUTE_SECOND`` - * ``HOUR_MICROSECOND`` - * ``HOUR_SECOND`` - * ``HOUR_MINUTE`` - * ``DAY_MICROSECOND`` - * ``DAY_SECOND`` - * ``DAY_MINUTE`` - * ``DAY_HOUR`` - - Types for cast - * ``BINARY[(N)]`` - * ``CHAR[(N)]`` - * ``DATE`` - * ``DATETIME`` - * ``DECIMAL[(M[,D])]`` - * ``JSON`` - * ``SIGNED [INTEGER]`` - * ``TIME`` - * ``UNSIGNED [INTEGER]`` - - .. productionlist:: - operator: `name` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - an object (with expression values) - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array of expressions - - - - Field number for the "value" field. - - - Holder for reflection information generated from mysqlx_notice.proto - - - File descriptor for mysqlx_notice.proto - - - - Common Frame for all Notices - - ===================================================== ===== - .type value - ===================================================== ===== - :protobuf:msg:`Mysqlx.Notice::Warning` 1 - :protobuf:msg:`Mysqlx.Notice::SessionVariableChanged` 2 - :protobuf:msg:`Mysqlx.Notice::SessionStateChanged` 3 - ===================================================== ===== - - :param type: the type of the payload - :param payload: the payload of the notification - :param scope: global or local notification - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scope" field. - - - - [ default = GLOBAL ];//optional - - - - Field number for the "payload" field. - - - - optional - - - - Container for nested types declared in the Frame message type. - - - - Server-side warnings and notes - - ``.scope`` == ``local`` - ``.level``, ``.code`` and ``.msg`` map the content of - - .. code-block:: sql - - SHOW WARNINGS - - ``.scope`` == ``global`` - (undefined) will be used for global, unstructured messages like: - - * server is shutting down - * a node disconnected from group - * schema or table dropped - - ========================================== ======================= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ======================= - ``.type`` 1 - ``.scope`` ``local`` or ``global`` - ========================================== ======================= - - :param level: warning level: Note or Warning - :param code: warning code - :param msg: warning message - - - - Field number for the "level" field. - - - - [ default = WARNING ];//optional - - - - Field number for the "code" field. - - - - required - - - - Field number for the "msg" field. - - - - required - - - - Container for nested types declared in the Warning message type. - - - - Notify clients about changes to the current session variables - - Every change to a variable that is accessible through: - - .. code-block:: sql - - SHOW SESSION VARIABLES - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 2 - ``.scope`` ``local`` - ========================================== ========= - - :param namespace: namespace that param belongs to - :param param: name of the variable - :param value: the changed value of param - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - - Notify clients about changes to the internal session state - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 3 - ``.scope`` ``local`` - ========================================== ========= - - :param param: parameter key - :param value: updated value - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - Container for nested types declared in the SessionStateChanged message type. - - - - .. more to be added - - - - Holder for reflection information generated from mysqlx_prepare.proto - - - File descriptor for mysqlx_prepare.proto - - - - Prepare a new statement - - .. uml:: - - client -> server: Prepare - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, which is going to identify the result of preparation - :param stmt: defines one of following messages to be prepared - Crud.Find, Crud.Insert, Crud.Delete, Crud.Upsert, Sql.StmtExecute - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Container for nested types declared in the Prepare message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "find" field. - - - - optional - - - - Field number for the "insert" field. - - - - optional - - - - Field number for the "update" field. - - - - optional - - - - Field number for the "delete" field. - - - - optional - - - - Field number for the "stmt_execute" field. - - - - optional - - - - Enum of possible cases for the "Type_present" oneof. - - - Container for nested types declared in the OneOfMessage message type. - - - - Determine which of optional fields was set by the client - (Workaround for missing "oneof" keyword in pb2.5) - - - - - Execute already prepared statement - - .. uml:: - - client -> server: Execute - alt Success - ... Resultsets... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :param args_list: Arguments to bind to the prepared statement - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - [ default = false ]; optional - - - - - Deallocate already prepared statement - - Deallocating the statement. - - .. uml:: - - client -> server: Deallocate - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_resultset.proto - - - File descriptor for mysqlx_resultset.proto - - - - a hint about the higher-level encoding of a BYTES field - - ====== ====== =========== - type value description - ====== ====== =========== - BYTES 0x0001 GEOMETRY (WKB encoding) - BYTES 0x0002 JSON (text encoding) - BYTES 0x0003 XML (text encoding) - ====== ====== =========== - - .. note:: - this list isn't comprehensive. As guideline: the field's value is expected - to pass a validator check on client and server if this field is set. - If the server adds more internal datatypes that rely on BLOB storage - like image manipulation, seeking into complex types in BLOBs, ... more - types will be added. - - - - - a hint about the higher-level encoding of a DATETIME field - - ====== ====== =========== - type value description - ======== ====== =========== - DATE 0x0001 DATETIME contains only date part - DATETIME 0x0002 DATETIME contains both date and time parts - ====== ====== =========== - - - - - resultsets are finished, OUT paramset is next - - - - - resultset and out-params are finished, but more resultsets available - - - - - all resultsets are finished - - - - - cursor is opened still the execution of PrepFetch or PrepExecute ended - - - - - meta data of a Column - - .. note:: the encoding used for the different ``bytes`` fields in the meta data is externally - controlled. - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html - - .. note:: - The server may not set the ``original_{table|name}`` fields if they are equal to the plain - ``{table|name}`` field. - - A client has to reconstruct it like:: - - if .original_name is empty and .name is not empty: - .original_name = .name - - if .original_table is empty and .table is not empty: - .original_table = .table - - .. note:: - ``compact metadata format`` can be requested by the client. In that case only ``.type`` is set and - all other fields are empty. - - :param type: - .. table:: Expected Datatype of Mysqlx.Resultset.Row per SQL Type for non NULL values - - ================= ============ ======= ========== ====== ======== - SQL Type .type .length .frac_dig .flags .charset - ================= ============ ======= ========== ====== ======== - TINY SINT x - TINY UNSIGNED UINT x x - SHORT SINT x - SHORT UNSIGNED UINT x x - INT24 SINT x - INT24 UNSIGNED UINT x x - INT SINT x - INT UNSIGNED UINT x x - LONGLONG SINT x - LONGLONG UNSIGNED UINT x x - DOUBLE DOUBLE x x x - FLOAT FLOAT x x x - DECIMAL DECIMAL x x x - VARCHAR,CHAR,... BYTES x x x - GEOMETRY BYTES - TIME TIME x - DATE DATETIME x - DATETIME DATETIME x - YEAR UINT x x - TIMESTAMP DATETIME x - SET SET x - ENUM ENUM x - NULL BYTES - BIT BIT x - ================= ============ ======= ========== ====== ======== - - .. note:: the SQL "NULL" value is sent as an empty field value in :protobuf:msg:`Mysqlx.Resultset::Row` - .. seealso:: protobuf encoding of primitive datatypes are decribed in https://developers.google.com/protocol-buffers/docs/encoding - - SINT - - ``.length`` - maximum number of displayable decimal digits (including minus sign) of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - =============== == - SQL Type max digits per type - =============== == - TINY SIGNED 4 - SHORT SIGNED 6 - INT24 SIGNED 8 - INT SIGNED 11 - LONGLONG SIGNED 20 - =============== == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded signed 64 integer - - UINT - - ``.flags & 1`` (zerofill) - the client has to left pad with 0's up to .length - - ``.length`` - maximum number of displayable decimal digits of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - ================= == - SQL Type max digits per type - ================= == - TINY UNSIGNED 3 - SHORT UNSIGNED 5 - INT24 UNSIGNED 8 - INT UNSIGNED 10 - LONGLONG UNSIGNED 20 - ================= == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - BIT - - ``.length`` - maximum number of displayable binary digits - - .. note:: valid range for M of the ``BIT`` type is 1 - 64 - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - DOUBLE - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'double' - - FLOAT - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'float' - - BYTES, ENUM - BYTES is used for all opaque byte strings that may have a charset - - * TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB - * TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT - * VARCHAR, VARBINARY - * CHAR, BINARY - * ENUM - - ``.length`` - the maximum length of characters of the underlying type - - ``.flags & 1`` (rightpad) - if the length of the field is less than ``.length``, the receiver is - supposed to add padding characters to the right end of the string. - If the ``.charset`` is "binary", the padding character is ``0x00``, - otherwise it is a space character as defined by that character set. - - ============= ======= ======== ======= - SQL Type .length .charset .flags - ============= ======= ======== ======= - TINYBLOB 256 binary - BLOB 65535 binary - VARCHAR(32) 32 utf8 - VARBINARY(32) 32 utf8_bin - BINARY(32) 32 binary rightpad - CHAR(32) 32 utf8 rightpad - ============= ======= ======== ======= - - ``value`` - sequence of bytes with added one extra '\0' byte at the end. To obtain the - original string, the extra '\0' should be removed. - .. note:: the length of the string can be acquired with protobuf's field length() method - length of sequence-of-bytes = length-of-field - 1 - .. note:: the extra byte allows to distinguish between a NULL and empty byte sequence - - TIME - A time value. - - ``value`` - the following bytes sequence: - - ``| negate [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * negate - one byte, should be one of: 0x00 for "+", 0x01 for "-" - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. seealso:: protobuf encoding in https://developers.google.com/protocol-buffers/docs/encoding - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - Example: 0x00 -> +00:00:00.000000 - - DATETIME - A date or date and time value. - - ``value`` - a sequence of variants, arranged as follows: - - ``| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * year - variable length encoded unsigned64 value for the year - * month - variable length encoded unsigned64 value for the month - * day - variable length encoded unsigned64 value for the day - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - ``.flags & 1`` (timestamp) - - ============= ======= - SQL Type .flags - ============= ======= - DATETIME - TIMESTAMP 1 - - DECIMAL - An arbitrary length number. The number is encoded as a single byte - indicating the position of the decimal point followed by the Packed BCD - encoded number. Packed BCD is used to simplify conversion to and - from strings and other native arbitrary precision math datatypes. - .. seealso:: packed BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal - - ``.length`` - maximum number of displayable decimal digits (*excluding* the decimal point and sign, but including ``.fractional_digits``) - - .. note:: should be in the range of 1 - 65 - - ``.fractional_digits`` - is the decimal digits to display out of length - - .. note:: should be in the range of 0 - 30 - - ``value`` - the following bytes sequence: - - ``| scale | BCD | sign | [0x0] |`` - - * scale - 8bit scale value (number of decimal digit after the '.') - * BCD - BCD encoded digits (4 bits for each digit) - * sign - sign encoded on 4 bits (0xc = "+", 0xd = "-") - * 0x0 - last 4bits if length(digits) % 2 == 0 - - Example: x04 0x12 0x34 0x01 0xd0 -> -12.3401 - - SET - A list of strings representing a SET of values. - - ``value`` - A sequence of 0 or more of protobuf's bytes (length prepended octets) or one of - the special sequences with a predefined meaning listed below. - - Example (length of the bytes array shown in brackets): - * ``[0]`` - the NULL value - * ``[1] 0x00`` - a set containing a blank string '' - * ``[1] 0x01`` - this would be an invalid value, but is to be treated as the empty set - * ``[2] 0x01 0x00`` - a set with a single item, which is the '\0' character - * ``[8] 0x03 F O O 0x03 B A R`` - a set with 2 items: FOO,BAR - - :param name: name of the column - :param original_name: name of the column before an alias was applied - :param table: name of the table the column orginates from - :param original_table: name of the table the column orginates from before an alias was applied - :param schema: schema the column originates from - :param catalog: - catalog the schema originates from - - .. note:: - as there is current no support for catalogs in MySQL, don't expect this field to be set. - In the MySQL C/S protocol the field had the value ``def`` all the time. - - :param fractional_digits: displayed factional decimal digits for floating point and fixed point numbers - :param length: maximum count of displayable characters of .type - :param flags: - ``.type`` specific flags - - ======= ====== =========== - type value description - ======= ====== =========== - UINT 0x0001 zerofill - DOUBLE 0x0001 unsigned - FLOAT 0x0001 unsigned - DECIMAL 0x0001 unsigned - BYTES 0x0001 rightpad - ======= ====== =========== - - ====== ================ - value description - ====== ================ - 0x0010 NOT_NULL - 0x0020 PRIMARY_KEY - 0x0040 UNIQUE_KEY - 0x0080 MULTIPLE_KEY - 0x0100 AUTO_INCREMENT - ====== ================ - - default: 0 - :param content_type: - a hint about the higher-level encoding of a BYTES field, for more informations - please refer to Mysqlx.Resultset.ContentType_BYTES enum. - - - - Field number for the "type" field. - - - - datatype of the field in a row - - - - Field number for the "name" field. - - - Field number for the "original_name" field. - - - Field number for the "table" field. - - - Field number for the "original_table" field. - - - Field number for the "schema" field. - - - Field number for the "catalog" field. - - - Field number for the "collation" field. - - - Field number for the "fractional_digits" field. - - - Field number for the "length" field. - - - Field number for the "flags" field. - - - Field number for the "content_type" field. - - - Container for nested types declared in the ColumnMetaData message type. - - - - Row in a Resultset - - a row is represented as a list of fields encoded as byte blobs. - Blob of size 0 represents the NULL value. Otherwise, if it contains at least - one byte, it encodes a non-null value of the field using encoding appropriate for the - type of the value given by ``ColumnMetadata``, as specified - in the :protobuf:msg:`Mysqlx.Resultset::ColumnMetaData` description. - - - - Field number for the "field" field. - - - Holder for reflection information generated from mysqlx_session.proto - - - File descriptor for mysqlx_session.proto - - - - the initial message send from the client to the server to start the - authentication proccess - - :param mech_name: authentication mechanism name - :param auth_data: authentication data - :param initial_response: initial response - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "mech_name" field. - - - - required - - - - Field number for the "auth_data" field. - - - Field number for the "initial_response" field. - - - - send by client or server after a :protobuf:msg:`Mysqlx.Session::AuthenticateStart` to - exchange more auth data - - :param auth_data: authentication data - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "auth_data" field. - - - - required - - - - - sent by the server after successful authentication - - :param auth_data: authentication data - - - - Field number for the "auth_data" field. - - - - reset the current session - param keep_open: if is true the session will be reset, but stays authenticated. - otherwise, the session will be closed and needs to be authenticated again. - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "keep_open" field. - - - - close the current session - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Holder for reflection information generated from mysqlx_sql.proto - - - File descriptor for mysqlx_sql.proto - - - - execute a statement in the given namespace - - .. uml:: - - client -> server: StmtExecute - ... zero or more Resultsets ... - server --> client: StmtExecuteOk - - Notices: - This message may generate a notice containing WARNINGs generated by its execution. - This message may generate a notice containing INFO messages generated by its execution. - - :param namespace: namespace of the statement to be executed - :param stmt: statement that shall be executed. - :param args: values for wildcard replacements - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :returns: - * zero or one :protobuf:msg:`Mysqlx.Resultset::` followed by :protobuf:msg:`Mysqlx.Sql::StmtExecuteOk` - - - - Field number for the "namespace" field. - - - - optional [ default = "sql" ] - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - optional [ default = false ] - - - - - statement executed successful - - -
-
diff --git a/AUTS_AOI/bin/Debug/MySql.Data_DESKTOP-19R1DIU_7月-17-173559-2023_Conflict.dll b/AUTS_AOI/bin/Debug/MySql.Data_DESKTOP-19R1DIU_7月-17-173559-2023_Conflict.dll deleted file mode 100644 index 8a866a2..0000000 Binary files a/AUTS_AOI/bin/Debug/MySql.Data_DESKTOP-19R1DIU_7月-17-173559-2023_Conflict.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/Newtonsoft.Json.dll b/AUTS_AOI/bin/Debug/Newtonsoft.Json.dll deleted file mode 100644 index 7af125a..0000000 Binary files a/AUTS_AOI/bin/Debug/Newtonsoft.Json.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/Newtonsoft.Json.xml b/AUTS_AOI/bin/Debug/Newtonsoft.Json.xml deleted file mode 100644 index 008e0ca..0000000 --- a/AUTS_AOI/bin/Debug/Newtonsoft.Json.xml +++ /dev/null @@ -1,11305 +0,0 @@ - - - - Newtonsoft.Json - - - - - Represents a BSON Oid (object id). - - - - - Gets or sets the value of the Oid. - - The value of the Oid. - - - - Initializes a new instance of the class. - - The Oid value. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. - - - - - Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. - - - true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. - - - - - Gets or sets a value indicating whether the root object will be read as a JSON array. - - - true if the root object will be read as a JSON array; otherwise, false. - - - - - Gets or sets the used when reading values from BSON. - - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. - - - - - Gets or sets the used when writing values to BSON. - When set to no conversion will occur. - - The used when writing values to BSON. - - - - Initializes a new instance of the class. - - The to write to. - - - - Initializes a new instance of the class. - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. - - - - - Writes the end. - - The token. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes the beginning of a JSON array. - - - - - Writes the beginning of a JSON object. - - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value that represents a BSON object id. - - The Object ID value to write. - - - - Writes a BSON regex. - - The regex pattern. - The regex options. - - - - Specifies how constructors are used when initializing objects during deserialization by the . - - - - - First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. - - - - - Json.NET will use a non-public default constructor before falling back to a parameterized constructor. - - - - - Converts a binary value to and from a base 64 string value. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Creates a custom object. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Creates an object which will then be populated by the serializer. - - Type of the object. - The created object. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Provides a base class for converting a to and from JSON. - - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a F# discriminated union type to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an Entity Framework to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). - - - - - Gets or sets the date time styles used when converting a date to and from JSON. - - The date time styles used when converting a date to and from JSON. - - - - Gets or sets the date time format used when converting a date to and from JSON. - - The date time format used when converting a date to and from JSON. - - - - Gets or sets the culture used when converting a date to and from JSON. - - The culture used when converting a date to and from JSON. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from its name string value. - - - - - Gets or sets a value indicating whether the written enum text should be camel case. - The default value is false. - - true if the written enum text will be camel case; otherwise, false. - - - - Gets or sets the naming strategy used to resolve how enum text is written. - - The naming strategy used to resolve how enum text is written. - - - - Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. - The default value is true. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - true if the written enum text will be camel case; otherwise, false. - - - - Initializes a new instance of the class. - - The naming strategy used to resolve how enum text is written. - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from Unix epoch time - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from a string (e.g. "1.2.3.4"). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts XML to and from JSON. - - - - - Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. - - The name of the deserialized root element. - - - - Gets or sets a value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - true if the array attribute is written to the XML; otherwise, false. - - - - Gets or sets a value indicating whether to write the root JSON object. - - true if the JSON root object is omitted; otherwise, false. - - - - Gets or sets a value indicating whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - true if special characters are encoded; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The calling serializer. - The value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Checks if the is a namespace attribute. - - Attribute name to test. - The attribute name prefix if it has one, otherwise an empty string. - true if attribute name is for a namespace attribute, otherwise false. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Specifies how dates are formatted when writing JSON text. - - - - - Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". - - - - - Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". - - - - - Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. - - - - - Date formatted strings are not parsed to a date type and are read as strings. - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Specifies how to treat the time value when converting between string and . - - - - - Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. - - - - - Treat as a UTC. If the object represents a local time, it is converted to a UTC. - - - - - Treat as a local time if a is being converted to a string. - If a string is being converted to , convert to a local time if a time zone is specified. - - - - - Time zone information should be preserved when converting. - - - - - The default JSON name table implementation. - - - - - Initializes a new instance of the class. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Adds the specified string into name table. - - The string to add. - This method is not thread-safe. - The resolved string. - - - - Specifies default value handling options for the . - - - - - - - - - Include members where the member value is the same as the member's default value when serializing objects. - Included members are written to JSON. Has no effect when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - so that it is not written to JSON. - This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, - decimals and floating point numbers; and false for booleans). The default value ignored can be changed by - placing the on the property. - - - - - Members with a default value but no JSON will be set to their default value when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - and set members to their default value when deserializing. - - - - - Specifies float format handling options when writing special floating point numbers, e.g. , - and with . - - - - - Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". - - - - - Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. - Note that this will produce non-valid JSON. - - - - - Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. - - - - - Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Floating point numbers are parsed to . - - - - - Floating point numbers are parsed to . - - - - - Specifies formatting options for the . - - - - - No special formatting is applied. This is the default. - - - - - Causes child objects to be indented according to the and settings. - - - - - Provides an interface for using pooled arrays. - - The array type content. - - - - Rent an array from the pool. This array must be returned when it is no longer needed. - - The minimum required length of the array. The returned array may be longer. - The rented array from the pool. This array must be returned when it is no longer needed. - - - - Return an array to the pool. - - The array that is being returned. - - - - Provides an interface to enable a class to return line and position information. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - The current line number or 0 if no line information is available (for example, when returns false). - - - - Gets the current line position. - - The current line position or 0 if no line information is available (for example, when returns false). - - - - Instructs the how to serialize the collection. - - - - - Gets or sets a value indicating whether null items are allowed in the collection. - - true if null items are allowed in the collection; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with a flag indicating whether the array can contain null items. - - A flag indicating whether the array can contain null items. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to use the specified constructor when deserializing that object. - - - - - Instructs the how to serialize the object. - - - - - Gets or sets the id. - - The id. - - - - Gets or sets the title. - - The title. - - - - Gets or sets the description. - - The description. - - - - Gets or sets the collection's items converter. - - The collection's items converter. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets a value that indicates whether to preserve object references. - - - true to keep object reference; otherwise, false. The default is false. - - - - - Gets or sets a value that indicates whether to preserve collection's items references. - - - true to keep collection's items object references; otherwise, false. The default is false. - - - - - Gets or sets the reference loop handling used when serializing the collection's items. - - The reference loop handling. - - - - Gets or sets the type name handling used when serializing the collection's items. - - The type name handling. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Provides methods for converting between .NET types and JSON types. - - - - - - - - Gets or sets a function that creates default . - Default settings are automatically used by serialization methods on , - and and on . - To serialize without using any default settings create a with - . - - - - - Represents JavaScript's boolean value true as a string. This field is read-only. - - - - - Represents JavaScript's boolean value false as a string. This field is read-only. - - - - - Represents JavaScript's null as a string. This field is read-only. - - - - - Represents JavaScript's undefined as a string. This field is read-only. - - - - - Represents JavaScript's positive infinity as a string. This field is read-only. - - - - - Represents JavaScript's negative infinity as a string. This field is read-only. - - - - - Represents JavaScript's NaN as a string. This field is read-only. - - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - The time zone handling when the date is converted to a string. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - The string escape handling. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Serializes the specified object to a JSON string. - - The object to serialize. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting. - - The object to serialize. - Indicates how the output should be formatted. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a collection of . - - The object to serialize. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting and a collection of . - - The object to serialize. - Indicates how the output should be formatted. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Deserializes the JSON to a .NET object. - - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to a .NET object using . - - The JSON to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The JSON to deserialize. - The of object being deserialized. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The type of the object to deserialize to. - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the given anonymous type. - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the given anonymous type using . - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The type of the object to deserialize to. - The JSON to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The type of the object to deserialize to. - The object to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The JSON to deserialize. - The type of the object to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The JSON to deserialize. - The type of the object to deserialize to. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Populates the object with values from the JSON string. - - The JSON to populate values from. - The target object to populate values onto. - - - - Populates the object with values from the JSON string using . - - The JSON to populate values from. - The target object to populate values onto. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - - - - Serializes the to a JSON string. - - The node to serialize. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to serialize. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Serializes the to a JSON string. - - The node to convert to JSON. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to convert to JSON. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Converts an object to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can read JSON. - - true if this can read JSON; otherwise, false. - - - - Gets a value indicating whether this can write JSON. - - true if this can write JSON; otherwise, false. - - - - Converts an object to and from JSON. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. If there is no existing value then null will be used. - The existing value has a value. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Instructs the to use the specified when serializing the member or class. - - - - - Gets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - - - - - Initializes a new instance of the class. - - Type of the . - - - - Initializes a new instance of the class. - - Type of the . - Parameter list to use when constructing the . Can be null. - - - - Represents a collection of . - - - - - Instructs the how to serialize the collection. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Instructs the to deserialize properties with no matching class member into the specified collection - and write values during serialization. - - - - - Gets or sets a value that indicates whether to write extension data when serializing the object. - - - true to write extension data when serializing the object; otherwise, false. The default is true. - - - - - Gets or sets a value that indicates whether to read extension data when deserializing the object. - - - true to read extension data when deserializing the object; otherwise, false. The default is true. - - - - - Initializes a new instance of the class. - - - - - Instructs the not to serialize the public field or public read/write property value. - - - - - Base class for a table of atomized string objects. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Instructs the how to serialize the object. - - - - - Gets or sets the member serialization. - - The member serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified member serialization. - - The member serialization. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to always serialize the member with the specified name. - - - - - Gets or sets the type used when serializing the property's collection items. - - The collection's items type. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the null value handling used when serializing this property. - - The null value handling. - - - - Gets or sets the default value handling used when serializing this property. - - The default value handling. - - - - Gets or sets the reference loop handling used when serializing this property. - - The reference loop handling. - - - - Gets or sets the object creation handling used when deserializing this property. - - The object creation handling. - - - - Gets or sets the type name handling used when serializing this property. - - The type name handling. - - - - Gets or sets whether this property's value is serialized as a reference. - - Whether this property's value is serialized as a reference. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets a value indicating whether this property is required. - - - A value indicating whether this property is required. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified name. - - Name of the property. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously skips the children of the current token. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Specifies the state of the reader. - - - - - A read method has not been called. - - - - - The end of the file has been reached successfully. - - - - - Reader is at a property. - - - - - Reader is at the start of an object. - - - - - Reader is in an object. - - - - - Reader is at the start of an array. - - - - - Reader is in an array. - - - - - The method has been called. - - - - - Reader has just read a value. - - - - - Reader is at the start of a constructor. - - - - - Reader is in a constructor. - - - - - An error occurred that prevents the read operation from continuing. - - - - - The end of the file has been reached successfully. - - - - - Gets the current reader state. - - The current reader state. - - - - Gets or sets a value indicating whether the source should be closed when this reader is closed. - - - true to close the source when this reader is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether multiple pieces of JSON content can - be read from a continuous stream without erroring. - - - true to support reading multiple pieces of JSON content; otherwise false. - The default is false. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - Gets or sets how time zones are handled when reading JSON. - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Gets or sets how custom date formatted strings are parsed when reading JSON. - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets the type of the current JSON token. - - - - - Gets the text value of the current JSON token. - - - - - Gets the .NET type for the current JSON token. - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets or sets the culture used when reading JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Reads the next JSON token from the source. - - true if the next token was read successfully; false if there are no more tokens to read. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Skips the children of the current token. - - - - - Sets the current token. - - The new token. - - - - Sets the current token and value. - - The new token. - The value. - - - - Sets the current token and value. - - The new token. - The value. - A flag indicating whether the position index inside an array should be updated. - - - - Sets the state based on current token type. - - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Changes the reader's state to . - If is set to true, the source is also closed. - - - - - The exception thrown when an error occurs while reading JSON text. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Instructs the to always serialize the member, and to require that the member has a value. - - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Serializes and deserializes objects into and from the JSON format. - The enables you to control how objects are encoded into JSON. - - - - - Occurs when the errors during serialization and deserialization. - - - - - Gets or sets the used by the serializer when resolving references. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - - - - Gets or sets how reference loops (e.g. a class referencing itself) is handled. - The default value is . - - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets a collection that will be used during serialization. - - Collection that will be used during serialization. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. - The default value is false. - - - true if there will be a check for additional JSON content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Creates a new instance. - The will not use default settings - from . - - - A new instance. - The will not use default settings - from . - - - - - Creates a new instance using the specified . - The will not use default settings - from . - - The settings to be applied to the . - - A new instance using the specified . - The will not use default settings - from . - - - - - Creates a new instance. - The will use default settings - from . - - - A new instance. - The will use default settings - from . - - - - - Creates a new instance using the specified . - The will use default settings - from as well as the specified . - - The settings to be applied to the . - - A new instance using the specified . - The will use default settings - from as well as the specified . - - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Deserializes the JSON structure contained by the specified . - - The that contains the JSON structure to deserialize. - The being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The type of the object to deserialize. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is Auto to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Specifies the settings on a object. - - - - - Gets or sets how reference loops (e.g. a class referencing itself) are handled. - The default value is . - - Reference loop handling. - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - Missing member handling. - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - Null value handling. - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - The default value handling. - - - - Gets or sets a collection that will be used during serialization. - - The converters. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - The preserve references handling. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - The type name handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - The contract resolver. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets the used by the serializer when resolving references. - - The reference resolver. - - - - Gets or sets a function that creates the used by the serializer when resolving references. - - A function that creates the used by the serializer when resolving references. - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the error handler called during serialization and deserialization. - - The error handler called during serialization and deserialization. - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets a value indicating whether there will be a check for additional content after deserializing an object. - The default value is false. - - - true if there will be a check for additional content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Represents a reader that provides fast, non-cached, forward-only access to JSON text data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Initializes a new instance of the class with the specified . - - The containing the JSON data to read. - - - - Gets or sets the reader's property name table. - - - - - Gets or sets the reader's character buffer pool. - - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - - The current line number or 0 if no line information is available (for example, returns false). - - - - - Gets the current line position. - - - The current line position or 0 if no line information is available (for example, returns false). - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Gets or sets the writer's character array pool. - - - - - Gets or sets how many s to write for each level in the hierarchy when is set to . - - - - - Gets or sets which character to use to quote attribute values. - - - - - Gets or sets which character to use for indenting when is set to . - - - - - Gets or sets a value indicating whether object names will be surrounded with quotes. - - - - - Initializes a new instance of the class using the specified . - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying . - - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the specified end token. - - The end token to write. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Specifies the type of JSON token. - - - - - This is returned by the if a read method has not been called. - - - - - An object start token. - - - - - An array start token. - - - - - A constructor start token. - - - - - An object property name. - - - - - A comment. - - - - - Raw JSON. - - - - - An integer. - - - - - A float. - - - - - A string. - - - - - A boolean. - - - - - A null token. - - - - - An undefined token. - - - - - An object end token. - - - - - An array end token. - - - - - A constructor end token. - - - - - A Date. - - - - - Byte data. - - - - - - Represents a reader that provides validation. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Sets an event handler for receiving schema validation errors. - - - - - Gets the text value of the current JSON token. - - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - - Gets the type of the current JSON token. - - - - - - Gets the .NET type for the current JSON token. - - - - - - Initializes a new instance of the class that - validates the content returned from the given . - - The to read from while validating. - - - - Gets or sets the schema. - - The schema. - - - - Gets the used to construct this . - - The specified in the constructor. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a []. - - - A [] or null if the next JSON token is null. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously ets the state of the . - - The being written. - The value being written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Gets or sets a value indicating whether the destination should be closed when this writer is closed. - - - true to close the destination when this writer is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. - - - true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. - - - - - Gets the top. - - The top. - - - - Gets the state of the writer. - - - - - Gets the path of the writer. - - - - - Gets or sets a value indicating how JSON text output should be formatted. - - - - - Gets or sets how dates are written to JSON text. - - - - - Gets or sets how time zones are handled when writing JSON text. - - - - - Gets or sets how strings are escaped when writing JSON text. - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written to JSON text. - - - - - Gets or sets how and values are formatted when writing JSON text. - - - - - Gets or sets the culture used when writing JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the destination and also flushes the destination. - - - - - Closes this writer. - If is set to true, the destination is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the end of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the end of an array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end constructor. - - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes the end of the current JSON object or array. - - - - - Writes the current token and its children. - - The to read the token from. - - - - Writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - - - - Writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - - - - Writes the token. - - The to write. - - - - Writes the specified end token. - - The end token to write. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON without changing the writer's state. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Sets the state of the . - - The being written. - The value being written. - - - - The exception thrown when an error occurs while writing JSON text. - - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Specifies how JSON comments are handled when loading JSON. - - - - - Ignore comments. - - - - - Load comments as a with type . - - - - - Specifies how duplicate property names are handled when loading JSON. - - - - - Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. - - - - - Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. - - - - - Throw a when a duplicate property is encountered. - - - - - Contains the LINQ to JSON extension methods. - - - - - Returns a collection of tokens that contains the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the descendants of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, and the descendants of every token in the source collection. - - - - Returns a collection of child properties of every object in the source collection. - - An of that contains the source collection. - An of that contains the properties of every object in the source collection. - - - - Returns a collection of child values of every object in the source collection with the given key. - - An of that contains the source collection. - The token key. - An of that contains the values of every token in the source collection with the given key. - - - - Returns a collection of child values of every object in the source collection. - - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child values of every object in the source collection with the given key. - - The type to convert the values to. - An of that contains the source collection. - The token key. - An that contains the converted values of every token in the source collection with the given key. - - - - Returns a collection of converted child values of every object in the source collection. - - The type to convert the values to. - An of that contains the source collection. - An that contains the converted values of every token in the source collection. - - - - Converts the value. - - The type to convert the value to. - A cast as a of . - A converted value. - - - - Converts the value. - - The source collection type. - The type to convert the value to. - A cast as a of . - A converted value. - - - - Returns a collection of child tokens of every array in the source collection. - - The source collection type. - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child tokens of every array in the source collection. - - An of that contains the source collection. - The type to convert the values to. - The source collection type. - An that contains the converted values of every token in the source collection. - - - - Returns the input typed as . - - An of that contains the source collection. - The input typed as . - - - - Returns the input typed as . - - The source collection type. - An of that contains the source collection. - The input typed as . - - - - Represents a collection of objects. - - The type of token. - - - - Gets the of with the specified key. - - - - - - Represents a JSON array. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Loads an from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads an from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the at the specified index. - - - - - - Determines the index of a specific item in the . - - The object to locate in the . - - The index of if found in the list; otherwise, -1. - - - - - Inserts an item to the at the specified index. - - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - - - - - Removes the item at the specified index. - - The zero-based index of the item to remove. - - is not a valid index in the . - - - - - Returns an enumerator that iterates through the collection. - - - A of that can be used to iterate through the collection. - - - - - Adds an item to the . - - The object to add to the . - - - - Removes all items from the . - - - - - Determines whether the contains a specific value. - - The object to locate in the . - - true if is found in the ; otherwise, false. - - - - - Copies the elements of the to an array, starting at a particular array index. - - The array. - Index of the array. - - - - Gets a value indicating whether the is read-only. - - true if the is read-only; otherwise, false. - - - - Removes the first occurrence of a specific object from the . - - The object to remove from the . - - true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . - - - - - Represents a JSON constructor. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets or sets the name of this constructor. - - The constructor name. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name. - - The constructor name. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a token that can contain other tokens. - - - - - Occurs when the list changes or an item in the list changes. - - - - - Occurs before an item is added to the collection. - - - - - Occurs when the items list of the collection has changed, or the collection is reset. - - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Get the first child token of this token. - - - A containing the first child token of the . - - - - - Get the last child token of this token. - - - A containing the last child token of the . - - - - - Returns a collection of the child tokens of this token, in document order. - - - An of containing the child tokens of this , in document order. - - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - - A containing the child values of this , in document order. - - - - - Returns a collection of the descendant tokens for this token in document order. - - An of containing the descendant tokens of the . - - - - Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. - - An of containing this token, and all the descendant tokens of the . - - - - Adds the specified content as children of this . - - The content to be added. - - - - Adds the specified content as the first children of this . - - The content to be added. - - - - Creates a that can be used to add tokens to the . - - A that is ready to have content written to it. - - - - Replaces the child nodes of this token with the specified content. - - The content. - - - - Removes the child nodes from this token. - - - - - Merge the specified content into this . - - The content to be merged. - - - - Merge the specified content into this using . - - The content to be merged. - The used to merge the content. - - - - Gets the count of child JSON tokens. - - The count of child JSON tokens. - - - - Represents a collection of objects. - - The type of token. - - - - An empty collection of objects. - - - - - Initializes a new instance of the struct. - - The enumerable. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Gets the of with the specified key. - - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Represents a JSON object. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Occurs when a property value changes. - - - - - Occurs when a property value is changing. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Gets the node type for this . - - The type. - - - - Gets an of of this object's properties. - - An of of this object's properties. - - - - Gets a with the specified name. - - The property name. - A with the specified name or null. - - - - Gets the with the specified name. - The exact name will be searched for first and if no matching property is found then - the will be used to match a property. - - The property name. - One of the enumeration values that specifies how the strings will be compared. - A matched with the specified name or null. - - - - Gets a of of this object's property values. - - A of of this object's property values. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the with the specified property name. - - - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified property name. - - Name of the property. - The with the specified property name. - - - - Gets the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - One of the enumeration values that specifies how the strings will be compared. - The with the specified property name. - - - - Tries to get the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - The value. - One of the enumeration values that specifies how the strings will be compared. - true if a value was successfully retrieved; otherwise, false. - - - - Adds the specified property name. - - Name of the property. - The value. - - - - Determines whether the JSON object has the specified property name. - - Name of the property. - true if the JSON object has the specified property name; otherwise, false. - - - - Removes the property with the specified name. - - Name of the property. - true if item was successfully removed; otherwise, false. - - - - Tries to get the with the specified property name. - - Name of the property. - The value. - true if a value was successfully retrieved; otherwise, false. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Represents a JSON property. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the property name. - - The property name. - - - - Gets or sets the property value. - - The property value. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a view of a . - - - - - Initializes a new instance of the class. - - The name. - - - - When overridden in a derived class, returns whether resetting an object changes its value. - - - true if resetting the component changes its value; otherwise, false. - - The component to test for reset capability. - - - - When overridden in a derived class, gets the current value of the property on a component. - - - The value of a property for a given component. - - The component with the property for which to retrieve the value. - - - - When overridden in a derived class, resets the value for this property of the component to the default value. - - The component with the property value that is to be reset to the default value. - - - - When overridden in a derived class, sets the value of the component to a different value. - - The component with the property value that is to be set. - The new value. - - - - When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. - - - true if the property should be persisted; otherwise, false. - - The component with the property to be examined for persistence. - - - - When overridden in a derived class, gets the type of the component this property is bound to. - - - A that represents the type of component this property is bound to. - When the or - - methods are invoked, the object specified might be an instance of this type. - - - - - When overridden in a derived class, gets a value indicating whether this property is read-only. - - - true if the property is read-only; otherwise, false. - - - - - When overridden in a derived class, gets the type of the property. - - - A that represents the type of the property. - - - - - Gets the hash code for the name of the member. - - - - The hash code for the name of the member. - - - - - Represents a raw JSON string. - - - - - Asynchronously creates an instance of with the content of the reader's current token. - - The reader. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns an instance of with the content of the reader's current token. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class. - - The raw json. - - - - Creates an instance of with the content of the reader's current token. - - The reader. - An instance of with the content of the reader's current token. - - - - Specifies the settings used when loading JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets how JSON comments are handled when loading JSON. - The default value is . - - The JSON comment handling. - - - - Gets or sets how JSON line info is handled when loading JSON. - The default value is . - - The JSON line info handling. - - - - Gets or sets how duplicate property names in JSON objects are handled when loading JSON. - The default value is . - - The JSON duplicate property name handling. - - - - Specifies the settings used when merging JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets the method used when merging JSON arrays. - - The method used when merging JSON arrays. - - - - Gets or sets how null value properties are merged. - - How null value properties are merged. - - - - Gets or sets the comparison used to match property names while merging. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - The comparison used to match property names while merging. - - - - Specifies the settings used when selecting JSON. - - - - - Gets or sets a timeout that will be used when executing regular expressions. - - The timeout that will be used when executing regular expressions. - - - - Gets or sets a flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - A flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - - - Represents an abstract JSON token. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Writes this token to a asynchronously. - - A into which this method will write. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Gets a comparer that can compare two tokens for value equality. - - A that can compare two nodes for value equality. - - - - Gets or sets the parent. - - The parent. - - - - Gets the root of this . - - The root of this . - - - - Gets the node type for this . - - The type. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Compares the values of two tokens, including the values of all descendant tokens. - - The first to compare. - The second to compare. - true if the tokens are equal; otherwise false. - - - - Gets the next sibling token of this node. - - The that contains the next sibling token. - - - - Gets the previous sibling token of this node. - - The that contains the previous sibling token. - - - - Gets the path of the JSON token. - - - - - Adds the specified content immediately after this token. - - A content object that contains simple content or a collection of content objects to be added after this token. - - - - Adds the specified content immediately before this token. - - A content object that contains simple content or a collection of content objects to be added before this token. - - - - Returns a collection of the ancestor tokens of this token. - - A collection of the ancestor tokens of this token. - - - - Returns a collection of tokens that contain this token, and the ancestors of this token. - - A collection of tokens that contain this token, and the ancestors of this token. - - - - Returns a collection of the sibling tokens after this token, in document order. - - A collection of the sibling tokens after this tokens, in document order. - - - - Returns a collection of the sibling tokens before this token, in document order. - - A collection of the sibling tokens before this token, in document order. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets the with the specified key converted to the specified type. - - The type to convert the token to. - The token key. - The converted token value. - - - - Get the first child token of this token. - - A containing the first child token of the . - - - - Get the last child token of this token. - - A containing the last child token of the . - - - - Returns a collection of the child tokens of this token, in document order. - - An of containing the child tokens of this , in document order. - - - - Returns a collection of the child tokens of this token, in document order, filtered by the specified type. - - The type to filter the child tokens on. - A containing the child tokens of this , in document order. - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - A containing the child values of this , in document order. - - - - Removes this token from its parent. - - - - - Replaces this token with the specified token. - - The value. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Returns the indented JSON for this token. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - The indented JSON for this token. - - - - - Returns the JSON for this token using the given formatting and converters. - - Indicates how the output should be formatted. - A collection of s which will be used when writing the token. - The JSON for this token using the given formatting and converters. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to []. - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from [] to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Creates a for this token. - - A that can be used to read this token and its descendants. - - - - Creates a from an object. - - The object that will be used to create . - A with the value of the specified object. - - - - Creates a from an object using the specified . - - The object that will be used to create . - The that will be used when reading the object. - A with the value of the specified object. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - Creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A , or null. - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - A . - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - The used to select tokens. - A . - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - The used to select tokens. - An of that contains the selected elements. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Creates a new instance of the . All child tokens are recursively cloned. - - A new instance of the . - - - - Adds an object to the annotation list of this . - - The annotation to add. - - - - Get the first annotation object of the specified type from this . - - The type of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets the first annotation object of the specified type from this . - - The of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets a collection of annotations of the specified type for this . - - The type of the annotations to retrieve. - An that contains the annotations for this . - - - - Gets a collection of annotations of the specified type for this . - - The of the annotations to retrieve. - An of that contains the annotations that match the specified type for this . - - - - Removes the annotations of the specified type from this . - - The type of annotations to remove. - - - - Removes the annotations of the specified type from this . - - The of annotations to remove. - - - - Compares tokens to determine whether they are equal. - - - - - Determines whether the specified objects are equal. - - The first object of type to compare. - The second object of type to compare. - - true if the specified objects are equal; otherwise, false. - - - - - Returns a hash code for the specified object. - - The for which a hash code is to be returned. - A hash code for the specified object. - The type of is a reference type and is null. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Gets the at the reader's current position. - - - - - Initializes a new instance of the class. - - The token to read from. - - - - Initializes a new instance of the class. - - The token to read from. - The initial path of the token. It is prepended to the returned . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Gets the path of the current JSON token. - - - - - Specifies the type of token. - - - - - No token type has been set. - - - - - A JSON object. - - - - - A JSON array. - - - - - A JSON constructor. - - - - - A JSON object property. - - - - - A comment. - - - - - An integer value. - - - - - A float value. - - - - - A string value. - - - - - A boolean value. - - - - - A null value. - - - - - An undefined value. - - - - - A date value. - - - - - A raw JSON value. - - - - - A collection of bytes value. - - - - - A Guid value. - - - - - A Uri value. - - - - - A TimeSpan value. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Gets the at the writer's current position. - - - - - Gets the token being written. - - The token being written. - - - - Initializes a new instance of the class writing to the given . - - The container being written to. - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the underlying . - - - - - Closes this writer. - If is set to true, the JSON is auto-completed. - - - Setting to true has no additional effect, since the underlying is a type that cannot be closed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end. - - The token. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes a value. - An error will be raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Represents a value in JSON (string, integer, date, etc). - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Creates a comment with the given value. - - The value. - A comment with the given value. - - - - Creates a string with the given value. - - The value. - A string with the given value. - - - - Creates a null value. - - A null value. - - - - Creates a undefined value. - - A undefined value. - - - - Gets the node type for this . - - The type. - - - - Gets or sets the underlying token value. - - The underlying token value. - - - - Writes this token to a . - - A into which this method will write. - A collection of s which will be used when writing the token. - - - - Indicates whether the current object is equal to another object of the same type. - - - true if the current object is equal to the parameter; otherwise, false. - - An object to compare with this object. - - - - Determines whether the specified is equal to the current . - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Returns a that represents this instance. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format provider. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - The format provider. - - A that represents this instance. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: - Value - Meaning - Less than zero - This instance is less than . - Zero - This instance is equal to . - Greater than zero - This instance is greater than . - - - is not of the same type as this instance. - - - - - Specifies how line information is handled when loading JSON. - - - - - Ignore line information. - - - - - Load line information. - - - - - Specifies how JSON arrays are merged together. - - - - Concatenate arrays. - - - Union arrays, skipping items that already exist. - - - Replace all array items. - - - Merge array items together, matched by index. - - - - Specifies how null value properties are merged. - - - - - The content's null value properties will be ignored during merging. - - - - - The content's null value properties will be merged. - - - - - Specifies the member serialization options for the . - - - - - All public members are serialized by default. Members can be excluded using or . - This is the default member serialization mode. - - - - - Only members marked with or are serialized. - This member serialization mode can also be set by marking the class with . - - - - - All public and private fields are serialized. Members can be excluded using or . - This member serialization mode can also be set by marking the class with - and setting IgnoreSerializableAttribute on to false. - - - - - Specifies metadata property handling options for the . - - - - - Read metadata properties located at the start of a JSON object. - - - - - Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. - - - - - Do not try to read metadata properties. - - - - - Specifies missing member handling options for the . - - - - - Ignore a missing member and do not attempt to deserialize it. - - - - - Throw a when a missing member is encountered during deserialization. - - - - - Specifies null value handling options for the . - - - - - - - - - Include null values when serializing and deserializing objects. - - - - - Ignore null values when serializing and deserializing objects. - - - - - Specifies how object creation is handled by the . - - - - - Reuse existing objects, create new objects when needed. - - - - - Only reuse existing objects. - - - - - Always create new objects. - - - - - Specifies reference handling options for the . - Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . - - - - - - - - Do not preserve references when serializing types. - - - - - Preserve references when serializing into a JSON object structure. - - - - - Preserve references when serializing into a JSON array structure. - - - - - Preserve references when serializing. - - - - - Specifies reference loop handling options for the . - - - - - Throw a when a loop is encountered. - - - - - Ignore loop references and do not serialize. - - - - - Serialize loop references. - - - - - Indicating whether a property is required. - - - - - The property is not required. The default state. - - - - - The property must be defined in JSON but can be a null value. - - - - - The property must be defined in JSON and cannot be a null value. - - - - - The property is not required but it cannot be a null value. - - - - - - Contains the JSON schema extension methods. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - true if the specified is valid; otherwise, false. - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - When this method returns, contains any error messages generated while validating. - - true if the specified is valid; otherwise, false. - - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - The validation event handler. - - - - - An in-memory representation of a JSON Schema. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the id. - - - - - Gets or sets the title. - - - - - Gets or sets whether the object is required. - - - - - Gets or sets whether the object is read-only. - - - - - Gets or sets whether the object is visible to users. - - - - - Gets or sets whether the object is transient. - - - - - Gets or sets the description of the object. - - - - - Gets or sets the types of values allowed by the object. - - The type. - - - - Gets or sets the pattern. - - The pattern. - - - - Gets or sets the minimum length. - - The minimum length. - - - - Gets or sets the maximum length. - - The maximum length. - - - - Gets or sets a number that the value should be divisible by. - - A number that the value should be divisible by. - - - - Gets or sets the minimum. - - The minimum. - - - - Gets or sets the maximum. - - The maximum. - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). - - A flag indicating whether the value can not equal the number defined by the minimum attribute (). - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). - - A flag indicating whether the value can not equal the number defined by the maximum attribute (). - - - - Gets or sets the minimum number of items. - - The minimum number of items. - - - - Gets or sets the maximum number of items. - - The maximum number of items. - - - - Gets or sets the of items. - - The of items. - - - - Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . - - - true if items are validated using their array position; otherwise, false. - - - - - Gets or sets the of additional items. - - The of additional items. - - - - Gets or sets a value indicating whether additional items are allowed. - - - true if additional items are allowed; otherwise, false. - - - - - Gets or sets whether the array items must be unique. - - - - - Gets or sets the of properties. - - The of properties. - - - - Gets or sets the of additional properties. - - The of additional properties. - - - - Gets or sets the pattern properties. - - The pattern properties. - - - - Gets or sets a value indicating whether additional properties are allowed. - - - true if additional properties are allowed; otherwise, false. - - - - - Gets or sets the required property if this property is present. - - The required property if this property is present. - - - - Gets or sets the a collection of valid enum values allowed. - - A collection of valid enum values allowed. - - - - Gets or sets disallowed types. - - The disallowed types. - - - - Gets or sets the default value. - - The default value. - - - - Gets or sets the collection of that this schema extends. - - The collection of that this schema extends. - - - - Gets or sets the format. - - The format. - - - - Initializes a new instance of the class. - - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The object representing the JSON Schema. - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The to use when resolving schema references. - The object representing the JSON Schema. - - - - Load a from a string that contains JSON Schema. - - A that contains JSON Schema. - A populated from the string that contains JSON Schema. - - - - Load a from a string that contains JSON Schema using the specified . - - A that contains JSON Schema. - The resolver. - A populated from the string that contains JSON Schema. - - - - Writes this schema to a . - - A into which this method will write. - - - - Writes this schema to a using the specified . - - A into which this method will write. - The resolver used. - - - - Returns a that represents the current . - - - A that represents the current . - - - - - - Returns detailed information about the schema exception. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - - Generates a from a specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets how undefined schemas are handled by the serializer. - - - - - Gets or sets the contract resolver. - - The contract resolver. - - - - Generate a from the specified type. - - The type to generate a from. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - - Resolves from an id. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the loaded schemas. - - The loaded schemas. - - - - Initializes a new instance of the class. - - - - - Gets a for the specified reference. - - The id. - A for the specified reference. - - - - - The value types allowed by the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - No type specified. - - - - - String type. - - - - - Float type. - - - - - Integer type. - - - - - Boolean type. - - - - - Object type. - - - - - Array type. - - - - - Null type. - - - - - Any type. - - - - - - Specifies undefined schema Id handling options for the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Do not infer a schema Id. - - - - - Use the .NET type name as the schema Id. - - - - - Use the assembly qualified .NET type name as the schema Id. - - - - - - Returns detailed information related to the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the associated with the validation error. - - The JsonSchemaException associated with the validation error. - - - - Gets the path of the JSON location where the validation error occurred. - - The path of the JSON location where the validation error occurred. - - - - Gets the text description corresponding to the validation error. - - The text description. - - - - - Represents the callback method that will handle JSON schema validation events and the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - A camel case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Resolves member mappings for a type, camel casing property names. - - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used by to resolve a for a given . - - - - - Gets a value indicating whether members are being get and set using dynamic code generation. - This value is determined by the runtime permissions available. - - - true if using dynamic code generation; otherwise, false. - - - - - Gets or sets the default members search flags. - - The default members search flags. - - - - Gets or sets a value indicating whether compiler generated members should be serialized. - - - true if serialized compiler generated members; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. - - - true if the interface will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. - - - true if the attribute will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. - - - true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. - - - true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. - - The naming strategy used to resolve how property names and dictionary keys are serialized. - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Gets the serializable members for the type. - - The type to get serializable members for. - The serializable members for the type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates the constructor parameters. - - The constructor to create properties for. - The type's member properties. - Properties for the given . - - - - Creates a for the given . - - The matching member property. - The constructor parameter. - A created for the given . - - - - Resolves the default for the contract. - - Type of the object. - The contract's default . - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Determines which contract type is created for the given type. - - Type of the object. - A for the given type. - - - - Creates properties for the given . - - The type to create properties for. - /// The member serialization mode for the type. - Properties for the given . - - - - Creates the used by the serializer to get and set values from a member. - - The member. - The used by the serializer to get and set values from a member. - - - - Creates a for the given . - - The member's parent . - The member to create a for. - A created for the given . - - - - Resolves the name of the property. - - Name of the property. - Resolved name of the property. - - - - Resolves the name of the extension data. By default no changes are made to extension data names. - - Name of the extension data. - Resolved name of the extension data. - - - - Resolves the key of the dictionary. By default is used to resolve dictionary keys. - - Key of the dictionary. - Resolved key of the dictionary. - - - - Gets the resolved name of the property. - - Name of the property. - Name of the property. - - - - The default naming strategy. Property names and dictionary keys are unchanged. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - The default serialization binder used when resolving and loading classes from type names. - - - - - Initializes a new instance of the class. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - The type of the object the formatter creates a new instance of. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer that writes to the application's instances. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides information surrounding an error. - - - - - Gets the error. - - The error. - - - - Gets the original object that caused the error. - - The original object that caused the error. - - - - Gets the member that caused the error. - - The member that caused the error. - - - - Gets the path of the JSON location where the error occurred. - - The path of the JSON location where the error occurred. - - - - Gets or sets a value indicating whether this is handled. - - true if handled; otherwise, false. - - - - Provides data for the Error event. - - - - - Gets the current object the error event is being raised against. - - The current object the error event is being raised against. - - - - Gets the error context. - - The error context. - - - - Initializes a new instance of the class. - - The current object. - The error context. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides methods to get attributes. - - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Used by to resolve a for a given . - - - - - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used to resolve references when serializing and deserializing JSON by the . - - - - - Resolves a reference to its object. - - The serialization context. - The reference to resolve. - The object that was resolved from the reference. - - - - Gets the reference for the specified object. - - The serialization context. - The object to get a reference for. - The reference to the object. - - - - Determines whether the specified object is referenced. - - The serialization context. - The object to test for a reference. - - true if the specified object is referenced; otherwise, false. - - - - - Adds a reference to the specified object. - - The serialization context. - The reference. - The object to reference. - - - - Allows users to control class loading and mandate what class to load. - - - - - When implemented, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object - The type of the object the formatter creates a new instance of. - - - - When implemented, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - The that will be used to filter the trace messages passed to the writer. - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Provides methods to get and set values. - - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Contract details for a used by the . - - - - - Gets the of the collection items. - - The of the collection items. - - - - Gets a value indicating whether the collection type is a multidimensional array. - - true if the collection type is a multidimensional array; otherwise, false. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the collection values. - - true if the creator has a parameter with the collection values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the default collection items . - - The converter. - - - - Gets or sets a value indicating whether the collection items preserve object references. - - true if collection items preserve object references; otherwise, false. - - - - Gets or sets the collection item reference loop handling. - - The reference loop handling. - - - - Gets or sets the collection item type name handling. - - The type name handling. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Handles serialization callback events. - - The object that raised the callback event. - The streaming context. - - - - Handles serialization error callback events. - - The object that raised the callback event. - The streaming context. - The error context. - - - - Sets extension data for an object during deserialization. - - The object to set extension data on. - The extension data key. - The extension data value. - - - - Gets extension data for an object during serialization. - - The object to set extension data on. - - - - Contract details for a used by the . - - - - - Gets the underlying type for the contract. - - The underlying type for the contract. - - - - Gets or sets the type created during deserialization. - - The type created during deserialization. - - - - Gets or sets whether this type contract is serialized as a reference. - - Whether this type contract is serialized as a reference. - - - - Gets or sets the default for this contract. - - The converter. - - - - Gets the internally resolved for the contract's type. - This converter is used as a fallback converter when no other converter is resolved. - Setting will always override this converter. - - - - - Gets or sets all methods called immediately after deserialization of the object. - - The methods called immediately after deserialization of the object. - - - - Gets or sets all methods called during deserialization of the object. - - The methods called during deserialization of the object. - - - - Gets or sets all methods called after serialization of the object graph. - - The methods called after serialization of the object graph. - - - - Gets or sets all methods called before serialization of the object. - - The methods called before serialization of the object. - - - - Gets or sets all method called when an error is thrown during the serialization of the object. - - The methods called when an error is thrown during the serialization of the object. - - - - Gets or sets the default creator method used to create the object. - - The default creator method used to create the object. - - - - Gets or sets a value indicating whether the default creator is non-public. - - true if the default object creator is non-public; otherwise, false. - - - - Contract details for a used by the . - - - - - Gets or sets the dictionary key resolver. - - The dictionary key resolver. - - - - Gets the of the dictionary keys. - - The of the dictionary keys. - - - - Gets the of the dictionary values. - - The of the dictionary values. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the dictionary values. - - true if the creator has a parameter with the dictionary values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets the object's properties. - - The object's properties. - - - - Gets or sets the property name resolver. - - The property name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object constructor. - - The object constructor. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object member serialization. - - The member object serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets the object's properties. - - The object's properties. - - - - Gets a collection of instances that define the parameters used with . - - - - - Gets or sets the function used to create the object. When set this function will override . - This function is called with a collection of arguments which are defined by the collection. - - The function used to create the object. - - - - Gets or sets the extension data setter. - - - - - Gets or sets the extension data getter. - - - - - Gets or sets the extension data value type. - - - - - Gets or sets the extension data name resolver. - - The extension data name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Maps a JSON property to a .NET member or constructor parameter. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the type that declared this property. - - The type that declared this property. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets the name of the underlying member or parameter. - - The name of the underlying member or parameter. - - - - Gets the that will get and set the during serialization. - - The that will get and set the during serialization. - - - - Gets or sets the for this property. - - The for this property. - - - - Gets or sets the type of the property. - - The type of the property. - - - - Gets or sets the for the property. - If set this converter takes precedence over the contract converter for the property type. - - The converter. - - - - Gets or sets the member converter. - - The member converter. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets or sets a value indicating whether this is readable. - - true if readable; otherwise, false. - - - - Gets or sets a value indicating whether this is writable. - - true if writable; otherwise, false. - - - - Gets or sets a value indicating whether this has a member attribute. - - true if has a member attribute; otherwise, false. - - - - Gets the default value. - - The default value. - - - - Gets or sets a value indicating whether this is required. - - A value indicating whether this is required. - - - - Gets a value indicating whether has a value specified. - - - - - Gets or sets a value indicating whether this property preserves object references. - - - true if this instance is reference; otherwise, false. - - - - - Gets or sets the property null value handling. - - The null value handling. - - - - Gets or sets the property default value handling. - - The default value handling. - - - - Gets or sets the property reference loop handling. - - The reference loop handling. - - - - Gets or sets the property object creation handling. - - The object creation handling. - - - - Gets or sets or sets the type name handling. - - The type name handling. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets a predicate used to determine whether the property should be deserialized. - - A predicate used to determine whether the property should be deserialized. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets an action used to set whether the property has been deserialized. - - An action used to set whether the property has been deserialized. - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Gets or sets the converter used when serializing the property's collection items. - - The collection's items converter. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - A collection of objects. - - - - - Initializes a new instance of the class. - - The type. - - - - When implemented in a derived class, extracts the key from the specified element. - - The element from which to extract the key. - The key for the specified element. - - - - Adds a object. - - The property to add to the collection. - - - - Gets the closest matching object. - First attempts to get an exact case match of and then - a case insensitive match. - - Name of the property. - A matching property if found. - - - - Gets a property by property name. - - The name of the property to get. - Type property name string comparison. - A matching property if found. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Lookup and create an instance of the type described by the argument. - - The type to create. - Optional arguments to pass to an initializing constructor of the JsonConverter. - If null, the default constructor is used. - - - - A kebab case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Represents a trace writer that writes to memory. When the trace message limit is - reached then old trace messages will be removed as new messages are added. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Initializes a new instance of the class. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Returns an enumeration of the most recent trace messages. - - An enumeration of the most recent trace messages. - - - - Returns a of the most recent trace messages. - - - A of the most recent trace messages. - - - - - A base class for resolving how property names and dictionary keys are serialized. - - - - - A flag indicating whether dictionary keys should be processed. - Defaults to false. - - - - - A flag indicating whether extension data names should be processed. - Defaults to false. - - - - - A flag indicating whether explicitly specified property names, - e.g. a property name customized with a , should be processed. - Defaults to false. - - - - - Gets the serialized name for a given property name. - - The initial property name. - A flag indicating whether the property has had a name explicitly specified. - The serialized property name. - - - - Gets the serialized name for a given extension data name. - - The initial extension data name. - The serialized extension data name. - - - - Gets the serialized key for a given dictionary key. - - The initial dictionary key. - The serialized dictionary key. - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Hash code calculation - - - - - - Object equality implementation - - - - - - - Compare to another NamingStrategy - - - - - - - Represents a method that constructs an object. - - The object type to create. - - - - When applied to a method, specifies that the method is called when an error occurs serializing an object. - - - - - Provides methods to get attributes from a , , or . - - - - - Initializes a new instance of the class. - - The instance to get attributes for. This parameter should be a , , or . - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Get and set values for a using reflection. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - A snake case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Specifies how strings are escaped when writing JSON text. - - - - - Only control characters (e.g. newline) are escaped. - - - - - All non-ASCII and control characters (e.g. newline) are escaped. - - - - - HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. - - - - - Indicates the method that will be used during deserialization for locating and loading assemblies. - - - - - In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. - - - - - In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. - - - - - Specifies type name handling options for the . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Do not include the .NET type name when serializing types. - - - - - Include the .NET type name when serializing into a JSON object structure. - - - - - Include the .NET type name when serializing into a JSON array structure. - - - - - Always include the .NET type name when serializing. - - - - - Include the .NET type name when the type of the object being serialized is not the same as its declared type. - Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON - you must specify a root type object with - or . - - - - - Determines whether the collection is null or empty. - - The collection. - - true if the collection is null or empty; otherwise, false. - - - - - Adds the elements of the specified collection to the specified generic . - - The list to add to. - The collection of elements to add. - - - - Converts the value to the specified type. If the value is unable to be converted, the - value is checked whether it assignable to the specified type. - - The value to convert. - The culture to use when converting. - The type to convert or cast the value to. - - The converted type. If conversion was unsuccessful, the initial value - is returned if assignable to the target type. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic that returns a result - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Returns a Restrictions object which includes our current restrictions merged - with a restriction limiting our type - - - - - Helper class for serializing immutable collections. - Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed - https://github.com/JamesNK/Newtonsoft.Json/issues/652 - - - - - Gets the type of the typed collection's items. - - The type. - The type of the typed collection's items. - - - - Gets the member's underlying type. - - The member. - The underlying type of the member. - - - - Determines whether the property is an indexed property. - - The property. - - true if the property is an indexed property; otherwise, false. - - - - - Gets the member's value on the object. - - The member. - The target object. - The member's value on the object. - - - - Sets the member's value on the target object. - - The member. - The target. - The value. - - - - Determines whether the specified MemberInfo can be read. - - The MemberInfo to determine whether can be read. - /// if set to true then allow the member to be gotten non-publicly. - - true if the specified MemberInfo can be read; otherwise, false. - - - - - Determines whether the specified MemberInfo can be set. - - The MemberInfo to determine whether can be set. - if set to true then allow the member to be set non-publicly. - if set to true then allow the member to be set if read-only. - - true if the specified MemberInfo can be set; otherwise, false. - - - - - Builds a string. Unlike this class lets you reuse its internal buffer. - - - - - Determines whether the string is all white space. Empty string will return false. - - The string to test whether it is all white space. - - true if the string is all white space; otherwise, false. - - - - - Specifies the state of the . - - - - - An exception has been thrown, which has left the in an invalid state. - You may call the method to put the in the Closed state. - Any other method calls result in an being thrown. - - - - - The method has been called. - - - - - An object is being written. - - - - - An array is being written. - - - - - A constructor is being written. - - - - - A property is being written. - - - - - A write method has not been called. - - - - Specifies that an output will not be null even if the corresponding type allows it. - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that an output may be null even if the corresponding type disallows it. - - - Specifies that null is allowed as an input even if the corresponding type disallows it. - - - - Specifies that the method will not return if the associated Boolean parameter is passed the specified value. - - - - - Initializes a new instance of the class. - - - The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to - the associated parameter matches this value. - - - - Gets the condition parameter value. - - - diff --git a/AUTS_AOI/bin/Debug/OpenCvSharp.Extensions.dll b/AUTS_AOI/bin/Debug/OpenCvSharp.Extensions.dll deleted file mode 100644 index 8a1acdb..0000000 Binary files a/AUTS_AOI/bin/Debug/OpenCvSharp.Extensions.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/OpenCvSharp.Extensions.xml b/AUTS_AOI/bin/Debug/OpenCvSharp.Extensions.xml deleted file mode 100644 index 73de4e7..0000000 --- a/AUTS_AOI/bin/Debug/OpenCvSharp.Extensions.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - OpenCvSharp.Extensions - - - - - Various binarization methods (ATTENTION : The methods of this class is not implemented in OpenCV) - - - - - Binarizes by Niblack's method (This is faster but memory-hogging) - - Input image - Output image - Window size - Adequate coefficient - - - - Binarizes by Sauvola's method (This is faster but memory-hogging) - - Input image - Output image - Window size - Adequate coefficient - Adequate coefficient - - - - Binarizes by Bernsen's method - - Input image - Output image - Window size - Adequate coefficient - Adequate coefficient - - - - Binarizes by Nick's method - - Input image - Output image - Window size - Adequate coefficient - - - - 注目画素の周辺画素の最大値と最小値を求める - - 画像の画素データ - x座標 - y座標 - 周辺画素の探索サイズ。奇数でなければならない - 出力される最小値 - 出力される最大値 - - - - static class which provides conversion between System.Drawing.Bitmap and Mat - - - - - Converts System.Drawing.Bitmap to Mat - - System.Drawing.Bitmap object to be converted - A Mat object which is converted from System.Drawing.Bitmap - - - - Converts System.Drawing.Bitmap to Mat - - System.Drawing.Bitmap object to be converted - A Mat object which is converted from System.Drawing.Bitmap - - - - Converts Mat to System.Drawing.Bitmap - - Mat - - - - - Converts Mat to System.Drawing.Bitmap - - Mat - Pixel Depth - - - - - Converts Mat to System.Drawing.Bitmap - - Mat - Mat - Author: shimat, Gummo (ROI support) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Provides information for the platform which the user is using - - - - - OS type - - - - - Runtime type - - - - diff --git a/AUTS_AOI/bin/Debug/OpenCvSharp.dll b/AUTS_AOI/bin/Debug/OpenCvSharp.dll deleted file mode 100644 index 0555dda..0000000 Binary files a/AUTS_AOI/bin/Debug/OpenCvSharp.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/OpenCvSharp.xml b/AUTS_AOI/bin/Debug/OpenCvSharp.xml deleted file mode 100644 index 6883bf7..0000000 --- a/AUTS_AOI/bin/Debug/OpenCvSharp.xml +++ /dev/null @@ -1,38914 +0,0 @@ - - - - OpenCvSharp - - - - - OpenCV Functions of C++ I/F (cv::xxx) - - - - - The ratio of a circle's circumference to its diameter - - - - - - - - - - - - - - - 引数がnullの時はIntPtr.Zeroに変換する - - - - - - - converts rotation vector to rotation matrix or vice versa using Rodrigues transformation - - Input rotation vector (3x1 or 1x3) or rotation matrix (3x3). - Output rotation matrix (3x3) or rotation vector (3x1 or 1x3), respectively. - Optional output Jacobian matrix, 3x9 or 9x3, which is a matrix of partial derivatives of the output array components with respect to the input array components. - - - - converts rotation vector to rotation matrix using Rodrigues transformation - - Input rotation vector (3x1). - Output rotation matrix (3x3). - Optional output Jacobian matrix, 3x9, which is a matrix of partial derivatives of the output array components with respect to the input array components. - - - - converts rotation matrix to rotation vector using Rodrigues transformation - - Input rotation matrix (3x3). - Output rotation vector (3x1). - Optional output Jacobian matrix, 3x9, which is a matrix of partial derivatives of the output array components with respect to the input array components. - - - - computes the best-fit perspective transformation mapping srcPoints to dstPoints. - - Coordinates of the points in the original plane, a matrix of the type CV_32FC2 - Coordinates of the points in the target plane, a matrix of the type CV_32FC2 - Method used to computed a homography matrix. - Maximum allowed reprojection error to treat a point pair as an inlier (used in the RANSAC method only) - Optional output mask set by a robust method ( CV_RANSAC or CV_LMEDS ). Note that the input mask values are ignored. - The maximum number of RANSAC iterations. - Confidence level, between 0 and 1. - - - - - computes the best-fit perspective transformation mapping srcPoints to dstPoints. - - Coordinates of the points in the original plane - Coordinates of the points in the target plane - Method used to computed a homography matrix. - Maximum allowed reprojection error to treat a point pair as an inlier (used in the RANSAC method only) - Optional output mask set by a robust method ( CV_RANSAC or CV_LMEDS ). Note that the input mask values are ignored. - The maximum number of RANSAC iterations. - Confidence level, between 0 and 1. - - - - - computes the best-fit perspective transformation mapping srcPoints to dstPoints. - - Coordinates of the points in the original plane, a matrix of the type CV_32FC2 - Coordinates of the points in the target plane, a matrix of the type CV_32FC2 - Optional output mask set by a robust method ( CV_RANSAC or CV_LMEDS ). Note that the input mask values are ignored. - - - - - - - Computes RQ decomposition of 3x3 matrix - - 3x3 input matrix. - Output 3x3 upper-triangular matrix. - Output 3x3 orthogonal matrix. - Optional output 3x3 rotation matrix around x-axis. - Optional output 3x3 rotation matrix around y-axis. - Optional output 3x3 rotation matrix around z-axis. - - - - - Computes RQ decomposition of 3x3 matrix - - 3x3 input matrix. - Output 3x3 upper-triangular matrix. - Output 3x3 orthogonal matrix. - - - - - Computes RQ decomposition of 3x3 matrix - - 3x3 input matrix. - Output 3x3 upper-triangular matrix. - Output 3x3 orthogonal matrix. - Optional output 3x3 rotation matrix around x-axis. - Optional output 3x3 rotation matrix around y-axis. - Optional output 3x3 rotation matrix around z-axis. - - - - - Decomposes the projection matrix into camera matrix and the rotation martix and the translation vector - - 3x4 input projection matrix P. - Output 3x3 camera matrix K. - Output 3x3 external rotation matrix R. - Output 4x1 translation vector T. - Optional 3x3 rotation matrix around x-axis. - Optional 3x3 rotation matrix around y-axis. - Optional 3x3 rotation matrix around z-axis. - ptional three-element vector containing three Euler angles of rotation in degrees. - - - - Decomposes the projection matrix into camera matrix and the rotation martix and the translation vector - - 3x4 input projection matrix P. - Output 3x3 camera matrix K. - Output 3x3 external rotation matrix R. - Output 4x1 translation vector T. - Optional 3x3 rotation matrix around x-axis. - Optional 3x3 rotation matrix around y-axis. - Optional 3x3 rotation matrix around z-axis. - ptional three-element vector containing three Euler angles of rotation in degrees. - - - - Decomposes the projection matrix into camera matrix and the rotation martix and the translation vector - - 3x4 input projection matrix P. - Output 3x3 camera matrix K. - Output 3x3 external rotation matrix R. - Output 4x1 translation vector T. - - - - computes derivatives of the matrix product w.r.t each of the multiplied matrix coefficients - - First multiplied matrix. - Second multiplied matrix. - First output derivative matrix d(A*B)/dA of size A.rows*B.cols X A.rows*A.cols . - Second output derivative matrix d(A*B)/dB of size A.rows*B.cols X B.rows*B.cols . - - - - composes 2 [R|t] transformations together. Also computes the derivatives of the result w.r.t the arguments - - First rotation vector. - First translation vector. - Second rotation vector. - Second translation vector. - Output rotation vector of the superposition. - Output translation vector of the superposition. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - - - - composes 2 [R|t] transformations together. Also computes the derivatives of the result w.r.t the arguments - - First rotation vector. - First translation vector. - Second rotation vector. - Second translation vector. - Output rotation vector of the superposition. - Output translation vector of the superposition. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - Optional output derivatives of rvec3 or tvec3 with regard to rvec1, rvec2, tvec1 and tvec2, respectively. - - - - composes 2 [R|t] transformations together. Also computes the derivatives of the result w.r.t the arguments - - First rotation vector. - First translation vector. - Second rotation vector. - Second translation vector. - Output rotation vector of the superposition. - Output translation vector of the superposition. - - - - projects points from the model coordinate space to the image coordinates. - Also computes derivatives of the image coordinates w.r.t the intrinsic - and extrinsic camera parameters - - Array of object points, 3xN/Nx3 1-channel or - 1xN/Nx1 3-channel, where N is the number of points in the view. - Rotation vector (3x1). - Translation vector (3x1). - Camera matrix (3x3) - Input vector of distortion coefficients - (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output array of image points, 2xN/Nx2 1-channel - or 1xN/Nx1 2-channel - Optional output 2Nx(10 + numDistCoeffs) jacobian matrix - of derivatives of image points with respect to components of the rotation vector, - translation vector, focal lengths, coordinates of the principal point and - the distortion coefficients. In the old interface different components of - the jacobian are returned via different output parameters. - Optional “fixed aspect ratio” parameter. - If the parameter is not 0, the function assumes that the aspect ratio (fx/fy) - is fixed and correspondingly adjusts the jacobian matrix. - - - - projects points from the model coordinate space to the image coordinates. - Also computes derivatives of the image coordinates w.r.t the intrinsic - and extrinsic camera parameters - - Array of object points, 3xN/Nx3 1-channel or - 1xN/Nx1 3-channel, where N is the number of points in the view. - Rotation vector (3x1). - Translation vector (3x1). - Camera matrix (3x3) - Input vector of distortion coefficients - (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output array of image points, 2xN/Nx2 1-channel - or 1xN/Nx1 2-channel - Optional output 2Nx(10 + numDistCoeffs) jacobian matrix - of derivatives of image points with respect to components of the rotation vector, - translation vector, focal lengths, coordinates of the principal point and - the distortion coefficients. In the old interface different components of - the jacobian are returned via different output parameters. - Optional “fixed aspect ratio” parameter. - If the parameter is not 0, the function assumes that the aspect ratio (fx/fy) - is fixed and correspondingly adjusts the jacobian matrix. - - - - Finds an object pose from 3D-2D point correspondences. - - Array of object points in the object coordinate space, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel, - where N is the number of points. vector<Point3f> can be also passed here. - Array of corresponding image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, - where N is the number of points. vector<Point2f> can be also passed here. - Input camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output rotation vector that, together with tvec , brings points from the model coordinate system to the - camera coordinate system. - Output translation vector. - If true, the function uses the provided rvec and tvec values as initial approximations of - the rotation and translation vectors, respectively, and further optimizes them. - Method for solving a PnP problem: - - - - Finds an object pose from 3D-2D point correspondences. - - Array of object points in the object coordinate space, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel, - where N is the number of points. vector<Point3f> can be also passed here. - Array of corresponding image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, - where N is the number of points. vector<Point2f> can be also passed here. - Input camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output rotation vector that, together with tvec , brings points from the model coordinate system to the - camera coordinate system. - Output translation vector. - If true, the function uses the provided rvec and tvec values as initial approximations of - the rotation and translation vectors, respectively, and further optimizes them. - Method for solving a PnP problem - - - - computes the camera pose from a few 3D points and the corresponding projections. The outliers are possible. - - Array of object points in the object coordinate space, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel, - where N is the number of points. List<Point3f> can be also passed here. - Array of corresponding image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, where N is the number of points. - List<Point2f> can be also passed here. - Input 3x3 camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output rotation vector that, together with tvec , brings points from the model coordinate system - to the camera coordinate system. - Output translation vector. - If true, the function uses the provided rvec and tvec values as initial approximations - of the rotation and translation vectors, respectively, and further optimizes them. - Number of iterations. - Inlier threshold value used by the RANSAC procedure. - The parameter value is the maximum allowed distance between the observed and computed point projections to consider it an inlier. - The probability that the algorithm produces a useful result. - Output vector that contains indices of inliers in objectPoints and imagePoints . - Method for solving a PnP problem - - - - computes the camera pose from a few 3D points and the corresponding projections. The outliers are possible. - - Array of object points in the object coordinate space, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel, - where N is the number of points. List<Point3f> can be also passed here. - Array of corresponding image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, where N is the number of points. - List<Point2f> can be also passed here. - Input 3x3 camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output rotation vector that, together with tvec , brings points from the model coordinate system - to the camera coordinate system. - Output translation vector. - - - - computes the camera pose from a few 3D points and the corresponding projections. The outliers are possible. - - Array of object points in the object coordinate space, 3xN/Nx3 1-channel or 1xN/Nx1 3-channel, - where N is the number of points. List<Point3f> can be also passed here. - Array of corresponding image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, where N is the number of points. - List<Point2f> can be also passed here. - Input 3x3 camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Output rotation vector that, together with tvec , brings points from the model coordinate system - to the camera coordinate system. - Output translation vector. - If true, the function uses the provided rvec and tvec values as initial approximations - of the rotation and translation vectors, respectively, and further optimizes them. - Number of iterations. - Inlier threshold value used by the RANSAC procedure. - The parameter value is the maximum allowed distance between the observed and computed point projections to consider it an inlier. - The probability that the algorithm produces a useful result. - Output vector that contains indices of inliers in objectPoints and imagePoints . - Method for solving a PnP problem - - - - initializes camera matrix from a few 3D points and the corresponding projections. - - Vector of vectors (vector<vector<Point3d>>) of the calibration pattern points in the calibration pattern coordinate space. In the old interface all the per-view vectors are concatenated. - Vector of vectors (vector<vector<Point2d>>) of the projections of the calibration pattern points. In the old interface all the per-view vectors are concatenated. - Image size in pixels used to initialize the principal point. - If it is zero or negative, both f_x and f_y are estimated independently. Otherwise, f_x = f_y * aspectRatio . - - - - - initializes camera matrix from a few 3D points and the corresponding projections. - - Vector of vectors of the calibration pattern points in the calibration pattern coordinate space. In the old interface all the per-view vectors are concatenated. - Vector of vectors of the projections of the calibration pattern points. In the old interface all the per-view vectors are concatenated. - Image size in pixels used to initialize the principal point. - If it is zero or negative, both f_x and f_y are estimated independently. Otherwise, f_x = f_y * aspectRatio . - - - - - Finds the positions of internal corners of the chessboard. - - Source chessboard view. It must be an 8-bit grayscale or color image. - Number of inner corners per a chessboard row and column - ( patternSize = Size(points_per_row,points_per_colum) = Size(columns, rows) ). - Output array of detected corners. - Various operation flags that can be zero or a combination of the ChessboardFlag values - The function returns true if all of the corners are found and they are placed in a certain order (row by row, left to right in every row). - Otherwise, if the function fails to find all the corners or reorder them, it returns false. - - - - Finds the positions of internal corners of the chessboard. - - Source chessboard view. It must be an 8-bit grayscale or color image. - Number of inner corners per a chessboard row and column - ( patternSize = Size(points_per_row,points_per_colum) = Size(columns, rows) ). - Output array of detected corners. - Various operation flags that can be zero or a combination of the ChessboardFlag values - The function returns true if all of the corners are found and they are placed in a certain order (row by row, left to right in every row). - Otherwise, if the function fails to find all the corners or reorder them, it returns false. - - - - Checks whether the image contains chessboard of the specific size or not. - - - - - - - - Finds the positions of internal corners of the chessboard using a sector based approach. - - image Source chessboard view. It must be an 8-bit grayscale or color image. - Number of inner corners per a chessboard row and column - (patternSize = Size(points_per_row, points_per_column) = Size(columns, rows) ). - Output array of detected corners. - flags Various operation flags that can be zero or a combination of the ChessboardFlags values. - - - - - Finds the positions of internal corners of the chessboard using a sector based approach. - - image Source chessboard view. It must be an 8-bit grayscale or color image. - Number of inner corners per a chessboard row and column - (patternSize = Size(points_per_row, points_per_column) = Size(columns, rows) ). - Output array of detected corners. - flags Various operation flags that can be zero or a combination of the ChessboardFlags values. - - - - - finds subpixel-accurate positions of the chessboard corners - - - - - - - - - finds subpixel-accurate positions of the chessboard corners - - - - - - - - - Renders the detected chessboard corners. - - Destination image. It must be an 8-bit color image. - Number of inner corners per a chessboard row and column (patternSize = cv::Size(points_per_row,points_per_column)). - Array of detected corners, the output of findChessboardCorners. - Parameter indicating whether the complete board was found or not. The return value of findChessboardCorners() should be passed here. - - - - Renders the detected chessboard corners. - - Destination image. It must be an 8-bit color image. - Number of inner corners per a chessboard row and column (patternSize = cv::Size(points_per_row,points_per_column)). - Array of detected corners, the output of findChessboardCorners. - Parameter indicating whether the complete board was found or not. The return value of findChessboardCorners() should be passed here. - - - - Draw axes of the world/object coordinate system from pose estimation. - - Input/output image. It must have 1 or 3 channels. The number of channels is not altered. - Input 3x3 floating-point matrix of camera intrinsic parameters. - Input vector of distortion coefficients - \f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6[, s_1, s_2, s_3, s_4[, \tau_x, \tau_y]]]])\f$ of - 4, 5, 8, 12 or 14 elements.If the vector is empty, the zero distortion coefficients are assumed. - Rotation vector (see @ref Rodrigues ) that, together with tvec , brings points from - the model coordinate system to the camera coordinate system. - Translation vector. - Length of the painted axes in the same unit than tvec (usually in meters). - Line thickness of the painted axes. - This function draws the axes of the world/object coordinate system w.r.t. to the camera frame. - OX is drawn in red, OY in green and OZ in blue. - - - - Finds centers in the grid of circles. - - grid view of input circles; it must be an 8-bit grayscale or color image. - number of circles per row and column ( patternSize = Size(points_per_row, points_per_colum) ). - output array of detected centers. - various operation flags that can be one of the FindCirclesGridFlag values - feature detector that finds blobs like dark circles on light background. - - - - - Finds centers in the grid of circles. - - grid view of input circles; it must be an 8-bit grayscale or color image. - number of circles per row and column ( patternSize = Size(points_per_row, points_per_colum) ). - output array of detected centers. - various operation flags that can be one of the FindCirclesGridFlag values - feature detector that finds blobs like dark circles on light background. - - - - - finds intrinsic and extrinsic camera parameters from several fews of a known calibration pattern. - - In the new interface it is a vector of vectors of calibration pattern points in the calibration pattern coordinate space. - The outer vector contains as many elements as the number of the pattern views. If the same calibration pattern is shown in each view and - it is fully visible, all the vectors will be the same. Although, it is possible to use partially occluded patterns, or even different patterns - in different views. Then, the vectors will be different. The points are 3D, but since they are in a pattern coordinate system, then, - if the rig is planar, it may make sense to put the model to a XY coordinate plane so that Z-coordinate of each input object point is 0. - In the old interface all the vectors of object points from different views are concatenated together. - In the new interface it is a vector of vectors of the projections of calibration pattern points. - imagePoints.Count() and objectPoints.Count() and imagePoints[i].Count() must be equal to objectPoints[i].Count() for each i. - Size of the image used only to initialize the intrinsic camera matrix. - Output 3x3 floating-point camera matrix. - If CV_CALIB_USE_INTRINSIC_GUESS and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be - initialized before calling the function. - Output vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - Output vector of rotation vectors (see Rodrigues() ) estimated for each pattern view. That is, each k-th rotation vector - together with the corresponding k-th translation vector (see the next output parameter description) brings the calibration pattern - from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the - calibration pattern in the k-th pattern view (k=0.. M -1) - Output vector of translation vectors estimated for each pattern view. - Different flags that may be zero or a combination of the CalibrationFlag values - Termination criteria for the iterative optimization algorithm. - - - - - finds intrinsic and extrinsic camera parameters from several fews of a known calibration pattern. - - In the new interface it is a vector of vectors of calibration pattern points in the calibration pattern coordinate space. - The outer vector contains as many elements as the number of the pattern views. If the same calibration pattern is shown in each view and - it is fully visible, all the vectors will be the same. Although, it is possible to use partially occluded patterns, or even different patterns - in different views. Then, the vectors will be different. The points are 3D, but since they are in a pattern coordinate system, then, - if the rig is planar, it may make sense to put the model to a XY coordinate plane so that Z-coordinate of each input object point is 0. - In the old interface all the vectors of object points from different views are concatenated together. - In the new interface it is a vector of vectors of the projections of calibration pattern points. - imagePoints.Count() and objectPoints.Count() and imagePoints[i].Count() must be equal to objectPoints[i].Count() for each i. - Size of the image used only to initialize the intrinsic camera matrix. - Output 3x3 floating-point camera matrix. - If CV_CALIB_USE_INTRINSIC_GUESS and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be - initialized before calling the function. - Output vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - Output vector of rotation vectors (see Rodrigues() ) estimated for each pattern view. That is, each k-th rotation vector - together with the corresponding k-th translation vector (see the next output parameter description) brings the calibration pattern - from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the - calibration pattern in the k-th pattern view (k=0.. M -1) - Output vector of translation vectors estimated for each pattern view. - Different flags that may be zero or a combination of the CalibrationFlag values - Termination criteria for the iterative optimization algorithm. - - - - - computes several useful camera characteristics from the camera matrix, camera frame resolution and the physical sensor size. - - Input camera matrix that can be estimated by calibrateCamera() or stereoCalibrate() . - Input image size in pixels. - Physical width of the sensor. - Physical height of the sensor. - Output field of view in degrees along the horizontal sensor axis. - Output field of view in degrees along the vertical sensor axis. - Focal length of the lens in mm. - Principal point in pixels. - fy / fx - - - - computes several useful camera characteristics from the camera matrix, camera frame resolution and the physical sensor size. - - Input camera matrix that can be estimated by calibrateCamera() or stereoCalibrate() . - Input image size in pixels. - Physical width of the sensor. - Physical height of the sensor. - Output field of view in degrees along the horizontal sensor axis. - Output field of view in degrees along the vertical sensor axis. - Focal length of the lens in mm. - Principal point in pixels. - fy / fx - - - - finds intrinsic and extrinsic parameters of a stereo camera - - Vector of vectors of the calibration pattern points. - Vector of vectors of the projections of the calibration pattern points, observed by the first camera. - Vector of vectors of the projections of the calibration pattern points, observed by the second camera. - Input/output first camera matrix - Input/output vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - The output vector length depends on the flags. - Input/output second camera matrix. The parameter is similar to cameraMatrix1 . - Input/output lens distortion coefficients for the second camera. The parameter is similar to distCoeffs1 . - Size of the image used only to initialize intrinsic camera matrix. - Output rotation matrix between the 1st and the 2nd camera coordinate systems. - Output translation vector between the coordinate systems of the cameras. - Output essential matrix. - Output fundamental matrix. - Termination criteria for the iterative optimization algorithm. - Different flags that may be zero or a combination of the CalibrationFlag values - - - - - finds intrinsic and extrinsic parameters of a stereo camera - - Vector of vectors of the calibration pattern points. - Vector of vectors of the projections of the calibration pattern points, observed by the first camera. - Vector of vectors of the projections of the calibration pattern points, observed by the second camera. - Input/output first camera matrix - Input/output vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - The output vector length depends on the flags. - Input/output second camera matrix. The parameter is similar to cameraMatrix1 . - Input/output lens distortion coefficients for the second camera. The parameter is similar to distCoeffs1 . - Size of the image used only to initialize intrinsic camera matrix. - Output rotation matrix between the 1st and the 2nd camera coordinate systems. - Output translation vector between the coordinate systems of the cameras. - Output essential matrix. - Output fundamental matrix. - Termination criteria for the iterative optimization algorithm. - Different flags that may be zero or a combination of the CalibrationFlag values - - - - - computes the rectification transformation for a stereo camera from its intrinsic and extrinsic parameters - - First camera matrix. - First camera distortion parameters. - Second camera matrix. - Second camera distortion parameters. - Size of the image used for stereo calibration. - Rotation matrix between the coordinate systems of the first and the second cameras. - Translation vector between coordinate systems of the cameras. - Output 3x3 rectification transform (rotation matrix) for the first camera. - Output 3x3 rectification transform (rotation matrix) for the second camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. - Output 4x4 disparity-to-depth mapping matrix (see reprojectImageTo3D() ). - Operation flags that may be zero or CV_CALIB_ZERO_DISPARITY. - If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. - And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. - Free scaling parameter. - If it is -1 or absent, the function performs the default scaling. Otherwise, the parameter should be between 0 and 1. - alpha=0 means that the rectified images are zoomed and shifted so that only valid pixels are visible (no black areas after rectification). - alpha=1 means that the rectified image is decimated and shifted so that all the pixels from the original images from the cameras are retained - in the rectified images (no source image pixels are lost). Obviously, any intermediate value yields an intermediate result between those two extreme cases. - New image resolution after rectification. The same size should be passed to initUndistortRectifyMap(). When (0,0) is passed (default), it is set to the original imageSize . - Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. - - - - computes the rectification transformation for a stereo camera from its intrinsic and extrinsic parameters - - First camera matrix. - First camera distortion parameters. - Second camera matrix. - Second camera distortion parameters. - Size of the image used for stereo calibration. - Rotation matrix between the coordinate systems of the first and the second cameras. - Translation vector between coordinate systems of the cameras. - Output 3x3 rectification transform (rotation matrix) for the first camera. - Output 3x3 rectification transform (rotation matrix) for the second camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. - Output 4x4 disparity-to-depth mapping matrix (see reprojectImageTo3D() ). - Operation flags that may be zero or CV_CALIB_ZERO_DISPARITY. - If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. - And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. - Free scaling parameter. - If it is -1 or absent, the function performs the default scaling. Otherwise, the parameter should be between 0 and 1. - alpha=0 means that the rectified images are zoomed and shifted so that only valid pixels are visible (no black areas after rectification). - alpha=1 means that the rectified image is decimated and shifted so that all the pixels from the original images from the cameras are retained - in the rectified images (no source image pixels are lost). Obviously, any intermediate value yields an intermediate result between those two extreme cases. - New image resolution after rectification. The same size should be passed to initUndistortRectifyMap(). When (0,0) is passed (default), it is set to the original imageSize . - Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. - Optional output rectangles inside the rectified images where all the pixels are valid. If alpha=0 , the ROIs cover the whole images. - Otherwise, they are likely to be smaller. - Optional output rectangles inside the rectified images where all the pixels are valid. If alpha=0 , the ROIs cover the whole images. - Otherwise, they are likely to be smaller. - - - - computes the rectification transformation for a stereo camera from its intrinsic and extrinsic parameters - - First camera matrix. - First camera distortion parameters. - Second camera matrix. - Second camera distortion parameters. - Size of the image used for stereo calibration. - Rotation matrix between the coordinate systems of the first and the second cameras. - Translation vector between coordinate systems of the cameras. - Output 3x3 rectification transform (rotation matrix) for the first camera. - Output 3x3 rectification transform (rotation matrix) for the second camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. - Output 4x4 disparity-to-depth mapping matrix (see reprojectImageTo3D() ). - Operation flags that may be zero or CV_CALIB_ZERO_DISPARITY. - If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. - And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. - Free scaling parameter. - If it is -1 or absent, the function performs the default scaling. Otherwise, the parameter should be between 0 and 1. - alpha=0 means that the rectified images are zoomed and shifted so that only valid pixels are visible (no black areas after rectification). - alpha=1 means that the rectified image is decimated and shifted so that all the pixels from the original images from the cameras are retained - in the rectified images (no source image pixels are lost). Obviously, any intermediate value yields an intermediate result between those two extreme cases. - New image resolution after rectification. The same size should be passed to initUndistortRectifyMap(). When (0,0) is passed (default), it is set to the original imageSize . - Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. - - - - computes the rectification transformation for a stereo camera from its intrinsic and extrinsic parameters - - First camera matrix. - First camera distortion parameters. - Second camera matrix. - Second camera distortion parameters. - Size of the image used for stereo calibration. - Rotation matrix between the coordinate systems of the first and the second cameras. - Translation vector between coordinate systems of the cameras. - Output 3x3 rectification transform (rotation matrix) for the first camera. - Output 3x3 rectification transform (rotation matrix) for the second camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. - Output 4x4 disparity-to-depth mapping matrix (see reprojectImageTo3D() ). - Operation flags that may be zero or CV_CALIB_ZERO_DISPARITY. - If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. - And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. - Free scaling parameter. - If it is -1 or absent, the function performs the default scaling. Otherwise, the parameter should be between 0 and 1. - alpha=0 means that the rectified images are zoomed and shifted so that only valid pixels are visible (no black areas after rectification). - alpha=1 means that the rectified image is decimated and shifted so that all the pixels from the original images from the cameras are retained - in the rectified images (no source image pixels are lost). Obviously, any intermediate value yields an intermediate result between those two extreme cases. - New image resolution after rectification. The same size should be passed to initUndistortRectifyMap(). When (0,0) is passed (default), it is set to the original imageSize . - Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. - Optional output rectangles inside the rectified images where all the pixels are valid. If alpha=0 , the ROIs cover the whole images. - Otherwise, they are likely to be smaller. - Optional output rectangles inside the rectified images where all the pixels are valid. If alpha=0 , the ROIs cover the whole images. - Otherwise, they are likely to be smaller. - - - - computes the rectification transformation for an uncalibrated stereo camera (zero distortion is assumed) - - Array of feature points in the first image. - The corresponding points in the second image. - The same formats as in findFundamentalMat() are supported. - Input fundamental matrix. It can be computed from the same set - of point pairs using findFundamentalMat() . - Size of the image. - Output rectification homography matrix for the first image. - Output rectification homography matrix for the second image. - Optional threshold used to filter out the outliers. - If the parameter is greater than zero, all the point pairs that do not comply - with the epipolar geometry (that is, the points for which |points2[i]^T * F * points1[i]| > threshold ) - are rejected prior to computing the homographies. Otherwise, all the points are considered inliers. - - - - - computes the rectification transformation for an uncalibrated stereo camera (zero distortion is assumed) - - Array of feature points in the first image. - The corresponding points in the second image. - The same formats as in findFundamentalMat() are supported. - Input fundamental matrix. It can be computed from the same set - of point pairs using findFundamentalMat() . - Size of the image. - Output rectification homography matrix for the first image. - Output rectification homography matrix for the second image. - Optional threshold used to filter out the outliers. - If the parameter is greater than zero, all the point pairs that do not comply - with the epipolar geometry (that is, the points for which |points2[i]^T * F * points1[i]| > threshold ) - are rejected prior to computing the homographies. Otherwise, all the points are considered inliers. - - - - - computes the rectification transformations for 3-head camera, where all the heads are on the same line. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns the new camera matrix based on the free scaling parameter. - - Input camera matrix. - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the array is null, the zero distortion coefficients are assumed. - Original image size. - Free scaling parameter between 0 (when all the pixels in the undistorted image are valid) - and 1 (when all the source image pixels are retained in the undistorted image). - Image size after rectification. By default,it is set to imageSize . - Optional output rectangle that outlines all-good-pixels region in the undistorted image. See roi1, roi2 description in stereoRectify() . - Optional flag that indicates whether in the new camera matrix the principal point - should be at the image center or not. By default, the principal point is chosen to best fit a - subset of the source image (determined by alpha) to the corrected image. - optimal new camera matrix - - - - Returns the new camera matrix based on the free scaling parameter. - - Input camera matrix. - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the array is null, the zero distortion coefficients are assumed. - Original image size. - Free scaling parameter between 0 (when all the pixels in the undistorted image are valid) - and 1 (when all the source image pixels are retained in the undistorted image). - Image size after rectification. By default,it is set to imageSize . - Optional output rectangle that outlines all-good-pixels region in the undistorted image. See roi1, roi2 description in stereoRectify() . - Optional flag that indicates whether in the new camera matrix the principal point - should be at the image center or not. By default, the principal point is chosen to best fit a - subset of the source image (determined by alpha) to the corrected image. - optimal new camera matrix - - - - Computes Hand-Eye calibration. - - The function performs the Hand-Eye calibration using various methods. One approach consists in estimating the - rotation then the translation(separable solutions) and the following methods are implemented: - - R.Tsai, R.Lenz A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/EyeCalibration \cite Tsai89 - - F.Park, B.Martin Robot Sensor Calibration: Solving AX = XB on the Euclidean Group \cite Park94 - - R.Horaud, F.Dornaika Hand-Eye Calibration \cite Horaud95 - - Another approach consists in estimating simultaneously the rotation and the translation(simultaneous solutions), - with the following implemented method: - - N.Andreff, R.Horaud, B.Espiau On-line Hand-Eye Calibration \cite Andreff99 - - K.Daniilidis Hand-Eye Calibration Using Dual Quaternions \cite Daniilidis98 - - Rotation part extracted from the homogeneous matrix that - transforms a pointexpressed in the gripper frame to the robot base frame that contains the rotation - matrices for all the transformationsfrom gripper frame to robot base frame. - Translation part extracted from the homogeneous matrix that transforms a point - expressed in the gripper frame to the robot base frame. - This is a vector(`vector<Mat>`) that contains the translation vectors for all the transformations - from gripper frame to robot base frame. - Rotation part extracted from the homogeneous matrix that transforms a point - expressed in the target frame to the camera frame. - This is a vector(`vector<Mat>`) that contains the rotation matrices for all the transformations - from calibration target frame to camera frame. - Rotation part extracted from the homogeneous matrix that transforms a point - expressed in the target frame to the camera frame. - This is a vector(`vector<Mat>`) that contains the translation vectors for all the transformations - from calibration target frame to camera frame. - Estimated rotation part extracted from the homogeneous matrix that transforms a point - expressed in the camera frame to the gripper frame. - Estimated translation part extracted from the homogeneous matrix that transforms a point - expressed in the camera frame to the gripper frame. - One of the implemented Hand-Eye calibration method - - - - Computes Robot-World/Hand-Eye calibration. - The function performs the Robot-World/Hand-Eye calibration using various methods. One approach consists in estimating the - rotation then the translation(separable solutions): - - M.Shah, Solving the robot-world/hand-eye calibration problem using the kronecker product \cite Shah2013SolvingTR - - [in] R_world2cam Rotation part extracted from the homogeneous matrix that transforms a point - expressed in the world frame to the camera frame. This is a vector of Mat that contains the rotation, - `(3x3)` rotation matrices or `(3x1)` rotation vectors,for all the transformations from world frame to the camera frame. - [in] Translation part extracted from the homogeneous matrix that transforms a point - expressed in the world frame to the camera frame. This is a vector (`vector<Mat>`) that contains the `(3x1)` - translation vectors for all the transformations from world frame to the camera frame. - [in] Rotation part extracted from the homogeneous matrix that transforms a point expressed - in the robot base frame to the gripper frame. This is a vector (`vector<Mat>`) that contains the rotation, - `(3x3)` rotation matrices or `(3x1)` rotation vectors, for all the transformations from robot base frame to the gripper frame. - [in] Rotation part extracted from the homogeneous matrix that transforms a point - expressed in the robot base frame to the gripper frame. This is a vector (`vector<Mat>`) that contains the - `(3x1)` translation vectors for all the transformations from robot base frame to the gripper frame. - [out] R_base2world Estimated `(3x3)` rotation part extracted from the homogeneous matrix - that transforms a point expressed in the robot base frame to the world frame. - [out] t_base2world Estimated `(3x1)` translation part extracted from the homogeneous matrix - that transforms a point expressed in the robot base frame to the world frame. - [out] R_gripper2cam Estimated `(3x3)` rotation part extracted from the homogeneous matrix - that transforms a point expressed in the gripper frame to the camera frame. - [out] Estimated `(3x1)` translation part extracted from the homogeneous matrix that - transforms a pointexpressed in the gripper frame to the camera frame. - One of the implemented Robot-World/Hand-Eye calibration method - - - - omputes Robot-World/Hand-Eye calibration. - The function performs the Robot-World/Hand-Eye calibration using various methods. One approach consists in estimating the - rotation then the translation(separable solutions): - - M.Shah, Solving the robot-world/hand-eye calibration problem using the kronecker product \cite Shah2013SolvingTR - - [in] R_world2cam Rotation part extracted from the homogeneous matrix that transforms a point - expressed in the world frame to the camera frame. This is a vector of Mat that contains the rotation, - `(3x3)` rotation matrices or `(3x1)` rotation vectors,for all the transformations from world frame to the camera frame. - [in] Translation part extracted from the homogeneous matrix that transforms a point - expressed in the world frame to the camera frame. This is a vector (`vector<Mat>`) that contains the `(3x1)` - translation vectors for all the transformations from world frame to the camera frame. - [in] Rotation part extracted from the homogeneous matrix that transforms a point expressed - in the robot base frame to the gripper frame. This is a vector (`vector<Mat>`) that contains the rotation, - `(3x3)` rotation matrices or `(3x1)` rotation vectors, for all the transformations from robot base frame to the gripper frame. - [in] Rotation part extracted from the homogeneous matrix that transforms a point - expressed in the robot base frame to the gripper frame. This is a vector (`vector<Mat>`) that contains the - `(3x1)` translation vectors for all the transformations from robot base frame to the gripper frame. - [out] R_base2world Estimated `(3x3)` rotation part extracted from the homogeneous matrix - that transforms a point expressed in the robot base frame to the world frame. - [out] t_base2world Estimated `(3x1)` translation part extracted from the homogeneous matrix - that transforms a point expressed in the robot base frame to the world frame. - [out] R_gripper2cam Estimated `(3x3)` rotation part extracted from the homogeneous matrix - that transforms a point expressed in the gripper frame to the camera frame. - [out] Estimated `(3x1)` translation part extracted from the homogeneous matrix that - transforms a pointexpressed in the gripper frame to the camera frame. - One of the implemented Robot-World/Hand-Eye calibration method - - - - converts point coordinates from normal pixel coordinates to homogeneous coordinates ((x,y)->(x,y,1)) - - Input vector of N-dimensional points. - Output vector of N+1-dimensional points. - - - - converts point coordinates from normal pixel coordinates to homogeneous coordinates ((x,y)->(x,y,1)) - - Input vector of N-dimensional points. - Output vector of N+1-dimensional points. - - - - converts point coordinates from normal pixel coordinates to homogeneous coordinates ((x,y)->(x,y,1)) - - Input vector of N-dimensional points. - Output vector of N+1-dimensional points. - - - - converts point coordinates from homogeneous to normal pixel coordinates ((x,y,z)->(x/z, y/z)) - - Input vector of N-dimensional points. - Output vector of N-1-dimensional points. - - - - converts point coordinates from homogeneous to normal pixel coordinates ((x,y,z)->(x/z, y/z)) - - Input vector of N-dimensional points. - Output vector of N-1-dimensional points. - - - - converts point coordinates from homogeneous to normal pixel coordinates ((x,y,z)->(x/z, y/z)) - - Input vector of N-dimensional points. - Output vector of N-1-dimensional points. - - - - Converts points to/from homogeneous coordinates. - - Input array or vector of 2D, 3D, or 4D points. - Output vector of 2D, 3D, or 4D points. - - - - Calculates a fundamental matrix from the corresponding points in two images. - - Array of N points from the first image. - The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1 . - Method for computing a fundamental matrix. - Parameter used for RANSAC. - It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is - considered an outlier and is not used for computing the final fundamental matrix. It can be set to - something like 1-3, depending on the accuracy of the point localization, image resolution, and the image noise. - Parameter used for the RANSAC or LMedS methods only. - It specifies a desirable level of confidence (probability) that the estimated matrix is correct. - Output array of N elements, every element of which is set to 0 for outliers and - to 1 for the other points. The array is computed only in the RANSAC and LMedS methods. For other methods, it is set to all 1’s. - fundamental matrix - - - - Calculates a fundamental matrix from the corresponding points in two images. - - Array of N points from the first image. - The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1 . - Method for computing a fundamental matrix. - Parameter used for RANSAC. - It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is - considered an outlier and is not used for computing the final fundamental matrix. It can be set to - something like 1-3, depending on the accuracy of the point localization, image resolution, and the image noise. - Parameter used for the RANSAC or LMedS methods only. - It specifies a desirable level of confidence (probability) that the estimated matrix is correct. - Output array of N elements, every element of which is set to 0 for outliers and - to 1 for the other points. The array is computed only in the RANSAC and LMedS methods. For other methods, it is set to all 1’s. - fundamental matrix - - - - Calculates a fundamental matrix from the corresponding points in two images. - - Array of N points from the first image. - The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1 . - Method for computing a fundamental matrix. - Parameter used for RANSAC. - It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is - considered an outlier and is not used for computing the final fundamental matrix. It can be set to - something like 1-3, depending on the accuracy of the point localization, image resolution, and the image noise. - Parameter used for the RANSAC or LMedS methods only. - It specifies a desirable level of confidence (probability) that the estimated matrix is correct. - Output array of N elements, every element of which is set to 0 for outliers and - to 1 for the other points. The array is computed only in the RANSAC and LMedS methods. For other methods, it is set to all 1’s. - fundamental matrix - - - - For points in an image of a stereo pair, computes the corresponding epilines in the other image. - - Input points. N \times 1 or 1 x N matrix of type CV_32FC2 or CV_64FC2. - Index of the image (1 or 2) that contains the points . - Fundamental matrix that can be estimated using findFundamentalMat() or stereoRectify() . - Output vector of the epipolar lines corresponding to the points in the other image. - Each line ax + by + c=0 is encoded by 3 numbers (a, b, c) . - - - - For points in an image of a stereo pair, computes the corresponding epilines in the other image. - - Input points. N \times 1 or 1 x N matrix of type CV_32FC2 or CV_64FC2. - Index of the image (1 or 2) that contains the points . - Fundamental matrix that can be estimated using findFundamentalMat() or stereoRectify() . - Output vector of the epipolar lines corresponding to the points in the other image. - Each line ax + by + c=0 is encoded by 3 numbers (a, b, c) . - - - - For points in an image of a stereo pair, computes the corresponding epilines in the other image. - - Input points. N \times 1 or 1 x N matrix of type CV_32FC2 or CV_64FC2. - Index of the image (1 or 2) that contains the points . - Fundamental matrix that can be estimated using findFundamentalMat() or stereoRectify() . - Output vector of the epipolar lines corresponding to the points in the other image. - Each line ax + by + c=0 is encoded by 3 numbers (a, b, c) . - - - - Reconstructs points by triangulation. - - 3x4 projection matrix of the first camera. - 3x4 projection matrix of the second camera. - 2xN array of feature points in the first image. In case of c++ version - it can be also a vector of feature points or two-channel matrix of size 1xN or Nx1. - 2xN array of corresponding points in the second image. In case of c++ version - it can be also a vector of feature points or two-channel matrix of size 1xN or Nx1. - 4xN array of reconstructed points in homogeneous coordinates. - - - - Reconstructs points by triangulation. - - 3x4 projection matrix of the first camera. - 3x4 projection matrix of the second camera. - 2xN array of feature points in the first image. In case of c++ version - it can be also a vector of feature points or two-channel matrix of size 1xN or Nx1. - 2xN array of corresponding points in the second image. In case of c++ version - it can be also a vector of feature points or two-channel matrix of size 1xN or Nx1. - 4xN array of reconstructed points in homogeneous coordinates. - - - - Refines coordinates of corresponding points. - - 3x3 fundamental matrix. - 1xN array containing the first set of points. - 1xN array containing the second set of points. - The optimized points1. - The optimized points2. - - - - Refines coordinates of corresponding points. - - 3x3 fundamental matrix. - 1xN array containing the first set of points. - 1xN array containing the second set of points. - The optimized points1. - The optimized points2. - - - - Recover relative camera rotation and translation from an estimated essential matrix and the corresponding points in two images, using cheirality check. - Returns the number of inliers which pass the check. - - The input essential matrix. - Array of N 2D points from the first image. The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1. - Camera matrix K=⎡⎣⎢fx000fy0cxcy1⎤⎦⎥ . Note that this function assumes that points1 and points2 are feature points from cameras with the same camera matrix. - Recovered relative rotation. - Recovered relative translation. - Input/output mask for inliers in points1 and points2. : - If it is not empty, then it marks inliers in points1 and points2 for then given essential matrix E. - Only these inliers will be used to recover pose. In the output mask only inliers which pass the cheirality check. - This function decomposes an essential matrix using decomposeEssentialMat and then verifies possible pose hypotheses by doing cheirality check. - The cheirality check basically means that the triangulated 3D points should have positive depth. - - - - Recover relative camera rotation and translation from an estimated essential matrix and the corresponding points in two images, using cheirality check. - Returns the number of inliers which pass the check. - - The input essential matrix. - Array of N 2D points from the first image. The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1. - Recovered relative rotation. - Recovered relative translation. - Focal length of the camera. Note that this function assumes that points1 and points2 are feature points from cameras with same focal length and principal point. - principal point of the camera. - Input/output mask for inliers in points1 and points2. : - If it is not empty, then it marks inliers in points1 and points2 for then given essential matrix E. - Only these inliers will be used to recover pose. In the output mask only inliers which pass the cheirality check. - This function decomposes an essential matrix using decomposeEssentialMat and then verifies possible pose hypotheses by doing cheirality check. - The cheirality check basically means that the triangulated 3D points should have positive depth. - - - - Recover relative camera rotation and translation from an estimated essential matrix and the corresponding points in two images, using cheirality check. - Returns the number of inliers which pass the check. - - The input essential matrix. - Array of N 2D points from the first image. The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1. - Camera matrix K=⎡⎣⎢fx000fy0cxcy1⎤⎦⎥ . Note that this function assumes that points1 and points2 are feature points from cameras with the same camera matrix. - Recovered relative rotation. - Recovered relative translation. - threshold distance which is used to filter out far away points (i.e. infinite points). - Input/output mask for inliers in points1 and points2. : - If it is not empty, then it marks inliers in points1 and points2 for then given essential matrix E. - Only these inliers will be used to recover pose. In the output mask only inliers which pass the cheirality check. - This function decomposes an essential matrix using decomposeEssentialMat and then verifies possible pose hypotheses by doing cheirality check. - The cheirality check basically means that the triangulated 3D points should have positive depth. - 3d points which were reconstructed by triangulation. - - - - Calculates an essential matrix from the corresponding points in two images. - - Array of N (N >= 5) 2D points from the first image. - The point coordinates should be floating-point (single or double precision). - Array of the second image points of the same size and format as points1 . - Camera matrix K=⎡⎣⎢fx000fy0cxcy1⎤⎦⎥ . Note that this function assumes that points1 and points2 are feature points from cameras with the same camera matrix. - Method for computing an essential matrix. - RANSAC for the RANSAC algorithm. - LMEDS for the LMedS algorithm. - Parameter used for the RANSAC or LMedS methods only. - It specifies a desirable level of confidence (probability) that the estimated matrix is correct. - Parameter used for RANSAC. - It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is considered an outlier and is not used for computing the final fundamental matrix. - It can be set to something like 1-3, depending on the accuracy of the point localization, image resolution, and the image noise. - Output array of N elements, every element of which is set to 0 for outliers and to 1 for the other points. The array is computed only in the RANSAC and LMedS methods. - essential matrix - - - - Calculates an essential matrix from the corresponding points in two images. - - Array of N (N >= 5) 2D points from the first image. - The point coordinates should be floating-point (single or double precision). - Array of the second image por LMedS methods only. - It specifies a desirable level of confidence (probability) that the estimated matrix is correct. - Parameter used for RANSAC. - It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is considered an outlier and is not used for computing the final fundamental matrix. - It can be set to something like 1-3, depending on ints of the same size and format as points1 . - Focal length of the camera. Note that this function assumes that points1 and points2 are feature points from cameras with same focal length and principal point. - principal point of the camera. - Method for computing an essential matrix. - RANSAC for the RANSAC algorithm. - LMEDS for the LMedS algorithm. - Parameter used for the RANSAC othe accuracy of the point localization, image resolution, and the image noise. - Output array of N elements, every element of which is set to 0 for outliers and to 1 for the other points. The array is computed only in the RANSAC and LMedS methods. - essential matrix - - - - filters off speckles (small regions of incorrectly computed disparity) - - The input 16-bit signed disparity image - The disparity value used to paint-off the speckles - The maximum speckle size to consider it a speckle. Larger blobs are not affected by the algorithm - Maximum difference between neighbor disparity pixels to put them into the same blob. - Note that since StereoBM, StereoSGBM and may be other algorithms return a fixed-point disparity map, where disparity values - are multiplied by 16, this scale factor should be taken into account when specifying this parameter value. - The optional temporary buffer to avoid memory allocation within the function. - - - - computes valid disparity ROI from the valid ROIs of the rectified images (that are returned by cv::stereoRectify()) - - - - - - - - - - - validates disparity using the left-right check. The matrix "cost" should be computed by the stereo correspondence algorithm - - - - - - - - - - reprojects disparity image to 3D: (x,y,d)->(X,Y,Z) using the matrix Q returned by cv::stereoRectify - - Input single-channel 8-bit unsigned, 16-bit signed, 32-bit signed or 32-bit floating-point disparity image. - Output 3-channel floating-point image of the same size as disparity. - Each element of _3dImage(x,y) contains 3D coordinates of the point (x,y) computed from the disparity map. - 4 x 4 perspective transformation matrix that can be obtained with stereoRectify(). - Indicates, whether the function should handle missing values (i.e. points where the disparity was not computed). - If handleMissingValues=true, then pixels with the minimal disparity that corresponds to the outliers (see StereoBM::operator() ) are - transformed to 3D points with a very large Z value (currently set to 10000). - he optional output array depth. If it is -1, the output image will have CV_32F depth. - ddepth can also be set to CV_16S, CV_32S or CV_32F. - - - - Computes an optimal affine transformation between two 3D point sets. - - First input 3D point set. - Second input 3D point set. - Output 3D affine transformation matrix 3 x 4 . - Output vector indicating which points are inliers. - Maximum reprojection error in the RANSAC algorithm to consider a point as an inlier. - Confidence level, between 0 and 1, for the estimated transformation. - Anything between 0.95 and 0.99 is usually good enough. Values too close to 1 can slow down the estimation significantly. - Values lower than 0.8-0.9 can result in an incorrectly estimated transformation. - - - - - Calculates the Sampson Distance between two points. - - first homogeneous 2d point - second homogeneous 2d point - F fundamental matrix - The computed Sampson distance. - https://github.com/opencv/opencv/blob/master/modules/calib3d/src/fundam.cpp#L1109 - - - - Calculates the Sampson Distance between two points. - - first homogeneous 2d point - second homogeneous 2d point - F fundamental matrix - The computed Sampson distance. - https://github.com/opencv/opencv/blob/master/modules/calib3d/src/fundam.cpp#L1109 - - - - Computes an optimal affine transformation between two 2D point sets. - - First input 2D point set containing (X,Y). - Second input 2D point set containing (x,y). - Output vector indicating which points are inliers (1-inlier, 0-outlier). - Robust method used to compute transformation. - Maximum reprojection error in the RANSAC algorithm to consider a point as an inlier.Applies only to RANSAC. - The maximum number of robust method iterations. - Confidence level, between 0 and 1, for the estimated transformation. - Anything between 0.95 and 0.99 is usually good enough.Values too close to 1 can slow down the estimation - significantly.Values lower than 0.8-0.9 can result in an incorrectly estimated transformation. - Maximum number of iterations of refining algorithm (Levenberg-Marquardt). - Passing 0 will disable refining, so the output matrix will be output of robust method. - Output 2D affine transformation matrix \f$2 \times 3\f$ or empty matrix if transformation could not be estimated. - - - - Computes an optimal limited affine transformation with 4 degrees of freedom between two 2D point sets. - - First input 2D point set. - Second input 2D point set. - Output vector indicating which points are inliers. - Robust method used to compute transformation. - Maximum reprojection error in the RANSAC algorithm to consider a point as an inlier.Applies only to RANSAC. - The maximum number of robust method iterations. - Confidence level, between 0 and 1, for the estimated transformation. - Anything between 0.95 and 0.99 is usually good enough.Values too close to 1 can slow down the estimation - significantly.Values lower than 0.8-0.9 can result in an incorrectly estimated transformation. - - Output 2D affine transformation (4 degrees of freedom) matrix 2x3 or empty matrix if transformation could not be estimated. - - - - Decompose a homography matrix to rotation(s), translation(s) and plane normal(s). - - The input homography matrix between two images. - The input intrinsic camera calibration matrix. - Array of rotation matrices. - Array of translation matrices. - Array of plane normal matrices. - - - - - Filters homography decompositions based on additional information. - - Vector of rotation matrices. - Vector of plane normal matrices. - Vector of (rectified) visible reference points before the homography is applied - Vector of (rectified) visible reference points after the homography is applied - Vector of int indices representing the viable solution set after filtering - optional Mat/Vector of 8u type representing the mask for the inliers as given by the findHomography function - - - - corrects lens distortion for the given camera matrix and distortion coefficients - - Input (distorted) image. - Output (corrected) image that has the same size and type as src . - Input camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, - or 8 elements. If the vector is null, the zero distortion coefficients are assumed. - Camera matrix of the distorted image. - By default, it is the same as cameraMatrix but you may additionally scale - and shift the result by using a different matrix. - - - - initializes maps for cv::remap() to correct lens distortion and optionally rectify the image - - - - - - - - - - - - - initializes maps for cv::remap() for wide-angle - - - - - - - - - - - - - - - returns the default new camera matrix (by default it is the same as cameraMatrix unless centerPricipalPoint=true) - - Input camera matrix. - Camera view image size in pixels. - Location of the principal point in the new camera matrix. - The parameter indicates whether this location should be at the image center or not. - the camera matrix that is either an exact copy of the input cameraMatrix - (when centerPrinicipalPoint=false), or the modified one (when centerPrincipalPoint=true). - - - - Computes the ideal point coordinates from the observed point coordinates. - - Observed point coordinates, 1xN or Nx1 2-channel (CV_32FC2 or CV_64FC2). - Output ideal point coordinates after undistortion and reverse perspective transformation. - If matrix P is identity or omitted, dst will contain normalized point coordinates. - Camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Rectification transformation in the object space (3x3 matrix). - R1 or R2 computed by stereoRectify() can be passed here. - If the matrix is empty, the identity transformation is used. - New camera matrix (3x3) or new projection matrix (3x4). - P1 or P2 computed by stereoRectify() can be passed here. If the matrix is empty, - the identity new camera matrix is used. - - - - Computes the ideal point coordinates from the observed point coordinates. - - Observed point coordinates, 1xN or Nx1 2-channel (CV_32FC2 or CV_64FC2). - Output ideal point coordinates after undistortion and reverse perspective transformation. - If matrix P is identity or omitted, dst will contain normalized point coordinates. - Camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Rectification transformation in the object space (3x3 matrix). - R1 or R2 computed by stereoRectify() can be passed here. - If the matrix is empty, the identity transformation is used. - New camera matrix (3x3) or new projection matrix (3x4). - P1 or P2 computed by stereoRectify() can be passed here. If the matrix is empty, - the identity new camera matrix is used. - - - - - The methods in this class use a so-called fisheye camera model. - - - - - Projects points using fisheye model. - - The function computes projections of 3D points to the image plane given intrinsic and extrinsic - camera parameters.Optionally, the function computes Jacobians - matrices of partial derivatives of - image points coordinates(as functions of all the input parameters) with respect to the particular - parameters, intrinsic and/or extrinsic. - - Array of object points, 1xN/Nx1 3-channel (or vector<Point3f> ), - where N is the number of points in the view. - Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, - or vector<Point2f>. - - - Camera matrix - Input vector of distortion coefficients - The skew coefficient. - Optional output 2Nx15 jacobian matrix of derivatives of image points with respect - to components of the focal lengths, coordinates of the principal point, distortion coefficients, - rotation vector, translation vector, and the skew.In the old interface different components of - the jacobian are returned via different output parameters. - - - - Distorts 2D points using fisheye model. - - Array of object points, 1xN/Nx1 2-channel (or vector<Point2f> ), - where N is the number of points in the view. - Output array of image points, 1xN/Nx1 2-channel, or vector<Point2f> . - Camera matrix - Input vector of distortion coefficients - The skew coefficient. - - - - Undistorts 2D points using fisheye model - - Array of object points, 1xN/Nx1 2-channel (or vector<Point2f> ), - where N is the number of points in the view. - Output array of image points, 1xN/Nx1 2-channel, or vector>Point2f> . - Camera matrix - Input vector of distortion coefficients (k_1, k_2, k_3, k_4). - Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel - New camera matrix (3x3) or new projection matrix (3x4) - - - - Computes undistortion and rectification maps for image transform by cv::remap(). - If D is empty zero distortion is used, if R or P is empty identity matrixes are used. - - Camera matrix - Input vector of distortion coefficients (k_1, k_2, k_3, k_4). - Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel - New camera matrix (3x3) or new projection matrix (3x4) - Undistorted image size. - Type of the first output map that can be CV_32FC1 or CV_16SC2 . See convertMaps() for details. - The first output map. - The second output map. - - - - Transforms an image to compensate for fisheye lens distortion. - - image with fisheye lens distortion. - Output image with compensated fisheye lens distortion. - Camera matrix - Input vector of distortion coefficients (k_1, k_2, k_3, k_4). - Camera matrix of the distorted image. By default, it is the identity matrix but you - may additionally scale and shift the result by using a different matrix. - - - - - Estimates new camera matrix for undistortion or rectification. - - Camera matrix - Input vector of distortion coefficients (k_1, k_2, k_3, k_4). - - Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 - 1-channel or 1x1 3-channel - New camera matrix (3x3) or new projection matrix (3x4) - Sets the new focal length in range between the min focal length and the max focal - length.Balance is in range of[0, 1]. - - Divisor for new focal length. - - - - Performs camera calibaration - - vector of vectors of calibration pattern points in the calibration pattern coordinate space. - vector of vectors of the projections of calibration pattern points. - imagePoints.size() and objectPoints.size() and imagePoints[i].size() must be equal to - objectPoints[i].size() for each i. - Size of the image used only to initialize the intrinsic camera matrix. - Output 3x3 floating-point camera matrix - Output vector of distortion coefficients (k_1, k_2, k_3, k_4). - Output vector of rotation vectors (see Rodrigues ) estimated for each pattern view. - That is, each k-th rotation vector together with the corresponding k-th translation vector(see - the next output parameter description) brings the calibration pattern from the model coordinate - space(in which object points are specified) to the world coordinate space, that is, a real - position of the calibration pattern in the k-th pattern view(k= 0.. * M * -1). - Output vector of translation vectors estimated for each pattern view. - Different flags that may be zero or a combination of flag values - Termination criteria for the iterative optimization algorithm. - - - - - Stereo rectification for fisheye camera model - - First camera matrix. - First camera distortion parameters. - Second camera matrix. - Second camera distortion parameters. - Size of the image used for stereo calibration. - Rotation matrix between the coordinate systems of the first and the second cameras. - Translation vector between coordinate systems of the cameras. - Output 3x3 rectification transform (rotation matrix) for the first camera. - Output 3x3 rectification transform (rotation matrix) for the second camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. - Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. - Output 4x4 disparity-to-depth mapping matrix (see reprojectImageTo3D ). - Operation flags that may be zero or CALIB_ZERO_DISPARITY . If the flag is set, - the function makes the principal points of each camera have the same pixel coordinates in the - rectified views.And if the flag is not set, the function may still shift the images in the - horizontal or vertical direction(depending on the orientation of epipolar lines) to maximize the - useful image area. - New image resolution after rectification. The same size should be passed to - initUndistortRectifyMap(see the stereo_calib.cpp sample in OpenCV samples directory). When(0,0) - is passed(default), it is set to the original imageSize.Setting it to larger value can help you - preserve details in the original image, especially when there is a big radial distortion. - Sets the new focal length in range between the min focal length and the max focal - length.Balance is in range of[0, 1]. - Divisor for new focal length. - - - - Performs stereo calibration - - Vector of vectors of the calibration pattern points. - Vector of vectors of the projections of the calibration pattern points, - observed by the first camera. - Vector of vectors of the projections of the calibration pattern points, - observed by the second camera. - Input/output first camera matrix - Input/output vector of distortion coefficients (k_1, k_2, k_3, k_4) of 4 elements. - Input/output second camera matrix. The parameter is similar to K1 . - Input/output lens distortion coefficients for the second camera. The parameter is - similar to D1. - Size of the image used only to initialize intrinsic camera matrix. - Output rotation matrix between the 1st and the 2nd camera coordinate systems. - Output translation vector between the coordinate systems of the cameras. - Different flags that may be zero or a combination of the FishEyeCalibrationFlags values - Termination criteria for the iterative optimization algorithm. - - - - - Computes the source location of an extrapolated pixel. - - 0-based coordinate of the extrapolated pixel along one of the axes, likely <0 or >= len - Length of the array along the corresponding axis. - Border type, one of the #BorderTypes, except for #BORDER_TRANSPARENT and BORDER_ISOLATED. - When borderType==BORDER_CONSTANT, the function always returns -1, regardless - - - - - Forms a border around the image - - The source image - The destination image; will have the same type as src and - the size Size(src.cols+left+right, src.rows+top+bottom) - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - The border type - The border value if borderType == Constant - - - - Computes the per-element sum of two arrays or an array and a scalar. - - The first source array - The second source array. It must have the same size and same type as src1 - The destination array; it will have the same size and same type as src1 - The optional operation mask, 8-bit single channel array; specifies elements of the destination array to be changed. [By default this is null] - - - - - Calculates per-element difference between two arrays or array and a scalar - - The first source array - The second source array. It must have the same size and same type as src1 - The destination array; it will have the same size and same type as src1 - The optional operation mask, 8-bit single channel array; specifies elements of the destination array to be changed. [By default this is null] - - - - - Calculates per-element difference between two arrays or array and a scalar - - The first source array - The second source array. It must have the same size and same type as src1 - The destination array; it will have the same size and same type as src1 - The optional operation mask, 8-bit single channel array; specifies elements of the destination array to be changed. [By default this is null] - - - - - Calculates per-element difference between two arrays or array and a scalar - - The first source array - The second source array. It must have the same size and same type as src1 - The destination array; it will have the same size and same type as src1 - The optional operation mask, 8-bit single channel array; specifies elements of the destination array to be changed. [By default this is null] - - - - - Calculates the per-element scaled product of two arrays - - The first source array - The second source array of the same size and the same type as src1 - The destination array; will have the same size and the same type as src1 - The optional scale factor. [By default this is 1] - - - - - Performs per-element division of two arrays or a scalar by an array. - - The first source array - The second source array; should have the same size and same type as src1 - The destination array; will have the same size and same type as src2 - Scale factor [By default this is 1] - - - - - Performs per-element division of two arrays or a scalar by an array. - - Scale factor - The first source array - The destination array; will have the same size and same type as src2 - - - - - adds scaled array to another one (dst = alpha*src1 + src2) - - - - - - - - - computes weighted sum of two arrays (dst = alpha*src1 + beta*src2 + gamma) - - - - - - - - - - - - Scales, computes absolute values and converts the result to 8-bit. - - The source array - The destination array - The optional scale factor. [By default this is 1] - The optional delta added to the scaled values. [By default this is 0] - - - - Converts an array to half precision floating number. - - This function converts FP32(single precision floating point) from/to FP16(half precision floating point). CV_16S format is used to represent FP16 data. - There are two use modes(src -> dst) : CV_32F -> CV_16S and CV_16S -> CV_32F.The input array has to have type of CV_32F or - CV_16S to represent the bit depth.If the input array is neither of them, the function will raise an error. - The format of half precision floating point is defined in IEEE 754-2008. - - input array. - output array. - - - - transforms array of numbers using a lookup table: dst(i)=lut(src(i)) - - Source array of 8-bit elements - Look-up table of 256 elements. - In the case of multi-channel source array, the table should either have - a single channel (in this case the same table is used for all channels) - or the same number of channels as in the source array - Destination array; - will have the same size and the same number of channels as src, - and the same depth as lut - - - - transforms array of numbers using a lookup table: dst(i)=lut(src(i)) - - Source array of 8-bit elements - Look-up table of 256 elements. - In the case of multi-channel source array, the table should either have - a single channel (in this case the same table is used for all channels) - or the same number of channels as in the source array - Destination array; - will have the same size and the same number of channels as src, - and the same depth as lut - - - - computes sum of array elements - - The source array; must have 1 to 4 channels - - - - - computes the number of nonzero array elements - - Single-channel array - number of non-zero elements in mtx - - - - returns the list of locations of non-zero pixels - - - - - - - computes mean value of selected array elements - - The source array; it should have 1 to 4 channels - (so that the result can be stored in Scalar) - The optional operation mask - - - - - computes mean value and standard deviation of all or selected array elements - - The source array; it should have 1 to 4 channels - (so that the results can be stored in Scalar's) - The output parameter: computed mean value - The output parameter: computed standard deviation - The optional operation mask - - - - computes mean value and standard deviation of all or selected array elements - - The source array; it should have 1 to 4 channels - (so that the results can be stored in Scalar's) - The output parameter: computed mean value - The output parameter: computed standard deviation - The optional operation mask - - - - Calculates absolute array norm, absolute difference norm, or relative difference norm. - - The first source array - Type of the norm - The optional operation mask - - - - - computes norm of selected part of the difference between two arrays - - The first source array - The second source array of the same size and the same type as src1 - Type of the norm - The optional operation mask - - - - - Computes the Peak Signal-to-Noise Ratio (PSNR) image quality metric. - - This function calculates the Peak Signal-to-Noise Ratio(PSNR) image quality metric in decibels(dB), - between two input arrays src1 and src2.The arrays must have the same type. - - first input array. - second input array of the same size as src1. - the maximum pixel value (255 by default) - - - - - naive nearest neighbor finder - - - - - - - - - - - - - - - scales and shifts array elements so that either the specified norm (alpha) - or the minimum (alpha) and maximum (beta) array values get the specified values - - The source array - The destination array; will have the same size as src - The norm value to normalize to or the lower range boundary - in the case of range normalization - The upper range boundary in the case of range normalization; - not used for norm normalization - The normalization type - When the parameter is negative, - the destination array will have the same type as src, - otherwise it will have the same number of channels as src and the depth =CV_MAT_DEPTH(rtype) - The optional operation mask - - - - finds global minimum and maximum array elements and returns their values and their locations - - The source single-channel array - Pointer to returned minimum value - Pointer to returned maximum value - - - - finds global minimum and maximum array elements and returns their values and their locations - - The source single-channel array - Pointer to returned minimum location - Pointer to returned maximum location - - - - finds global minimum and maximum array elements and returns their values and their locations - - The source single-channel array - Pointer to returned minimum value - Pointer to returned maximum value - Pointer to returned minimum location - Pointer to returned maximum location - The optional mask used to select a sub-array - - - - finds global minimum and maximum array elements and returns their values and their locations - - The source single-channel array - Pointer to returned minimum value - Pointer to returned maximum value - - - - finds global minimum and maximum array elements and returns their values and their locations - - The source single-channel array - - - - - - finds global minimum and maximum array elements and returns their values and their locations - - The source single-channel array - Pointer to returned minimum value - Pointer to returned maximum value - - - - - - - transforms 2D matrix to 1D row or column vector by taking sum, minimum, maximum or mean value over all the rows - - The source 2D matrix - The destination vector. - Its size and type is defined by dim and dtype parameters - The dimension index along which the matrix is reduced. - 0 means that the matrix is reduced to a single row and 1 means that the matrix is reduced to a single column - - When it is negative, the destination vector will have - the same type as the source matrix, otherwise, its type will be CV_MAKE_TYPE(CV_MAT_DEPTH(dtype), mtx.channels()) - - - - makes multi-channel array out of several single-channel arrays - - - - - - - Copies each plane of a multi-channel array to a dedicated array - - The source multi-channel array - The destination array or vector of arrays; - The number of arrays must match mtx.channels() . - The arrays themselves will be reallocated if needed - - - - Copies each plane of a multi-channel array to a dedicated array - - The source multi-channel array - The number of arrays must match mtx.channels() . - The arrays themselves will be reallocated if needed - - - - copies selected channels from the input arrays to the selected channels of the output arrays - - - - - - - - extracts a single channel from src (coi is 0-based index) - - - - - - - - inserts a single channel to dst (coi is 0-based index) - - - - - - - - reverses the order of the rows, columns or both in a matrix - - The source array - The destination array; will have the same size and same type as src - Specifies how to flip the array: - 0 means flipping around the x-axis, positive (e.g., 1) means flipping around y-axis, - and negative (e.g., -1) means flipping around both axes. See also the discussion below for the formulas. - - - - Rotates a 2D array in multiples of 90 degrees. - - input array. - output array of the same type as src. - The size is the same with ROTATE_180, and the rows and cols are switched for - ROTATE_90_CLOCKWISE and ROTATE_90_COUNTERCLOCKWISE. - an enum to specify how to rotate the array. - - - - replicates the input matrix the specified number of times in the horizontal and/or vertical direction - - The source array to replicate - How many times the src is repeated along the vertical axis - How many times the src is repeated along the horizontal axis - The destination array; will have the same type as src - - - - replicates the input matrix the specified number of times in the horizontal and/or vertical direction - - The source array to replicate - How many times the src is repeated along the vertical axis - How many times the src is repeated along the horizontal axis - - - - - Applies horizontal concatenation to given matrices. - - input array or vector of matrices. all of the matrices must have the same number of rows and the same depth. - output array. It has the same number of rows and depth as the src, and the sum of cols of the src. - - - - Applies horizontal concatenation to given matrices. - - first input array to be considered for horizontal concatenation. - second input array to be considered for horizontal concatenation. - output array. It has the same number of rows and depth as the src1 and src2, and the sum of cols of the src1 and src2. - - - - Applies vertical concatenation to given matrices. - - input array or vector of matrices. all of the matrices must have the same number of cols and the same depth. - output array. It has the same number of cols and depth as the src, and the sum of rows of the src. - - - - Applies vertical concatenation to given matrices. - - first input array to be considered for vertical concatenation. - second input array to be considered for vertical concatenation. - output array. It has the same number of cols and depth as the src1 and src2, and the sum of rows of the src1 and src2. - - - - computes bitwise conjunction of the two arrays (dst = src1 & src2) - - first input array or a scalar. - second input array or a scalar. - output array that has the same size and type as the input - optional operation mask, 8-bit single channel array, that specifies elements of the output array to be changed. - - - - computes bitwise disjunction of the two arrays (dst = src1 | src2) - - first input array or a scalar. - second input array or a scalar. - output array that has the same size and type as the input - optional operation mask, 8-bit single channel array, that specifies elements of the output array to be changed. - - - - computes bitwise exclusive-or of the two arrays (dst = src1 ^ src2) - - first input array or a scalar. - second input array or a scalar. - output array that has the same size and type as the input - optional operation mask, 8-bit single channel array, that specifies elements of the output array to be changed. - - - - inverts each bit of array (dst = ~src) - - input array. - output array that has the same size and type as the input - optional operation mask, 8-bit single channel array, that specifies elements of the output array to be changed. - - - - Calculates the per-element absolute difference between two arrays or between an array and a scalar. - - first input array or a scalar. - second input array or a scalar. - output array that has the same size and type as input arrays. - - - - Copies the matrix to another one. - When the operation mask is specified, if the Mat::create call shown above reallocates the matrix, the newly allocated matrix is initialized with all zeros before copying the data. - - Source matrix. - Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. - Operation mask of the same size as \*this. Its non-zero elements indicate which matrix - elements need to be copied.The mask has to be of type CV_8U and can have 1 or multiple channels. - - - - Checks if array elements lie between the elements of two other arrays. - - first input array. - inclusive lower boundary array or a scalar. - inclusive upper boundary array or a scalar. - output array of the same size as src and CV_8U type. - - - - Checks if array elements lie between the elements of two other arrays. - - first input array. - inclusive lower boundary array or a scalar. - inclusive upper boundary array or a scalar. - output array of the same size as src and CV_8U type. - - - - Performs the per-element comparison of two arrays or an array and scalar value. - - first input array or a scalar; when it is an array, it must have a single channel. - second input array or a scalar; when it is an array, it must have a single channel. - output array of type ref CV_8U that has the same size and the same number of channels as the input arrays. - a flag, that specifies correspondence between the arrays (cv::CmpTypes) - - - - computes per-element minimum of two arrays (dst = min(src1, src2)) - - - - - - - - computes per-element minimum of two arrays (dst = min(src1, src2)) - - - - - - - - computes per-element minimum of array and scalar (dst = min(src1, src2)) - - - - - - - - computes per-element maximum of two arrays (dst = max(src1, src2)) - - - - - - - - computes per-element maximum of two arrays (dst = max(src1, src2)) - - - - - - - - computes per-element maximum of array and scalar (dst = max(src1, src2)) - - - - - - - - computes square root of each matrix element (dst = src**0.5) - - The source floating-point array - The destination array; will have the same size and the same type as src - - - - raises the input matrix elements to the specified power (b = a**power) - - The source array - The exponent of power - The destination array; will have the same size and the same type as src - - - - computes exponent of each matrix element (dst = e**src) - - The source array - The destination array; will have the same size and same type as src - - - - computes natural logarithm of absolute value of each matrix element: dst = log(abs(src)) - - The source array - The destination array; will have the same size and same type as src - - - - Calculates x and y coordinates of 2D vectors from their magnitude and angle. - - input floating-point array of magnitudes of 2D vectors; - it can be an empty matrix(=Mat()), in this case, the function assumes that all the magnitudes are = 1; if it is not empty, - it must have the same size and type as angle. - input floating-point array of angles of 2D vectors. - output array of x-coordinates of 2D vectors; it has the same size and type as angle. - output array of y-coordinates of 2D vectors; it has the same size and type as angle. - when true, the input angles are measured in degrees, otherwise, they are measured in radians. - - - - Calculates the magnitude and angle of 2D vectors. - - array of x-coordinates; this must be a single-precision or double-precision floating-point array. - array of y-coordinates, that must have the same size and same type as x. - output array of magnitudes of the same size and type as x. - output array of angles that has the same size and type as x; - the angles are measured in radians(from 0 to 2\*Pi) or in degrees(0 to 360 degrees). - a flag, indicating whether the angles are measured in radians(which is by default), or in degrees. - - - - Calculates the rotation angle of 2D vectors. - - input floating-point array of x-coordinates of 2D vectors. - input array of y-coordinates of 2D vectors; it must have the same size and the same type as x. - output array of vector angles; it has the same size and same type as x. - when true, the function calculates the angle in degrees, otherwise, they are measured in radians. - - - - Calculates the magnitude of 2D vectors. - - floating-point array of x-coordinates of the vectors. - floating-point array of y-coordinates of the vectors; it must have the same size as x. - output array of the same size and type as x. - - - - checks that each matrix element is within the specified range. - - The array to check - The flag indicating whether the functions quietly - return false when the array elements are out of range, - or they throw an exception. - - - - - checks that each matrix element is within the specified range. - - The array to check - The flag indicating whether the functions quietly - return false when the array elements are out of range, - or they throw an exception. - The optional output parameter, where the position of - the first outlier is stored. - The inclusive lower boundary of valid values range - The exclusive upper boundary of valid values range - - - - - converts NaN's to the given number - - - - - - - implements generalized matrix product algorithm GEMM from BLAS - - - - - - - - - - - - multiplies matrix by its transposition from the left or from the right - - The source matrix - The destination square matrix - Specifies the multiplication ordering; see the description below - The optional delta matrix, subtracted from src before the - multiplication. When the matrix is empty ( delta=Mat() ), it’s assumed to be - zero, i.e. nothing is subtracted, otherwise if it has the same size as src, - then it’s simply subtracted, otherwise it is "repeated" to cover the full src - and then subtracted. Type of the delta matrix, when it's not empty, must be the - same as the type of created destination matrix, see the rtype description - The optional scale factor for the matrix product - When it’s negative, the destination matrix will have the - same type as src . Otherwise, it will have type=CV_MAT_DEPTH(rtype), - which should be either CV_32F or CV_64F - - - - transposes the matrix - - The source array - The destination array of the same type as src - - - - performs affine transformation of each element of multi-channel input matrix - - The source array; must have as many channels (1 to 4) as mtx.cols or mtx.cols-1 - The destination array; will have the same size and depth as src and as many channels as mtx.rows - The transformation matrix - - - - performs perspective transformation of each element of multi-channel input matrix - - The source two-channel or three-channel floating-point array; - each element is 2D/3D vector to be transformed - The destination array; it will have the same size and same type as src - 3x3 or 4x4 transformation matrix - - - - performs perspective transformation of each element of multi-channel input matrix - - The source two-channel or three-channel floating-point array; - each element is 2D/3D vector to be transformed - 3x3 or 4x4 transformation matrix - The destination array; it will have the same size and same type as src - - - - performs perspective transformation of each element of multi-channel input matrix - - The source two-channel or three-channel floating-point array; - each element is 2D/3D vector to be transformed - 3x3 or 4x4 transformation matrix - The destination array; it will have the same size and same type as src - - - - performs perspective transformation of each element of multi-channel input matrix - - The source two-channel or three-channel floating-point array; - each element is 2D/3D vector to be transformed - 3x3 or 4x4 transformation matrix - The destination array; it will have the same size and same type as src - - - - performs perspective transformation of each element of multi-channel input matrix - - The source two-channel or three-channel floating-point array; - each element is 2D/3D vector to be transformed - 3x3 or 4x4 transformation matrix - The destination array; it will have the same size and same type as src - - - - extends the symmetrical matrix from the lower half or from the upper half - - Input-output floating-point square matrix - If true, the lower half is copied to the upper half, - otherwise the upper half is copied to the lower half - - - - initializes scaled identity matrix - - The matrix to initialize (not necessarily square) - The value to assign to the diagonal elements - - - - computes determinant of a square matrix - - The input matrix; must have CV_32FC1 or CV_64FC1 type and square size - determinant of the specified matrix. - - - - computes trace of a matrix - - The source matrix - - - - - computes inverse or pseudo-inverse matrix - - The source floating-point MxN matrix - The destination matrix; will have NxM size and the same type as src - The inversion method - - - - - solves linear system or a least-square problem - - - - - - - - - - Solve given (non-integer) linear programming problem using the Simplex Algorithm (Simplex Method). - - This row-vector corresponds to \f$c\f$ in the LP problem formulation (see above). - It should contain 32- or 64-bit floating point numbers.As a convenience, column-vector may be also submitted, - in the latter case it is understood to correspond to \f$c^T\f$. - `m`-by-`n+1` matrix, whose rightmost column corresponds to \f$b\f$ in formulation above - and the remaining to \f$A\f$. It should containt 32- or 64-bit floating point numbers. - The solution will be returned here as a column-vector - it corresponds to \f$c\f$ in the - formulation above.It will contain 64-bit floating point numbers. - - - - - sorts independently each matrix row or each matrix column - - The source single-channel array - The destination array of the same size and the same type as src - The operation flags, a combination of the SortFlag values - - - - sorts independently each matrix row or each matrix column - - The source single-channel array - The destination integer array of the same size as src - The operation flags, a combination of SortFlag values - - - - finds real roots of a cubic polynomial - - The equation coefficients, an array of 3 or 4 elements - The destination array of real roots which will have 1 or 3 elements - - - - - finds real and complex roots of a polynomial - - The array of polynomial coefficients - The destination (complex) array of roots - The maximum number of iterations the algorithm does - - - - - Computes eigenvalues and eigenvectors of a symmetric matrix. - - The input matrix; must have CV_32FC1 or CV_64FC1 type, - square size and be symmetric: src^T == src - The output vector of eigenvalues of the same type as src; - The eigenvalues are stored in the descending order. - The output matrix of eigenvectors; - It will have the same size and the same type as src; The eigenvectors are stored - as subsequent matrix rows, in the same order as the corresponding eigenvalues - - - - - Calculates eigenvalues and eigenvectors of a non-symmetric matrix (real eigenvalues only). - - input matrix (CV_32FC1 or CV_64FC1 type). - output vector of eigenvalues (type is the same type as src). - output matrix of eigenvectors (type is the same type as src). The eigenvectors are stored as subsequent matrix rows, in the same order as the corresponding eigenvalues. - - - - computes covariation matrix of a set of samples - - samples stored as separate matrices - output covariance matrix of the type ctype and square size. - input or output (depending on the flags) array as the average value of the input vectors. - operation flags as a combination of CovarFlags - type of the matrixl; it equals 'CV_64F' by default. - - - - computes covariation matrix of a set of samples - - samples stored as rows/columns of a single matrix. - output covariance matrix of the type ctype and square size. - input or output (depending on the flags) array as the average value of the input vectors. - operation flags as a combination of CovarFlags - type of the matrixl; it equals 'CV_64F' by default. - - - - PCA of the supplied dataset. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - eigenvectors of the covariation matrix - maximum number of components that PCA should - retain; by default, all the components are retained. - - - - PCA of the supplied dataset. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - eigenvectors of the covariation matrix - eigenvalues of the covariation matrix - maximum number of components that PCA should - retain; by default, all the components are retained. - - - - PCA of the supplied dataset. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - eigenvectors of the covariation matrix - Percentage of variance that PCA should retain. - Using this parameter will let the PCA decided how many components to retain but it will always keep at least 2. - - - - PCA of the supplied dataset. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - eigenvectors of the covariation matrix - eigenvalues of the covariation matrix - Percentage of variance that PCA should retain. - Using this parameter will let the PCA decided how many components to retain but it will always keep at least 2. - - - - Projects vector(s) to the principal component subspace. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - eigenvectors of the covariation matrix - output vectors - - - - Reconstructs vectors from their PC projections. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - eigenvectors of the covariation matrix - output vectors - - - - decomposes matrix and stores the results to user-provided matrices - - decomposed matrix. The depth has to be CV_32F or CV_64F. - calculated singular values - calculated left singular vectors - transposed matrix of right singular vectors - peration flags - see SVD::Flags. - - - - performs back substitution for the previously computed SVD - - calculated singular values - calculated left singular vectors - transposed matrix of right singular vectors - right-hand side of a linear system (u*w*v')*dst = rhs to be solved, where A has been previously decomposed. - output - - - - Calculates the Mahalanobis distance between two vectors. - - first 1D input vector. - second 1D input vector. - inverse covariance matrix. - - - - - Performs a forward Discrete Fourier transform of 1D or 2D floating-point array. - - The source array, real or complex - The destination array, which size and type depends on the flags - Transformation flags, a combination of the DftFlag2 values - When the parameter != 0, the function assumes that - only the first nonzeroRows rows of the input array ( DFT_INVERSE is not set) - or only the first nonzeroRows of the output array ( DFT_INVERSE is set) contain non-zeros, - thus the function can handle the rest of the rows more efficiently and - thus save some time. This technique is very useful for computing array cross-correlation - or convolution using DFT - - - - Performs an inverse Discrete Fourier transform of 1D or 2D floating-point array. - - The source array, real or complex - The destination array, which size and type depends on the flags - Transformation flags, a combination of the DftFlag2 values - When the parameter != 0, the function assumes that - only the first nonzeroRows rows of the input array ( DFT_INVERSE is not set) - or only the first nonzeroRows of the output array ( DFT_INVERSE is set) contain non-zeros, - thus the function can handle the rest of the rows more efficiently and - thus save some time. This technique is very useful for computing array cross-correlation - or convolution using DFT - - - - Performs forward or inverse 1D or 2D Discrete Cosine Transformation - - The source floating-point array - The destination array; will have the same size and same type as src - Transformation flags, a combination of DctFlag2 values - - - - Performs inverse 1D or 2D Discrete Cosine Transformation - - The source floating-point array - The destination array; will have the same size and same type as src - Transformation flags, a combination of DctFlag2 values - - - - Performs the per-element multiplication of two Fourier spectrums. - - first input array. - second input array of the same size and type as src1. - output array of the same size and type as src1. - operation flags; currently, the only supported flag is cv::DFT_ROWS, which indicates that - each row of src1 and src2 is an independent 1D Fourier spectrum. If you do not want to use this flag, then simply add a `0` as value. - optional flag that conjugates the second input array before the multiplication (true) or not (false). - - - - Returns the optimal DFT size for a given vector size. - - vector size. - - - - - Returns the thread-local Random number generator - - - - - - Sets the thread-local Random number generator - - - - - - fills array with uniformly-distributed random numbers from the range [low, high) - - The output array of random numbers. - The array must be pre-allocated and have 1 to 4 channels - The inclusive lower boundary of the generated random numbers - The exclusive upper boundary of the generated random numbers - - - - fills array with uniformly-distributed random numbers from the range [low, high) - - The output array of random numbers. - The array must be pre-allocated and have 1 to 4 channels - The inclusive lower boundary of the generated random numbers - The exclusive upper boundary of the generated random numbers - - - - fills array with normally-distributed random numbers with the specified mean and the standard deviation - - The output array of random numbers. - The array must be pre-allocated and have 1 to 4 channels - The mean value (expectation) of the generated random numbers - The standard deviation of the generated random numbers - - - - fills array with normally-distributed random numbers with the specified mean and the standard deviation - - The output array of random numbers. - The array must be pre-allocated and have 1 to 4 channels - The mean value (expectation) of the generated random numbers - The standard deviation of the generated random numbers - - - - shuffles the input array elements - - The input/output numerical 1D array - The scale factor that determines the number of random swap operations. - - - - shuffles the input array elements - - The input/output numerical 1D array - The scale factor that determines the number of random swap operations. - The optional random number generator used for shuffling. - If it is null, theRng() is used instead. - - - - Finds centers of clusters and groups input samples around the clusters. - - Data for clustering. An array of N-Dimensional points with float coordinates is needed. - Number of clusters to split the set by. - Input/output integer array that stores the cluster indices for every sample. - The algorithm termination criteria, that is, the maximum number of iterations and/or - the desired accuracy. The accuracy is specified as criteria.epsilon. As soon as each of the cluster centers - moves by less than criteria.epsilon on some iteration, the algorithm stops. - Flag to specify the number of times the algorithm is executed using different - initial labellings. The algorithm returns the labels that yield the best compactness (see the last function parameter). - Flag that can take values of cv::KmeansFlags - Output matrix of the cluster centers, one row per each cluster center. - The function returns the compactness measure that is computed as - \f[\sum _i \| \texttt{samples} _i - \texttt{centers} _{ \texttt{labels} _i} \| ^2\f] - after every attempt. The best (minimum) value is chosen and the corresponding labels and the compactness - value are returned by the function. Basically, you can use only the core of the function, - set the number of attempts to 1, initialize labels each time using a custom algorithm, - pass them with the ( flags = #KMEANS_USE_INITIAL_LABELS ) flag, and then choose the best (most-compact) clustering. - - - - computes the angle in degrees (0..360) of the vector (x,y) - - - - - - - - computes cube root of the argument - - - - - - - - - - - - - - - OpenCV will try to set the number of threads for the next parallel region. - If threads == 0, OpenCV will disable threading optimizations and run all it's functions - sequentially.Passing threads < 0 will reset threads number to system default. This function must - be called outside of parallel region. - OpenCV will try to run its functions with specified threads number, but some behaviour differs from framework: - - `TBB` - User-defined parallel constructions will run with the same threads number, if another is not specified.If later on user creates his own scheduler, OpenCV will use it. - - `OpenMP` - No special defined behaviour. - - `Concurrency` - If threads == 1, OpenCV will disable threading optimizations and run its functions sequentially. - - `GCD` - Supports only values <= 0. - - `C=` - No special defined behaviour. - - Number of threads used by OpenCV. - - - - Returns the number of threads used by OpenCV for parallel regions. - - Always returns 1 if OpenCV is built without threading support. - The exact meaning of return value depends on the threading framework used by OpenCV library: - - `TBB` - The number of threads, that OpenCV will try to use for parallel regions. If there is - any tbb::thread_scheduler_init in user code conflicting with OpenCV, then function returns default - number of threads used by TBB library. - - `OpenMP` - An upper bound on the number of threads that could be used to form a new team. - - `Concurrency` - The number of threads, that OpenCV will try to use for parallel regions. - - `GCD` - Unsupported; returns the GCD thread pool limit(512) for compatibility. - - `C=` - The number of threads, that OpenCV will try to use for parallel regions, if before - called setNumThreads with threads > 0, otherwise returns the number of logical CPUs, - available for the process. - - - - - - Returns the index of the currently executed thread within the current parallel region. - Always returns 0 if called outside of parallel region. - @deprecated Current implementation doesn't corresponding to this documentation. - The exact meaning of the return value depends on the threading framework used by OpenCV library: - - `TBB` - Unsupported with current 4.1 TBB release.Maybe will be supported in future. - - `OpenMP` - The thread number, within the current team, of the calling thread. - - `Concurrency` - An ID for the virtual processor that the current context is executing - on(0 for master thread and unique number for others, but not necessary 1,2,3,...). - - `GCD` - System calling thread's ID. Never returns 0 inside parallel region. - - `C=` - The index of the current parallel task. - - - - - - Returns full configuration time cmake output. - - Returned value is raw cmake output including version control system revision, compiler version, - compiler flags, enabled modules and third party libraries, etc.Output format depends on target architecture. - - - - - - Returns library version string. - For example "3.4.1-dev". - - - - - - Returns major library version - - - - - - Returns minor library version - - - - - - Returns revision field of the library version - - - - - - Returns the number of ticks. - The function returns the number of ticks after the certain event (for example, when the machine was - turned on). It can be used to initialize RNG or to measure a function execution time by reading the - tick count before and after the function call. - - - - - - Returns the number of ticks per second. - The function returns the number of ticks per second.That is, the following code computes the execution time in seconds: - - - - - - Returns the number of CPU ticks. - - The function returns the current number of CPU ticks on some architectures(such as x86, x64, PowerPC). - On other platforms the function is equivalent to getTickCount.It can also be used for very accurate time - measurements, as well as for RNG initialization.Note that in case of multi-CPU systems a thread, from which - getCPUTickCount is called, can be suspended and resumed at another CPU with its own counter. So, - theoretically (and practically) the subsequent calls to the function do not necessary return the monotonously - increasing values. Also, since a modern CPU varies the CPU frequency depending on the load, the number of CPU - clocks spent in some code cannot be directly converted to time units.Therefore, getTickCount is generally - a preferable solution for measuringexecution time. - - - - - - Returns true if the specified feature is supported by the host hardware. - The function returns true if the host hardware supports the specified feature.When user calls - setUseOptimized(false), the subsequent calls to checkHardwareSupport() will return false until - setUseOptimized(true) is called.This way user can dynamically switch on and off the optimized code in OpenCV. - - The feature of interest, one of cv::CpuFeatures - - - - - Returns feature name by ID. - Returns empty string if feature is not defined - - - - - - - Returns list of CPU features enabled during compilation. - Returned value is a string containing space separated list of CPU features with following markers: - - no markers - baseline features - - prefix `*` - features enabled in dispatcher - - suffix `?` - features enabled but not available in HW - - - `SSE SSE2 SSE3* SSE4.1 *SSE4.2 *FP16* AVX *AVX2* AVX512-SKX?` - - - - - - Returns the number of logical CPUs available for the process. - - - - - - Turns on/off available optimization. - The function turns on or off the optimized code in OpenCV. Some optimization can not be enabled - or disabled, but, for example, most of SSE code in OpenCV can be temporarily turned on or off this way. - - - - - - Returns the current optimization status. - The function returns the current optimization status, which is controlled by cv::setUseOptimized(). - - - - - - Aligns buffer size by the certain number of bytes - This small inline function aligns a buffer size by - the certian number of bytes by enlarging it. - - - - - - - - Sets/resets the break-on-error mode. - When the break-on-error mode is set, the default error handler issues a hardware exception, - which can make debugging more convenient. - - - the previous state - - - - - - - - - - - - Computes absolute value of each matrix element - - matrix - - - - - Computes absolute value of each matrix element - - matrix expression - - - - - Equivalence predicate (a boolean function of two arguments). - The predicate returns true when the elements are certainly in the same class, and returns false if they may or may not be in the same class. - - - - - - - - - Splits an element set into equivalency classes. - Consider using GroupBy of Linq instead. - - - Set of elements stored as a vector. - Output vector of labels. It contains as many elements as vec. Each label labels[i] is a 0-based cluster index of vec[i] . - Equivalence predicate (a boolean function of two arguments). - The predicate returns true when the elements are certainly in the same class, and returns false if they may or may not be in the same class. - - - - - Detects corners using the FAST algorithm - - grayscale image where keypoints (corners) are detected. - threshold on difference between intensity of the central pixel - and pixels of a circle around this pixel. - if true, non-maximum suppression is applied to - detected corners (keypoints). - keypoints detected on the image. - - - - Detects corners using the FAST algorithm - - grayscale image where keypoints (corners) are detected. - threshold on difference between intensity of the central pixel - and pixels of a circle around this pixel. - if true, non-maximum suppression is applied to - detected corners (keypoints). - one of the three neighborhoods as defined in the paper - keypoints detected on the image. - - - - Detects corners using the AGAST algorithm - - grayscale image where keypoints (corners) are detected. - threshold on difference between intensity of the central pixel - and pixels of a circle around this pixel. - if true, non-maximum suppression is applied to - detected corners (keypoints). - one of the four neighborhoods as defined in the paper - keypoints detected on the image. - - - - Draw keypoints. - - Source image. - Keypoints from the source image. - Output image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below. - Color of keypoints. - Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. - - - - Draws the found matches of keypoints from two images. - - First source image. - Keypoints from the first source image. - Second source image. - Keypoints from the second source image. - Matches from the first image to the second one, which means that keypoints1[i] - has a corresponding point in keypoints2[matches[i]] . - Output image. Its content depends on the flags value defining what is drawn in the - output image. See possible flags bit values below. - Color of matches (lines and connected keypoints). If matchColor==Scalar::all(-1), - the color is generated randomly. - Color of single keypoints (circles), which means that keypoints do not - have the matches. If singlePointColor==Scalar::all(-1) , the color is generated randomly. - Mask determining which matches are drawn. If the mask is empty, all matches are drawn. - Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. - - - - Draws the found matches of keypoints from two images. - - First source image. - Keypoints from the first source image. - Second source image. - Keypoints from the second source image. - Matches from the first image to the second one, which means that keypoints1[i] - has a corresponding point in keypoints2[matches[i]] . - Output image. Its content depends on the flags value defining what is drawn in the - output image. See possible flags bit values below. - Color of matches (lines and connected keypoints). If matchColor==Scalar::all(-1), - the color is generated randomly. - Color of single keypoints (circles), which means that keypoints do not - have the matches. If singlePointColor==Scalar::all(-1) , the color is generated randomly. - Mask determining which matches are drawn. If the mask is empty, all matches are drawn. - Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. - - - - - - - - - - - - - - - - - - - - recallPrecisionCurve - - - - - - - - - - - - - - - - - - - - Creates a window. - - Name of the window in the window caption that may be used as a window identifier. - - Flags of the window. Currently the only supported flag is CV WINDOW AUTOSIZE. If this is set, - the window size is automatically adjusted to fit the displayed image (see imshow ), and the user can not change the window size manually. - - - - - Destroys the specified window. - - - - - - Destroys all of the HighGUI windows. - - - - - - - - - - - Waits for a pressed key. - Similar to #waitKey, but returns full key code. - Key code is implementation specific and depends on used backend: QT/GTK/Win32/etc - - Delay in milliseconds. 0 is the special value that means ”forever” - Returns the code of the pressed key or -1 if no key was pressed before the specified time had elapsed. - - - - Waits for a pressed key. - - Delay in milliseconds. 0 is the special value that means ”forever” - Returns the code of the pressed key or -1 if no key was pressed before the specified time had elapsed. - - - - Displays the image in the specified window - - Name of the window. - Image to be shown. - - - - Resizes window to the specified size - - Window name - The new window width - The new window height - - - - Resizes window to the specified size - - Window name - The new window size - - - - Moves window to the specified position - - Window name - The new x-coordinate of the window - The new y-coordinate of the window - - - - Changes parameters of a window dynamically. - - Name of the window. - Window property to retrieve. - New value of the window property. - - - - Updates window title - - Name of the window - New title - - - - Provides parameters of a window. - - Name of the window. - Window property to retrieve. - - - - - Provides rectangle of image in the window. - The function getWindowImageRect returns the client screen coordinates, width and height of the image rendering area. - - Name of the window. - - - - - Sets the callback function for mouse events occuring within the specified window. - - Name of the window. - Reference to the function to be called every time mouse event occurs in the specified window. - - - - - Gets the mouse-wheel motion delta, when handling mouse-wheel events cv::EVENT_MOUSEWHEEL and cv::EVENT_MOUSEHWHEEL. - - For regular mice with a scroll-wheel, delta will be a multiple of 120. The value 120 corresponds to - a one notch rotation of the wheel or the threshold for action to be taken and one such action should - occur for each delta.Some high-precision mice with higher-resolution freely-rotating wheels may - generate smaller values. - - For cv::EVENT_MOUSEWHEEL positive and negative values mean forward and backward scrolling, - respectively.For cv::EVENT_MOUSEHWHEEL, where available, positive and negative values mean right and - left scrolling, respectively. - - The mouse callback flags parameter. - - - - - Selects ROI on the given image. - Function creates a window and allows user to select a ROI using mouse. - Controls: use `space` or `enter` to finish selection, use key `c` to cancel selection (function will return the zero cv::Rect). - - name of the window where selection process will be shown. - image to select a ROI. - if true crosshair of selection rectangle will be shown. - if true center of selection will match initial mouse position. In opposite case a corner of - selection rectangle will correspond to the initial mouse position. - selected ROI or empty rect if selection canceled. - - - - Selects ROI on the given image. - Function creates a window and allows user to select a ROI using mouse. - Controls: use `space` or `enter` to finish selection, use key `c` to cancel selection (function will return the zero cv::Rect). - - image to select a ROI. - if true crosshair of selection rectangle will be shown. - if true center of selection will match initial mouse position. In opposite case a corner of - selection rectangle will correspond to the initial mouse position. - selected ROI or empty rect if selection canceled. - - - - Selects ROIs on the given image. - Function creates a window and allows user to select a ROIs using mouse. - Controls: use `space` or `enter` to finish current selection and start a new one, - use `esc` to terminate multiple ROI selection process. - - name of the window where selection process will be shown. - image to select a ROI. - if true crosshair of selection rectangle will be shown. - if true center of selection will match initial mouse position. In opposite case a corner of - selection rectangle will correspond to the initial mouse position. - selected ROIs. - - - - Creates a trackbar and attaches it to the specified window. - The function createTrackbar creates a trackbar(a slider or range control) with the specified name - and range, assigns a variable value to be a position synchronized with the trackbar and specifies - the callback function onChange to be called on the trackbar position change.The created trackbar is - displayed in the specified window winName. - - Name of the created trackbar. - Name of the window that will be used as a parent of the created trackbar. - Optional pointer to an integer variable whose value reflects the position of the slider.Upon creation, - the slider position is defined by this variable. - Maximal position of the slider. The minimal position is always 0. - Pointer to the function to be called every time the slider changes position. - This function should be prototyped as void Foo(int, void\*); , where the first parameter is the trackbar - position and the second parameter is the user data(see the next parameter). If the callback is - the NULL pointer, no callbacks are called, but only value is updated. - User data that is passed as is to the callback. It can be used to handle trackbar events without using global variables. - - - - - Creates a trackbar and attaches it to the specified window. - The function createTrackbar creates a trackbar(a slider or range control) with the specified name - and range, assigns a variable value to be a position synchronized with the trackbar and specifies - the callback function onChange to be called on the trackbar position change.The created trackbar is - displayed in the specified window winName. - - Name of the created trackbar. - Name of the window that will be used as a parent of the created trackbar. - Maximal position of the slider. The minimal position is always 0. - Pointer to the function to be called every time the slider changes position. - This function should be prototyped as void Foo(int, void\*); , where the first parameter is the trackbar - position and the second parameter is the user data(see the next parameter). If the callback is - the NULL pointer, no callbacks are called, but only value is updated. - User data that is passed as is to the callback. It can be used to handle trackbar events without using global variables. - - - - - Returns the trackbar position. - - Name of the trackbar. - Name of the window that is the parent of the trackbar. - trackbar position - - - - Sets the trackbar position. - - Name of the trackbar. - Name of the window that is the parent of trackbar. - New position. - - - - Sets the trackbar maximum position. - The function sets the maximum position of the specified trackbar in the specified window. - - Name of the trackbar. - Name of the window that is the parent of trackbar. - New maximum position. - - - - Sets the trackbar minimum position. - The function sets the minimum position of the specified trackbar in the specified window. - - Name of the trackbar. - Name of the window that is the parent of trackbar. - New minimum position. - - - - get native window handle (HWND in case of Win32 and Widget in case of X Window) - - - - - - Loads an image from a file. - - Name of file to be loaded. - Specifies color type of the loaded image - - - - - Loads a multi-page image from a file. - - Name of file to be loaded. - A vector of Mat objects holding each page, if more than one. - Flag that can take values of @ref cv::ImreadModes, default with IMREAD_ANYCOLOR. - - - - - Saves an image to a specified file. - - Name of the file. - Image to be saved. - Format-specific save parameters encoded as pairs - - - - - Saves an image to a specified file. - - Name of the file. - Image to be saved. - Format-specific save parameters encoded as pairs - - - - - Saves an image to a specified file. - - Name of the file. - Image to be saved. - Format-specific save parameters encoded as pairs - - - - - Saves an image to a specified file. - - Name of the file. - Image to be saved. - Format-specific save parameters encoded as pairs - - - - - Reads image from the specified buffer in memory. - - The input array of vector of bytes. - The same flags as in imread - - - - - Reads image from the specified buffer in memory. - - The input array of vector of bytes. - The same flags as in imread - - - - - Reads image from the specified buffer in memory. - - The input array of vector of bytes. - The same flags as in imread - - - - - Reads image from the specified buffer in memory. - - The input slice of bytes. - The same flags as in imread - - - - - Compresses the image and stores it in the memory buffer - - The file extension that defines the output format - The image to be written - Output buffer resized to fit the compressed image. - Format-specific parameters. - - - - Compresses the image and stores it in the memory buffer - - The file extension that defines the output format - The image to be written - Output buffer resized to fit the compressed image. - Format-specific parameters. - - - - - - - - - - - - - - - - - - Returns Gaussian filter coefficients. - - Aperture size. It should be odd and positive. - Gaussian standard deviation. - If it is non-positive, it is computed from ksize as `sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8`. - Type of filter coefficients. It can be CV_32F or CV_64F. - - - - - Returns filter coefficients for computing spatial image derivatives. - - Output matrix of row filter coefficients. It has the type ktype. - Output matrix of column filter coefficients. It has the type ktype. - Derivative order in respect of x. - Derivative order in respect of y. - Aperture size. It can be CV_SCHARR, 1, 3, 5, or 7. - Flag indicating whether to normalize (scale down) the filter coefficients or not. - Theoretically, the coefficients should have the denominator \f$=2^{ksize*2-dx-dy-2}\f$. - If you are going to filter floating-point images, you are likely to use the normalized kernels. - But if you compute derivatives of an 8-bit image, store the results in a 16-bit image, - and wish to preserve all the fractional bits, you may want to set normalize = false. - Type of filter coefficients. It can be CV_32f or CV_64F. - - - - Returns Gabor filter coefficients. - - - For more details about gabor filter equations and parameters, see: https://en.wikipedia.org/wiki/Gabor_filter - - Size of the filter returned. - Standard deviation of the gaussian envelope. - Orientation of the normal to the parallel stripes of a Gabor function. - Wavelength of the sinusoidal factor. - Spatial aspect ratio. - Phase offset. - Type of filter coefficients. It can be CV_32F or CV_64F. - - - - - Returns a structuring element of the specified size and shape for morphological operations. - The function constructs and returns the structuring element that can be further passed to erode, - dilate or morphologyEx.But you can also construct an arbitrary binary mask yourself and use it as the structuring element. - - Element shape that could be one of MorphShapes - Size of the structuring element. - - - - - Returns a structuring element of the specified size and shape for morphological operations. - The function constructs and returns the structuring element that can be further passed to erode, - dilate or morphologyEx.But you can also construct an arbitrary binary mask yourself and use it as the structuring element. - - Element shape that could be one of MorphShapes - Size of the structuring element. - Anchor position within the element. The default value (−1,−1) means that the anchor is at the center. - Note that only the shape of a cross-shaped element depends on the anchor position. - In other cases the anchor just regulates how much the result of the morphological operation is shifted. - - - - - Smoothes image using median filter - - The source 1-, 3- or 4-channel image. - When ksize is 3 or 5, the image depth should be CV_8U , CV_16U or CV_32F. - For larger aperture sizes it can only be CV_8U - The destination array; will have the same size and the same type as src - The aperture linear size. It must be odd and more than 1, i.e. 3, 5, 7 ... - - - - Blurs an image using a Gaussian filter. - - input image; the image can have any number of channels, which are processed independently, - but the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. - output image of the same size and type as src. - Gaussian kernel size. ksize.width and ksize.height can differ but they both must be positive and odd. - Or, they can be zero’s and then they are computed from sigma* . - Gaussian kernel standard deviation in X direction. - Gaussian kernel standard deviation in Y direction; if sigmaY is zero, it is set to be equal to sigmaX, - if both sigmas are zeros, they are computed from ksize.width and ksize.height, - respectively (see getGaussianKernel() for details); to fully control the result - regardless of possible future modifications of all this semantics, it is recommended to specify all of ksize, sigmaX, and sigmaY. - pixel extrapolation method - - - - Applies bilateral filter to the image - - The source 8-bit or floating-point, 1-channel or 3-channel image - The destination image; will have the same size and the same type as src - The diameter of each pixel neighborhood, that is used during filtering. - If it is non-positive, it's computed from sigmaSpace - Filter sigma in the color space. - Larger value of the parameter means that farther colors within the pixel neighborhood - will be mixed together, resulting in larger areas of semi-equal color - Filter sigma in the coordinate space. - Larger value of the parameter means that farther pixels will influence each other - (as long as their colors are close enough; see sigmaColor). Then d>0 , it specifies - the neighborhood size regardless of sigmaSpace, otherwise d is proportional to sigmaSpace - - - - - Smoothes image using box filter - - The source image - The destination image; will have the same size and the same type as src - - The smoothing kernel size - The anchor point. The default value Point(-1,-1) means that the anchor is at the kernel center - Indicates, whether the kernel is normalized by its area or not - The border mode used to extrapolate pixels outside of the image - - - - Calculates the normalized sum of squares of the pixel values overlapping the filter. - - For every pixel f(x, y) in the source image, the function calculates the sum of squares of those neighboring - pixel values which overlap the filter placed over the pixel f(x, y). - - The unnormalized square box filter can be useful in computing local image statistics such as the the local - variance and standard deviation around the neighborhood of a pixel. - - - - - - - - - - - - Smoothes image using normalized box filter - - The source image - The destination image; will have the same size and the same type as src - The smoothing kernel size - The anchor point. The default value Point(-1,-1) means that the anchor is at the kernel center - The border mode used to extrapolate pixels outside of the image - - - - Convolves an image with the kernel - - The source image - The destination image. It will have the same size and the same number of channels as src - The desired depth of the destination image. If it is negative, it will be the same as src.depth() - Convolution kernel (or rather a correlation kernel), - a single-channel floating point matrix. If you want to apply different kernels to - different channels, split the image into separate color planes using split() and process them individually - The anchor of the kernel that indicates the relative position of - a filtered point within the kernel. The anchor should lie within the kernel. - The special default value (-1,-1) means that the anchor is at the kernel center - The optional value added to the filtered pixels before storing them in dst - The pixel extrapolation method - - - - Applies separable linear filter to an image - - The source image - The destination image; will have the same size and the same number of channels as src - The destination image depth - The coefficients for filtering each row - The coefficients for filtering each column - The anchor position within the kernel; The default value (-1, 1) means that the anchor is at the kernel center - The value added to the filtered results before storing them - The pixel extrapolation method - - - - Calculates the first, second, third or mixed image derivatives using an extended Sobel operator - - The source image - The destination image; will have the same size and the same number of channels as src - The destination image depth - Order of the derivative x - Order of the derivative y - Size of the extended Sobel kernel, must be 1, 3, 5 or 7 - The optional scale factor for the computed derivative values (by default, no scaling is applied - The optional delta value, added to the results prior to storing them in dst - The pixel extrapolation method - - - - Calculates the first order image derivative in both x and y using a Sobel operator - - input image. - output image with first-order derivative in x. - output image with first-order derivative in y. - size of Sobel kernel. It must be 3. - pixel extrapolation method - - - - Calculates the first x- or y- image derivative using Scharr operator - - The source image - The destination image; will have the same size and the same number of channels as src - The destination image depth - Order of the derivative x - Order of the derivative y - The optional scale factor for the computed derivative values (by default, no scaling is applie - The optional delta value, added to the results prior to storing them in dst - The pixel extrapolation method - - - - Calculates the Laplacian of an image - - Source image - Destination image; will have the same size and the same number of channels as src - The desired depth of the destination image - The aperture size used to compute the second-derivative filters - The optional scale factor for the computed Laplacian values (by default, no scaling is applied - The optional delta value, added to the results prior to storing them in dst - The pixel extrapolation method - - - - Finds edges in an image using Canny algorithm. - - Single-channel 8-bit input image - The output edge map. It will have the same size and the same type as image - The first threshold for the hysteresis procedure - The second threshold for the hysteresis procedure - Aperture size for the Sobel operator [By default this is ApertureSize.Size3] - Indicates, whether the more accurate L2 norm should be used to compute the image gradient magnitude (true), or a faster default L1 norm is enough (false). [By default this is false] - - - - Finds edges in an image using the Canny algorithm with custom image gradient. - - 16-bit x derivative of input image (CV_16SC1 or CV_16SC3). - 16-bit y derivative of input image (same type as dx). - output edge map; single channels 8-bit image, which has the same size as image. - first threshold for the hysteresis procedure. - second threshold for the hysteresis procedure. - Indicates, whether the more accurate L2 norm should be used to compute the image gradient magnitude (true), or a faster default L1 norm is enough (false). [By default this is false] - - - - Calculates the minimal eigenvalue of gradient matrices for corner detection. - - Input single-channel 8-bit or floating-point image. - Image to store the minimal eigenvalues. It has the type CV_32FC1 and the same size as src . - Neighborhood size (see the details on #cornerEigenValsAndVecs ). - Aperture parameter for the Sobel operator. - Pixel extrapolation method. See #BorderTypes. #BORDER_WRAP is not supported. - - - - Harris corner detector. - - Input single-channel 8-bit or floating-point image. - Image to store the Harris detector responses. - It has the type CV_32FC1 and the same size as src. - Neighborhood size (see the details on #cornerEigenValsAndVecs ). - Aperture parameter for the Sobel operator. - Harris detector free parameter. See the formula above. - Pixel extrapolation method. See #BorderTypes. #BORDER_WRAP is not supported. - - - - computes both eigenvalues and the eigenvectors of 2x2 derivative covariation matrix at each pixel. The output is stored as 6-channel matrix. - - - - - - - - - - computes another complex cornerness criteria at each pixel - - - - - - - - - adjusts the corner locations with sub-pixel accuracy to maximize the certain cornerness criteria - - Input image. - Initial coordinates of the input corners and refined coordinates provided for output. - Half of the side length of the search window. - Half of the size of the dead region in the middle of the search zone - over which the summation in the formula below is not done. It is used sometimes to avoid possible singularities - of the autocorrelation matrix. The value of (-1,-1) indicates that there is no such a size. - Criteria for termination of the iterative process of corner refinement. - That is, the process of corner position refinement stops either after criteria.maxCount iterations - or when the corner position moves by less than criteria.epsilon on some iteration. - - - - - finds the strong enough corners where the cornerMinEigenVal() or cornerHarris() report the local maxima - - Input 8-bit or floating-point 32-bit, single-channel image. - Maximum number of corners to return. If there are more corners than are found, - the strongest of them is returned. - Parameter characterizing the minimal accepted quality of image corners. - The parameter value is multiplied by the best corner quality measure, which is the minimal eigenvalue - or the Harris function response (see cornerHarris() ). The corners with the quality measure less than - the product are rejected. For example, if the best corner has the quality measure = 1500, and the qualityLevel=0.01, - then all the corners with the quality measure less than 15 are rejected. - Minimum possible Euclidean distance between the returned corners. - Optional region of interest. If the image is not empty - (it needs to have the type CV_8UC1 and the same size as image ), it specifies the region - in which the corners are detected. - Size of an average block for computing a derivative covariation matrix over each pixel neighborhood. - Parameter indicating whether to use a Harris detector - Free parameter of the Harris detector. - Output vector of detected corners. - - - - Finds lines in a binary image using standard Hough transform. - - The 8-bit, single-channel, binary source image. The image may be modified by the function - Distance resolution of the accumulator in pixels - Angle resolution of the accumulator in radians - The accumulator threshold parameter. Only those lines are returned that get enough votes ( > threshold ) - For the multi-scale Hough transform it is the divisor for the distance resolution rho. [By default this is 0] - For the multi-scale Hough transform it is the divisor for the distance resolution theta. [By default this is 0] - The output vector of lines. Each line is represented by a two-element vector (rho, theta) . - rho is the distance from the coordinate origin (0,0) (top-left corner of the image) and theta is the line rotation angle in radians - - - - Finds lines segments in a binary image using probabilistic Hough transform. - - - Distance resolution of the accumulator in pixels - Angle resolution of the accumulator in radians - The accumulator threshold parameter. Only those lines are returned that get enough votes ( > threshold ) - The minimum line length. Line segments shorter than that will be rejected. [By default this is 0] - The maximum allowed gap between points on the same line to link them. [By default this is 0] - The output lines. Each line is represented by a 4-element vector (x1, y1, x2, y2) - - - - Finds lines in a set of points using the standard Hough transform. - The function finds lines in a set of points using a modification of the Hough transform. - - Input vector of points. Each vector must be encoded as a Point vector \f$(x,y)\f$. Type must be CV_32FC2 or CV_32SC2. - Output vector of found lines. Each vector is encoded as a vector<Vec3d> - Max count of hough lines. - Accumulator threshold parameter. Only those lines are returned that get enough votes - Minimum Distance value of the accumulator in pixels. - Maximum Distance value of the accumulator in pixels. - Distance resolution of the accumulator in pixels. - Minimum angle value of the accumulator in radians. - Maximum angle value of the accumulator in radians. - Angle resolution of the accumulator in radians. - - - - Finds circles in a grayscale image using a Hough transform. - - The 8-bit, single-channel, grayscale input image - The available methods are HoughMethods.Gradient and HoughMethods.GradientAlt - The inverse ratio of the accumulator resolution to the image resolution. - Minimum distance between the centers of the detected circles. - The first method-specific parameter. [By default this is 100] - The second method-specific parameter. [By default this is 100] - Minimum circle radius. [By default this is 0] - Maximum circle radius. [By default this is 0] - The output vector found circles. Each vector is encoded as 3-element floating-point vector (x, y, radius) - - - - Default borderValue for Dilate/Erode - - - - - - Dilates an image by using a specific structuring element. - - The source image - The destination image. It will have the same size and the same type as src - The structuring element used for dilation. If element=new Mat() , a 3x3 rectangular structuring element is used - Position of the anchor within the element. The default value (-1, -1) means that the anchor is at the element center - The number of times dilation is applied. [By default this is 1] - The pixel extrapolation method. [By default this is BorderType.Constant] - The border value in case of a constant border. The default value has a special meaning. [By default this is CvCpp.MorphologyDefaultBorderValue()] - - - - Erodes an image by using a specific structuring element. - - The source image - The destination image. It will have the same size and the same type as src - The structuring element used for dilation. If element=new Mat(), a 3x3 rectangular structuring element is used - Position of the anchor within the element. The default value (-1, -1) means that the anchor is at the element center - The number of times erosion is applied - The pixel extrapolation method - The border value in case of a constant border. The default value has a special meaning. [By default this is CvCpp.MorphologyDefaultBorderValue()] - - - - Performs advanced morphological transformations - - Source image - Destination image. It will have the same size and the same type as src - Type of morphological operation - Structuring element - Position of the anchor within the element. The default value (-1, -1) means that the anchor is at the element center - Number of times erosion and dilation are applied. [By default this is 1] - The pixel extrapolation method. [By default this is BorderType.Constant] - The border value in case of a constant border. The default value has a special meaning. [By default this is CvCpp.MorphologyDefaultBorderValue()] - - - - Resizes an image. - - input image. - output image; it has the size dsize (when it is non-zero) or the size computed - from src.size(), fx, and fy; the type of dst is the same as of src. - output image size; if it equals zero, it is computed as: - dsize = Size(round(fx*src.cols), round(fy*src.rows)) - Either dsize or both fx and fy must be non-zero. - scale factor along the horizontal axis; when it equals 0, - it is computed as: (double)dsize.width/src.cols - scale factor along the vertical axis; when it equals 0, - it is computed as: (double)dsize.height/src.rows - interpolation method - - - - Applies an affine transformation to an image. - - input image. - output image that has the size dsize and the same type as src. - 2x3 transformation matrix. - size of the output image. - combination of interpolation methods and the optional flag - WARP_INVERSE_MAP that means that M is the inverse transformation (dst -> src) . - pixel extrapolation method; when borderMode=BORDER_TRANSPARENT, - it means that the pixels in the destination image corresponding to the "outliers" - in the source image are not modified by the function. - value used in case of a constant border; by default, it is 0. - - - - Applies a perspective transformation to an image. - - input image. - output image that has the size dsize and the same type as src. - 3x3 transformation matrix. - size of the output image. - combination of interpolation methods (INTER_LINEAR or INTER_NEAREST) - and the optional flag WARP_INVERSE_MAP, that sets M as the inverse transformation (dst -> src). - pixel extrapolation method (BORDER_CONSTANT or BORDER_REPLICATE). - value used in case of a constant border; by default, it equals 0. - - - - Applies a perspective transformation to an image. - - input image. - output image that has the size dsize and the same type as src. - 3x3 transformation matrix. - size of the output image. - combination of interpolation methods (INTER_LINEAR or INTER_NEAREST) - and the optional flag WARP_INVERSE_MAP, that sets M as the inverse transformation (dst -> src). - pixel extrapolation method (BORDER_CONSTANT or BORDER_REPLICATE). - value used in case of a constant border; by default, it equals 0. - - - - Applies a generic geometrical transformation to an image. - - Source image. - Destination image. It has the same size as map1 and the same type as src - The first map of either (x,y) points or just x values having the type CV_16SC2, CV_32FC1, or CV_32FC2. - The second map of y values having the type CV_16UC1, CV_32FC1, or none (empty map if map1 is (x,y) points), respectively. - Interpolation method. The method INTER_AREA is not supported by this function. - Pixel extrapolation method. When borderMode=BORDER_TRANSPARENT, - it means that the pixels in the destination image that corresponds to the "outliers" in - the source image are not modified by the function. - Value used in case of a constant border. By default, it is 0. - - - - Converts image transformation maps from one representation to another. - - The first input map of type CV_16SC2 , CV_32FC1 , or CV_32FC2 . - The second input map of type CV_16UC1 , CV_32FC1 , or none (empty matrix), respectively. - The first output map that has the type dstmap1type and the same size as src. - The second output map. - Type of the first output map that should be CV_16SC2 , CV_32FC1 , or CV_32FC2 . - Flag indicating whether the fixed-point maps are used for the nearest-neighbor or for a more complex interpolation. - - - - Calculates an affine matrix of 2D rotation. - - Center of the rotation in the source image. - Rotation angle in degrees. Positive values mean counter-clockwise rotation (the coordinate origin is assumed to be the top-left corner). - Isotropic scale factor. - - - - - Inverts an affine transformation. - - Original affine transformation. - Output reverse affine transformation. - - - - Calculates a perspective transform from four pairs of the corresponding points. - The function calculates the 3×3 matrix of a perspective transform. - - Coordinates of quadrangle vertices in the source image. - Coordinates of the corresponding quadrangle vertices in the destination image. - - - - - Calculates a perspective transform from four pairs of the corresponding points. - The function calculates the 3×3 matrix of a perspective transform. - - Coordinates of quadrangle vertices in the source image. - Coordinates of the corresponding quadrangle vertices in the destination image. - - - - - Calculates an affine transform from three pairs of the corresponding points. - The function calculates the 2×3 matrix of an affine transform. - - Coordinates of triangle vertices in the source image. - Coordinates of the corresponding triangle vertices in the destination image. - - - - - Calculates an affine transform from three pairs of the corresponding points. - The function calculates the 2×3 matrix of an affine transform. - - Coordinates of triangle vertices in the source image. - Coordinates of the corresponding triangle vertices in the destination image. - - - - - Retrieves a pixel rectangle from an image with sub-pixel accuracy. - - Source image. - Size of the extracted patch. - Floating point coordinates of the center of the extracted rectangle - within the source image. The center must be inside the image. - Extracted patch that has the size patchSize and the same number of channels as src . - Depth of the extracted pixels. By default, they have the same depth as src. - - - - Remaps an image to log-polar space. - - Source image - Destination image - The transformation center; where the output precision is maximal - Magnitude scale parameter. - A combination of interpolation methods, see cv::InterpolationFlags - - - - Remaps an image to polar space. - - Source image - Destination image - The transformation center - Inverse magnitude scale parameter - A combination of interpolation methods, see cv::InterpolationFlags - - - - Remaps an image to polar or semilog-polar coordinates space. - - - - The function can not operate in-place. - - To calculate magnitude and angle in degrees #cartToPolar is used internally thus angles are measured from 0 to 360 with accuracy about 0.3 degrees. - - This function uses #remap. Due to current implementation limitations the size of an input and output images should be less than 32767x32767. - - Source image. - Destination image. It will have same type as src. - The destination image size (see description for valid options). - The transformation center. - The radius of the bounding circle to transform. It determines the inverse magnitude scale parameter too. - interpolation methods. - interpolation methods. - - - - Calculates the integral of an image. - The function calculates one or more integral images for the source image. - - - - - - - - Calculates the integral of an image. - The function calculates one or more integral images for the source image. - - - - - - - - - Calculates the integral of an image. - The function calculates one or more integral images for the source image. - - input image as W×H, 8-bit or floating-point (32f or 64f). - integral image as (W+1)×(H+1) , 32-bit integer or floating-point (32f or 64f). - integral image for squared pixel values; it is (W+1)×(H+1), double-precision floating-point (64f) array. - integral for the image rotated by 45 degrees; it is (W+1)×(H+1) array with the same data type as sum. - desired depth of the integral and the tilted integral images, CV_32S, CV_32F, or CV_64F. - desired depth of the integral image of squared pixel values, CV_32F or CV_64F. - - - - Adds an image to the accumulator. - - Input image as 1- or 3-channel, 8-bit or 32-bit floating point. - Accumulator image with the same number of channels as input image, 32-bit or 64-bit floating-point. - Optional operation mask. - - - - Adds the square of a source image to the accumulator. - - Input image as 1- or 3-channel, 8-bit or 32-bit floating point. - Accumulator image with the same number of channels as input image, 32-bit or 64-bit floating-point. - Optional operation mask. - - - - Adds the per-element product of two input images to the accumulator. - - First input image, 1- or 3-channel, 8-bit or 32-bit floating point. - Second input image of the same type and the same size as src1 - Accumulator with the same number of channels as input images, 32-bit or 64-bit floating-point. - Optional operation mask. - - - - Updates a running average. - - Input image as 1- or 3-channel, 8-bit or 32-bit floating point. - Accumulator image with the same number of channels as input image, 32-bit or 64-bit floating-point. - Weight of the input image. - Optional operation mask. - - - - The function is used to detect translational shifts that occur between two images. - - The operation takes advantage of the Fourier shift theorem for detecting the translational shift in - the frequency domain.It can be used for fast image registration as well as motion estimation. - For more information please see http://en.wikipedia.org/wiki/Phase_correlation. - - Calculates the cross-power spectrum of two supplied source arrays. The arrays are padded if needed with getOptimalDFTSize. - - Source floating point array (CV_32FC1 or CV_64FC1) - Source floating point array (CV_32FC1 or CV_64FC1) - Floating point array with windowing coefficients to reduce edge effects (optional). - Signal power within the 5x5 centroid around the peak, between 0 and 1 (optional). - detected phase shift(sub-pixel) between the two arrays. - - - - Computes a Hanning window coefficients in two dimensions. - - Destination array to place Hann coefficients in - The window size specifications - Created array type - - - - Applies a fixed-level threshold to each array element. - - input array (single-channel, 8-bit or 32-bit floating point). - output array of the same size and type as src. - threshold value. - maximum value to use with the THRESH_BINARY and THRESH_BINARY_INV thresholding types. - thresholding type (see the details below). - the computed threshold value when type == OTSU - - - - Applies an adaptive threshold to an array. - - Source 8-bit single-channel image. - Destination image of the same size and the same type as src . - Non-zero value assigned to the pixels for which the condition is satisfied. See the details below. - Adaptive thresholding algorithm to use, ADAPTIVE_THRESH_MEAN_C or ADAPTIVE_THRESH_GAUSSIAN_C . - Thresholding type that must be either THRESH_BINARY or THRESH_BINARY_INV . - Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. - Constant subtracted from the mean or weighted mean (see the details below). - Normally, it is positive but may be zero or negative as well. - - - - Blurs an image and downsamples it. - - input image. - output image; it has the specified size and the same type as src. - size of the output image; by default, it is computed as Size((src.cols+1)/2 - - - - - Upsamples an image and then blurs it. - - input image. - output image. It has the specified size and the same type as src. - size of the output image; by default, it is computed as Size(src.cols*2, (src.rows*2) - - - - - computes the joint dense histogram for a set of images. - - - - - - - - - - - - - - computes the joint dense histogram for a set of images. - - - - - - - - - - - - - - computes the joint dense histogram for a set of images. - - - - - - - - - - - compares two histograms stored in dense arrays - - The first compared histogram - The second compared histogram of the same size as h1 - The comparison method - - - - - normalizes the grayscale image brightness and contrast by normalizing its histogram - - The source 8-bit single channel image - The destination image; will have the same size and the same type as src - - - - Creates a predefined CLAHE object - - - - - - - - Computes the "minimal work" distance between two weighted point configurations. - - The function computes the earth mover distance and/or a lower boundary of the distance between the - two weighted point configurations.One of the applications described in @cite RubnerSept98, - @cite Rubner2000 is multi-dimensional histogram comparison for image retrieval.EMD is a transportation - problem that is solved using some modification of a simplex algorithm, thus the complexity is - exponential in the worst case, though, on average it is much faster.In the case of a real metric - the lower boundary can be calculated even faster (using linear-time algorithm) and it can be used - to determine roughly whether the two signatures are far enough so that they cannot relate to the same object. - - First signature, a \f$\texttt{size1}\times \texttt{dims}+1\f$ floating-point matrix. - Each row stores the point weight followed by the point coordinates.The matrix is allowed to have - a single column(weights only) if the user-defined cost matrix is used.The weights must be non-negative - and have at least one non-zero value. - Second signature of the same format as signature1 , though the number of rows - may be different.The total weights may be different.In this case an extra "dummy" point is added - to either signature1 or signature2. The weights must be non-negative and have at least one non-zero value. - Used metric. - - - - - Computes the "minimal work" distance between two weighted point configurations. - - The function computes the earth mover distance and/or a lower boundary of the distance between the - two weighted point configurations.One of the applications described in @cite RubnerSept98, - @cite Rubner2000 is multi-dimensional histogram comparison for image retrieval.EMD is a transportation - problem that is solved using some modification of a simplex algorithm, thus the complexity is - exponential in the worst case, though, on average it is much faster.In the case of a real metric - the lower boundary can be calculated even faster (using linear-time algorithm) and it can be used - to determine roughly whether the two signatures are far enough so that they cannot relate to the same object. - - First signature, a \f$\texttt{size1}\times \texttt{dims}+1\f$ floating-point matrix. - Each row stores the point weight followed by the point coordinates.The matrix is allowed to have - a single column(weights only) if the user-defined cost matrix is used.The weights must be non-negative - and have at least one non-zero value. - Second signature of the same format as signature1 , though the number of rows - may be different.The total weights may be different.In this case an extra "dummy" point is added - to either signature1 or signature2. The weights must be non-negative and have at least one non-zero value. - Used metric. - User-defined size1 x size2 cost matrix. Also, if a cost matrix - is used, lower boundary lowerBound cannot be calculated because it needs a metric function. - - - - - Computes the "minimal work" distance between two weighted point configurations. - - The function computes the earth mover distance and/or a lower boundary of the distance between the - two weighted point configurations.One of the applications described in @cite RubnerSept98, - @cite Rubner2000 is multi-dimensional histogram comparison for image retrieval.EMD is a transportation - problem that is solved using some modification of a simplex algorithm, thus the complexity is - exponential in the worst case, though, on average it is much faster.In the case of a real metric - the lower boundary can be calculated even faster (using linear-time algorithm) and it can be used - to determine roughly whether the two signatures are far enough so that they cannot relate to the same object. - - First signature, a \f$\texttt{size1}\times \texttt{dims}+1\f$ floating-point matrix. - Each row stores the point weight followed by the point coordinates.The matrix is allowed to have - a single column(weights only) if the user-defined cost matrix is used.The weights must be non-negative - and have at least one non-zero value. - Second signature of the same format as signature1 , though the number of rows - may be different.The total weights may be different.In this case an extra "dummy" point is added - to either signature1 or signature2. The weights must be non-negative and have at least one non-zero value. - Used metric. - User-defined size1 x size2 cost matrix. Also, if a cost matrix - is used, lower boundary lowerBound cannot be calculated because it needs a metric function. - Optional input/output parameter: lower boundary of a distance between the two - signatures that is a distance between mass centers.The lower boundary may not be calculated if - the user-defined cost matrix is used, the total weights of point configurations are not equal, or - if the signatures consist of weights only(the signature matrices have a single column). You ** must** - initialize \*lowerBound.If the calculated distance between mass centers is greater or equal to - \*lowerBound(it means that the signatures are far enough), the function does not calculate EMD. - In any case \*lowerBound is set to the calculated distance between mass centers on return. - Thus, if you want to calculate both distance between mass centers and EMD, \*lowerBound should be set to 0. - Resultant size1 x size2 flow matrix: flow[i,j] is a flow from i-th point of signature1 - to j-th point of signature2. - - - - - Performs a marker-based image segmentation using the watershed algorithm. - - Input 8-bit 3-channel image. - Input/output 32-bit single-channel image (map) of markers. - It should have the same size as image. - - - - Performs initial step of meanshift segmentation of an image. - - The source 8-bit, 3-channel image. - The destination image of the same format and the same size as the source. - The spatial window radius. - The color window radius. - Maximum level of the pyramid for the segmentation. - Termination criteria: when to stop meanshift iterations. - - - - Segments the image using GrabCut algorithm - - Input 8-bit 3-channel image. - Input/output 8-bit single-channel mask. - The mask is initialized by the function when mode is set to GC_INIT_WITH_RECT. - Its elements may have Cv2.GC_BGD / Cv2.GC_FGD / Cv2.GC_PR_BGD / Cv2.GC_PR_FGD - ROI containing a segmented object. The pixels outside of the ROI are - marked as "obvious background". The parameter is only used when mode==GC_INIT_WITH_RECT. - Temporary array for the background model. Do not modify it while you are processing the same image. - Temporary arrays for the foreground model. Do not modify it while you are processing the same image. - Number of iterations the algorithm should make before returning the result. - Note that the result can be refined with further calls with mode==GC_INIT_WITH_MASK or mode==GC_EVAL . - Operation mode that could be one of GrabCutFlag value. - - - - Calculates the distance to the closest zero pixel for each pixel of the source image. - - 8-bit, single-channel (binary) source image. - Output image with calculated distances. It is a 8-bit or 32-bit floating-point, - single-channel image of the same size as src. - Output 2D array of labels (the discrete Voronoi diagram). It has the type - CV_32SC1 and the same size as src. - Type of distance - Size of the distance transform mask, see #DistanceTransformMasks. - #DIST_MASK_PRECISE is not supported by this variant. In case of the #DIST_L1 or #DIST_C distance type, - the parameter is forced to 3 because a 3x3 mask gives the same result as 5x5 or any larger aperture. - Type of the label array to build - - - - computes the distance transform map - - 8-bit, single-channel (binary) source image. - Output image with calculated distances. It is a 8-bit or 32-bit floating-point, - single-channel image of the same size as src. - Type of distance - Size of the distance transform mask, see #DistanceTransformMasks. In case of the - #DIST_L1 or #DIST_C distance type, the parameter is forced to 3 because a 3x3 mask gives - the same result as 5x5 or any larger aperture. - Type of output image. It can be MatType.CV_8U or MatType.CV_32F. - Type CV_8U can be used only for the first variant of the function and distanceType == #DIST_L1. - - - - Fills a connected component with the given color. - - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - Starting point. - New value of the repainted domain pixels. - - - - - Fills a connected component with the given color. - - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - Starting point. - New value of the repainted domain pixels. - Optional output parameter set by the function to the - minimum bounding rectangle of the repainted domain. - Maximal lower brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Maximal upper brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Operation flags. Lower bits contain a connectivity value, - 4 (default) or 8, used within the function. Connectivity determines which - neighbors of a pixel are considered. - - - - - Fills a connected component with the given color. - - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - (For the second function only) Operation mask that should be a single-channel 8-bit image, - 2 pixels wider and 2 pixels taller. The function uses and updates the mask, so you take responsibility of - initializing the mask content. Flood-filling cannot go across non-zero pixels in the mask. For example, - an edge detector output can be used as a mask to stop filling at edges. It is possible to use the same mask - in multiple calls to the function to make sure the filled area does not overlap. - Starting point. - New value of the repainted domain pixels. - - - - - Fills a connected component with the given color. - - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - (For the second function only) Operation mask that should be a single-channel 8-bit image, - 2 pixels wider and 2 pixels taller. The function uses and updates the mask, so you take responsibility of - initializing the mask content. Flood-filling cannot go across non-zero pixels in the mask. For example, - an edge detector output can be used as a mask to stop filling at edges. It is possible to use the same mask - in multiple calls to the function to make sure the filled area does not overlap. - Starting point. - New value of the repainted domain pixels. - Optional output parameter set by the function to the - minimum bounding rectangle of the repainted domain. - Maximal lower brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Maximal upper brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Operation flags. Lower bits contain a connectivity value, - 4 (default) or 8, used within the function. Connectivity determines which - neighbors of a pixel are considered. - - - - - Performs linear blending of two images: - dst(i,j) = weights1(i,j)*src1(i,j) + weights2(i,j)*src2(i,j) - - It has a type of CV_8UC(n) or CV_32FC(n), where n is a positive integer. - It has the same type and size as src1. - It has a type of CV_32FC1 and the same size with src1. - It has a type of CV_32FC1 and the same size with src1. - It is created if it does not have the same size and type with src1. - - - - Converts image from one color space to another - - The source image, 8-bit unsigned, 16-bit unsigned or single-precision floating-point - The destination image; will have the same size and the same depth as src - The color space conversion code - The number of channels in the destination image; if the parameter is 0, the number of the channels will be derived automatically from src and the code - - - - Converts an image from one color space to another where the source image is stored in two planes. - This function only supports YUV420 to RGB conversion as of now. - - 8-bit image (#CV_8U) of the Y plane. - image containing interleaved U/V plane. - output image. - Specifies the type of conversion. It can take any of the following values: - - #COLOR_YUV2BGR_NV12 - - #COLOR_YUV2RGB_NV12 - - #COLOR_YUV2BGRA_NV12 - - #COLOR_YUV2RGBA_NV12 - - #COLOR_YUV2BGR_NV21 - - #COLOR_YUV2RGB_NV21 - - #COLOR_YUV2BGRA_NV21 - - #COLOR_YUV2RGBA_NV21 - - - - main function for all demosaicing processes - - input image: 8-bit unsigned or 16-bit unsigned. - output image of the same size and depth as src. - Color space conversion code (see the description below). - number of channels in the destination image; if the parameter is 0, - the number of the channels is derived automatically from src and code. - - The function can do the following transformations: - - - Demosaicing using bilinear interpolation - - #COLOR_BayerBG2BGR , #COLOR_BayerGB2BGR , #COLOR_BayerRG2BGR , #COLOR_BayerGR2BGR - #COLOR_BayerBG2GRAY , #COLOR_BayerGB2GRAY , #COLOR_BayerRG2GRAY , #COLOR_BayerGR2GRAY - - - Demosaicing using Variable Number of Gradients. - - #COLOR_BayerBG2BGR_VNG , #COLOR_BayerGB2BGR_VNG , #COLOR_BayerRG2BGR_VNG , #COLOR_BayerGR2BGR_VNG - - - Edge-Aware Demosaicing. - - #COLOR_BayerBG2BGR_EA , #COLOR_BayerGB2BGR_EA , #COLOR_BayerRG2BGR_EA , #COLOR_BayerGR2BGR_EA - - - Demosaicing with alpha channel - - # COLOR_BayerBG2BGRA , #COLOR_BayerGB2BGRA , #COLOR_BayerRG2BGRA , #COLOR_BayerGR2BGRA - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (single-channel, 8-bit or floating-point - 2D array) or an array ( 1xN or Nx1 ) of 2D points ( Point or Point2f ) - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (8-bit) 2D array - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (floating-point) 2D array - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - Array of 2D points - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - Array of 2D points - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Computes the proximity map for the raster template and the image where the template is searched for - - Image where the search is running; should be 8-bit or 32-bit floating-point - Searched template; must be not greater than the source image and have the same data type - A map of comparison results; will be single-channel 32-bit floating-point. - If image is WxH and templ is wxh then result will be (W-w+1) x (H-h+1). - Specifies the comparison method - Mask of searched template. It must have the same datatype and size with templ. It is not set by default. - - - - Computes the connected components labeled image of boolean image. - - image with 4 or 8 way connectivity - returns N, the total number of labels[0, N - 1] where 0 - represents the background label.ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of pixels in - the source image.ccltype specifies the connected components labeling algorithm to use, currently - Grana (BBDT) and Wu's (SAUF) algorithms are supported, see the #ConnectedComponentsAlgorithmsTypes - for details.Note that SAUF algorithm forces a row major ordering of labels while BBDT does not. - This function uses parallel version of both Grana and Wu's algorithms if at least one allowed - parallel framework is enabled and if the rows of the image are at least twice the number returned by #getNumberOfCPUs. - - the 8-bit single-channel image to be labeled - destination labeled image - 8 or 4 for 8-way or 4-way connectivity respectively - output image label type. Currently CV_32S and CV_16U are supported. - connected components algorithm type. - - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - the image to be labeled - destination labeled image - 8 or 4 for 8-way or 4-way connectivity respectively - The number of labels - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - the image to be labeled - destination labeled image - 8 or 4 for 8-way or 4-way connectivity respectively - output image label type. Currently CV_32S and CV_16U are supported. - The number of labels - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - the image to be labeled - destination labeled rectangular array - 8 or 4 for 8-way or 4-way connectivity respectively - The number of labels - - - - computes the connected components labeled image of boolean image and also produces a statistics output for each label. - - image with 4 or 8 way connectivity - returns N, the total number of labels[0, N - 1] where 0 - represents the background label.ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of pixels in - the source image.ccltype specifies the connected components labeling algorithm to use, currently - Grana's (BBDT) and Wu's (SAUF) algorithms are supported, see the #ConnectedComponentsAlgorithmsTypes - for details.Note that SAUF algorithm forces a row major ordering of labels while BBDT does not. - This function uses parallel version of both Grana and Wu's algorithms (statistics included) if at least one allowed - parallel framework is enabled and if the rows of the image are at least twice the number returned by #getNumberOfCPUs. - - the 8-bit single-channel image to be labeled - destination labeled image - statistics output for each label, including the background label, see below for - available statistics.Statistics are accessed via stats(label, COLUMN) where COLUMN is one of #ConnectedComponentsTypes. The data type is CV_32S. - centroid output for each label, including the background label. Centroids are - accessed via centroids(label, 0) for x and centroids(label, 1) for y.The data type CV_64F. - 8 or 4 for 8-way or 4-way connectivity respectively - output image label type. Currently CV_32S and CV_16U are supported. - connected components algorithm type. - - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - the image to be labeled - destination labeled image - statistics output for each label, including the background label, - see below for available statistics. Statistics are accessed via stats(label, COLUMN) - where COLUMN is one of cv::ConnectedComponentsTypes - floating point centroid (x,y) output for each label, - including the background label - 8 or 4 for 8-way or 4-way connectivity respectively - - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - the image to be labeled - destination labeled image - statistics output for each label, including the background label, - see below for available statistics. Statistics are accessed via stats(label, COLUMN) - where COLUMN is one of cv::ConnectedComponentsTypes - floating point centroid (x,y) output for each label, - including the background label - 8 or 4 for 8-way or 4-way connectivity respectively - output image label type. Currently CV_32S and CV_16U are supported. - - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - the image to be labeled - 8 or 4 for 8-way or 4-way connectivity respectively - - - - - - Finds contours in a binary image. - - Source, an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. - The function modifies the image while extracting the contours. - Detected contours. Each contour is stored as a vector of points. - Optional output vector, containing information about the image topology. - It has as many elements as the number of contours. For each i-th contour contours[i], - the members of the elements hierarchy[i] are set to 0-based indices in contours of the next - and previous contours at the same hierarchical level, the first child contour and the parent contour, respectively. - If for the contour i there are no next, previous, parent, or nested contours, the corresponding elements of hierarchy[i] will be negative. - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - - - - Finds contours in a binary image. - - Source, an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. - The function modifies the image while extracting the contours. - Detected contours. Each contour is stored as a vector of points. - Optional output vector, containing information about the image topology. - It has as many elements as the number of contours. For each i-th contour contours[i], - the members of the elements hierarchy[i] are set to 0-based indices in contours of the next - and previous contours at the same hierarchical level, the first child contour and the parent contour, respectively. - If for the contour i there are no next, previous, parent, or nested contours, the corresponding elements of hierarchy[i] will be negative. - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - - - - Finds contours in a binary image. - - Source, an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. - The function modifies the image while extracting the contours. - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - Detected contours. Each contour is stored as a vector of points. - - - - Finds contours in a binary image. - - Source, an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. - The function modifies the image while extracting the contours. - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - Detected contours. Each contour is stored as a vector of points. - - - - Approximates contour or a curve using Douglas-Peucker algorithm - - The polygon or curve to approximate. - Must be 1 x N or N x 1 matrix of type CV_32SC2 or CV_32FC2. - The result of the approximation; - The type should match the type of the input curve - Specifies the approximation accuracy. - This is the maximum distance between the original curve and its approximation. - The result of the approximation; - The type should match the type of the input curve - - - - Approximates contour or a curve using Douglas-Peucker algorithm - - The polygon or curve to approximate. - Specifies the approximation accuracy. - This is the maximum distance between the original curve and its approximation. - The result of the approximation; - The type should match the type of the input curve - The result of the approximation; - The type should match the type of the input curve - - - - Approximates contour or a curve using Douglas-Peucker algorithm - - The polygon or curve to approximate. - Specifies the approximation accuracy. - This is the maximum distance between the original curve and its approximation. - If true, the approximated curve is closed - (i.e. its first and last vertices are connected), otherwise it’s not - The result of the approximation; - The type should match the type of the input curve - - - - Calculates a contour perimeter or a curve length. - - The input vector of 2D points, represented by CV_32SC2 or CV_32FC2 matrix. - Indicates, whether the curve is closed or not. - - - - - Calculates a contour perimeter or a curve length. - - The input vector of 2D points. - Indicates, whether the curve is closed or not. - - - - - Calculates a contour perimeter or a curve length. - - The input vector of 2D points. - Indicates, whether the curve is closed or not. - - - - - Calculates the up-right bounding rectangle of a point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - Minimal up-right bounding rectangle for the specified point set. - - - - Calculates the up-right bounding rectangle of a point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - Minimal up-right bounding rectangle for the specified point set. - - - - Calculates the up-right bounding rectangle of a point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - Minimal up-right bounding rectangle for the specified point set. - - - - Calculates the contour area - - The contour vertices, represented by CV_32SC2 or CV_32FC2 matrix - - - - - - Calculates the contour area - - The contour vertices, represented by CV_32SC2 or CV_32FC2 matrix - - - - - - Calculates the contour area - - The contour vertices, represented by CV_32SC2 or CV_32FC2 matrix - - - - - - Finds the minimum area rotated rectangle enclosing a 2D point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - - - - Finds the minimum area rotated rectangle enclosing a 2D point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - - - - Finds the minimum area rotated rectangle enclosing a 2D point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - - - - Finds the four vertices of a rotated rect. Useful to draw the rotated rectangle. - - The function finds the four vertices of a rotated rectangle.This function is useful to draw the - rectangle.In C++, instead of using this function, you can directly use RotatedRect::points method. Please - visit the @ref tutorial_bounding_rotated_ellipses "tutorial on Creating Bounding rotated boxes and ellipses for contours" for more information. - - The input rotated rectangle. It may be the output of - The output array of four vertices of rectangles. - - - - - Finds the four vertices of a rotated rect. Useful to draw the rotated rectangle. - - The function finds the four vertices of a rotated rectangle.This function is useful to draw the - rectangle.In C++, instead of using this function, you can directly use RotatedRect::points method. Please - visit the @ref tutorial_bounding_rotated_ellipses "tutorial on Creating Bounding rotated boxes and ellipses for contours" for more information. - - The input rotated rectangle. It may be the output of - The output array of four vertices of rectangles. - - - - Finds the minimum area circle enclosing a 2D point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - The output center of the circle - The output radius of the circle - - - - Finds the minimum area circle enclosing a 2D point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - The output center of the circle - The output radius of the circle - - - - Finds the minimum area circle enclosing a 2D point set. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - The output center of the circle - The output radius of the circle - - - - Finds a triangle of minimum area enclosing a 2D point set and returns its area. - - Input vector of 2D points with depth CV_32S or CV_32F, stored in std::vector or Mat - Output vector of three 2D points defining the vertices of the triangle. The depth - Triangle area - - - - Finds a triangle of minimum area enclosing a 2D point set and returns its area. - - Input vector of 2D points with depth CV_32S or CV_32F, stored in std::vector or Mat - Output vector of three 2D points defining the vertices of the triangle. The depth - Triangle area - - - - Finds a triangle of minimum area enclosing a 2D point set and returns its area. - - Input vector of 2D points with depth CV_32S or CV_32F, stored in std::vector or Mat - Output vector of three 2D points defining the vertices of the triangle. The depth - Triangle area - - - - Compares two shapes. - - First contour or grayscale image. - Second contour or grayscale image. - Comparison method - Method-specific parameter (not supported now) - - - - - Compares two shapes. - - First contour or grayscale image. - Second contour or grayscale image. - Comparison method - Method-specific parameter (not supported now) - - - - - Computes convex hull for a set of 2D points. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix - The output convex hull. It is either a vector of points that form the - hull (must have the same type as the input points), or a vector of 0-based point - indices of the hull points in the original array (since the set of convex hull - points is a subset of the original point set). - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - - - - - Computes convex hull for a set of 2D points. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of points that form - the hull (must have the same type as the input points). - - - - Computes convex hull for a set of 2D points. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of points that form - the hull (must have the same type as the input points). - - - - Computes convex hull for a set of 2D points. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of 0-based point indices of the - hull points in the original array (since the set of convex hull points is a subset of the original point set). - - - - Computes convex hull for a set of 2D points. - - The input 2D point set, represented by CV_32SC2 or CV_32FC2 matrix - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of 0-based point indices of the - hull points in the original array (since the set of convex hull points is a subset of the original point set). - - - - Computes the contour convexity defects - - Input contour. - Convex hull obtained using convexHull() that - should contain indices of the contour points that make the hull. - - The output vector of convexity defects. - Each convexity defect is represented as 4-element integer vector - (a.k.a. cv::Vec4i): (start_index, end_index, farthest_pt_index, fixpt_depth), - where indices are 0-based indices in the original contour of the convexity defect beginning, - end and the farthest point, and fixpt_depth is fixed-point approximation - (with 8 fractional bits) of the distance between the farthest contour point and the hull. - That is, to get the floating-point value of the depth will be fixpt_depth/256.0. - - - - - Computes the contour convexity defects - - Input contour. - Convex hull obtained using convexHull() that - should contain indices of the contour points that make the hull. - The output vector of convexity defects. - Each convexity defect is represented as 4-element integer vector - (a.k.a. cv::Vec4i): (start_index, end_index, farthest_pt_index, fixpt_depth), - where indices are 0-based indices in the original contour of the convexity defect beginning, - end and the farthest point, and fixpt_depth is fixed-point approximation - (with 8 fractional bits) of the distance between the farthest contour point and the hull. - That is, to get the floating-point value of the depth will be fixpt_depth/256.0. - - - - Computes the contour convexity defects - - Input contour. - Convex hull obtained using convexHull() that - should contain indices of the contour points that make the hull. - The output vector of convexity defects. - Each convexity defect is represented as 4-element integer vector - (a.k.a. cv::Vec4i): (start_index, end_index, farthest_pt_index, fixpt_depth), - where indices are 0-based indices in the original contour of the convexity defect beginning, - end and the farthest point, and fixpt_depth is fixed-point approximation - (with 8 fractional bits) of the distance between the farthest contour point and the hull. - That is, to get the floating-point value of the depth will be fixpt_depth/256.0. - - - - returns true if the contour is convex. - Does not support contours with self-intersection - - Input vector of 2D points - - - - - returns true if the contour is convex. - Does not support contours with self-intersection - - Input vector of 2D points - - - - - returns true if the contour is convex. D - oes not support contours with self-intersection - - Input vector of 2D points - - - - - finds intersection of two convex polygons - - - - - - - - - - finds intersection of two convex polygons - - - - - - - - - - finds intersection of two convex polygons - - - - - - - - - - Fits ellipse to the set of 2D points. - - Input 2D point set - - - - - Fits ellipse to the set of 2D points. - - Input 2D point set - - - - - Fits ellipse to the set of 2D points. - - Input 2D point set - - - - - Fits an ellipse around a set of 2D points. - - The function calculates the ellipse that fits a set of 2D points. - It returns the rotated rectangle in which the ellipse is inscribed. - The Approximate Mean Square(AMS) proposed by @cite Taubin1991 is used. - - Input 2D point set - - - - - Fits an ellipse around a set of 2D points. - - The function calculates the ellipse that fits a set of 2D points. - It returns the rotated rectangle in which the ellipse is inscribed. - The Approximate Mean Square(AMS) proposed by @cite Taubin1991 is used. - - Input 2D point set - - - - - Fits an ellipse around a set of 2D points. - - The function calculates the ellipse that fits a set of 2D points. - It returns the rotated rectangle in which the ellipse is inscribed. - The Approximate Mean Square(AMS) proposed by @cite Taubin1991 is used. - - Input 2D point set - - - - - Fits an ellipse around a set of 2D points. - - The function calculates the ellipse that fits a set of 2D points. - It returns the rotated rectangle in which the ellipse is inscribed. - The Direct least square(Direct) method by @cite Fitzgibbon1999 is used. - - Input 2D point set - - - - - Fits an ellipse around a set of 2D points. - - The function calculates the ellipse that fits a set of 2D points. - It returns the rotated rectangle in which the ellipse is inscribed. - The Direct least square(Direct) method by @cite Fitzgibbon1999 is used. - - Input 2D point set - - - - - Fits an ellipse around a set of 2D points. - - The function calculates the ellipse that fits a set of 2D points. - It returns the rotated rectangle in which the ellipse is inscribed. - The Direct least square(Direct) method by @cite Fitzgibbon1999 is used. - - Input 2D point set - - - - - Fits line to the set of 2D points using M-estimator algorithm - - Input vector of 2D or 3D points - Output line parameters. - In case of 2D fitting, it should be a vector of 4 elements - (like Vec4f) - (vx, vy, x0, y0), where (vx, vy) is a normalized vector - collinear to the line and (x0, y0) is a point on the line. - In case of 3D fitting, it should be a vector of 6 elements - (like Vec6f) - (vx, vy, vz, x0, y0, z0), where (vx, vy, vz) is a - normalized vector collinear to the line and (x0, y0, z0) is a point on the line. - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - - - - Fits line to the set of 2D points using M-estimator algorithm - - Input vector of 2D or 3D points - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - Output line parameters. - - - - Fits line to the set of 2D points using M-estimator algorithm - - Input vector of 2D or 3D points - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - Output line parameters. - - - - Fits line to the set of 3D points using M-estimator algorithm - - Input vector of 2D or 3D points - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - Output line parameters. - - - - Fits line to the set of 3D points using M-estimator algorithm - - Input vector of 2D or 3D points - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - Output line parameters. - - - - Checks if the point is inside the contour. Optionally computes the signed distance from the point to the contour boundary - - - - - - - - - Checks if the point is inside the contour. Optionally computes the signed distance from the point to the contour boundary - - - - - - - - - Checks if the point is inside the contour. - Optionally computes the signed distance from the point to the contour boundary. - - Input contour. - Point tested against the contour. - If true, the function estimates the signed distance - from the point to the nearest contour edge. Otherwise, the function only checks - if the point is inside a contour or not. - Positive (inside), negative (outside), or zero (on an edge) value. - - - - Finds out if there is any intersection between two rotated rectangles. - If there is then the vertices of the interesecting region are returned as well. - Below are some examples of intersection configurations. - The hatched pattern indicates the intersecting region and the red - vertices are returned by the function. - - First rectangle - Second rectangle - - The output array of the verticies of the intersecting region. - It returns at most 8 vertices. - Stored as std::vector<cv::Point2f> or cv::Mat as Mx1 of type CV_32FC2. - - - - - Finds out if there is any intersection between two rotated rectangles. - If there is then the vertices of the interesecting region are returned as well. - Below are some examples of intersection configurations. - The hatched pattern indicates the intersecting region and the red - vertices are returned by the function. - - First rectangle - Second rectangle - - The output array of the verticies of the intersecting region. - It returns at most 8 vertices. - - - - - Applies a GNU Octave/MATLAB equivalent colormap on a given image. - - The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. - The result is the colormapped source image. Note: Mat::create is called on dst. - colormap The colormap to apply - - - - Applies a user colormap on a given image. - - The source image, grayscale or colored of type CV_8UC1 or CV_8UC3. - The result is the colormapped source image. Note: Mat::create is called on dst. - The colormap to apply of type CV_8UC1 or CV_8UC3 and size 256 - - - - Draws a line segment connecting two points - - The image. - First point's x-coordinate of the line segment. - First point's y-coordinate of the line segment. - Second point's x-coordinate of the line segment. - Second point's y-coordinate of the line segment. - Line color. - Line thickness. [By default this is 1] - Type of the line. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws a line segment connecting two points - - The image. - First point of the line segment. - Second point of the line segment. - Line color. - Line thickness. [By default this is 1] - Type of the line. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws a arrow segment pointing from the first point to the second one. - The function arrowedLine draws an arrow between pt1 and pt2 points in the image. - See also cv::line. - - Image. - The point the arrow starts from. - The point the arrow points to. - Line color. - Line thickness. - Type of the line, see cv::LineTypes - Number of fractional bits in the point coordinates. - The length of the arrow tip in relation to the arrow length - - - - Draws simple, thick or filled rectangle - - Image. - One of the rectangle vertices. - Opposite rectangle vertex. - Line color (RGB) or brightness (grayscale image). - Thickness of lines that make up the rectangle. Negative values make the function to draw a filled rectangle. [By default this is 1] - Type of the line, see cvLine description. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws simple, thick or filled rectangle - - Image. - Rectangle. - Line color (RGB) or brightness (grayscale image). - Thickness of lines that make up the rectangle. - Negative values make the function to draw a filled rectangle. [By default this is 1] - Type of the line, see cvLine description. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws simple, thick or filled rectangle - - Image. - Rectangle. - Line color (RGB) or brightness (grayscale image). - Thickness of lines that make up the rectangle. - Negative values make the function to draw a filled rectangle. [By default this is 1] - Type of the line, see cvLine description. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws simple, thick or filled rectangle - - Image. - One of the rectangle vertices. - Opposite rectangle vertex. - Line color (RGB) or brightness (grayscale image). - Thickness of lines that make up the rectangle. - Negative values make the function to draw a filled rectangle. [By default this is 1] - Type of the line, see cvLine description. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws a circle - - Image where the circle is drawn. - X-coordinate of the center of the circle. - Y-coordinate of the center of the circle. - Radius of the circle. - Circle color. - Thickness of the circle outline if positive, otherwise indicates that a filled circle has to be drawn. [By default this is 1] - Type of the circle boundary. [By default this is LineType.Link8] - Number of fractional bits in the center coordinates and radius value. [By default this is 0] - - - - Draws a circle - - Image where the circle is drawn. - Center of the circle. - Radius of the circle. - Circle color. - Thickness of the circle outline if positive, otherwise indicates that a filled circle has to be drawn. [By default this is 1] - Type of the circle boundary. [By default this is LineType.Link8] - Number of fractional bits in the center coordinates and radius value. [By default this is 0] - - - - Draws simple or thick elliptic arc or fills ellipse sector - - Image. - Center of the ellipse. - Length of the ellipse axes. - Rotation angle. - Starting angle of the elliptic arc. - Ending angle of the elliptic arc. - Ellipse color. - Thickness of the ellipse arc. [By default this is 1] - Type of the ellipse boundary. [By default this is LineType.Link8] - Number of fractional bits in the center coordinates and axes' values. [By default this is 0] - - - - Draws simple or thick elliptic arc or fills ellipse sector - - Image. - The enclosing box of the ellipse drawn - Ellipse color. - Thickness of the ellipse boundary. [By default this is 1] - Type of the ellipse boundary. [By default this is LineType.Link8] - - - - Draws a marker on a predefined position in an image. - - The function cv::drawMarker draws a marker on a given position in the image.For the moment several - marker types are supported, see #MarkerTypes for more information. - - Image. - The point where the crosshair is positioned. - Line color. - The specific type of marker you want to use. - The length of the marker axis [default = 20 pixels] - Line thickness. - Type of the line. - - - - Fills a convex polygon. - - Image - The polygon vertices - Polygon color - Type of the polygon boundaries - The number of fractional bits in the vertex coordinates - - - - Fills a convex polygon. - - Image - The polygon vertices - Polygon color - Type of the polygon boundaries - The number of fractional bits in the vertex coordinates - - - - Fills the area bounded by one or more polygons - - Image - Array of polygons, each represented as an array of points - Polygon color - Type of the polygon boundaries - The number of fractional bits in the vertex coordinates - - - - - Fills the area bounded by one or more polygons - - Image - Array of polygons, each represented as an array of points - Polygon color - Type of the polygon boundaries - The number of fractional bits in the vertex coordinates - - - - - draws one or more polygonal curves - - - - - - - - - - - - draws one or more polygonal curves - - - - - - - - - - - - draws contours in the image - - Destination image. - All the input contours. Each contour is stored as a point vector. - Parameter indicating a contour to draw. If it is negative, all the contours are drawn. - Color of the contours. - Thickness of lines the contours are drawn with. If it is negative (for example, thickness=CV_FILLED ), - the contour interiors are drawn. - Line connectivity. - Optional information about hierarchy. It is only needed if you want to draw only some of the contours - Maximal level for drawn contours. If it is 0, only the specified contour is drawn. - If it is 1, the function draws the contour(s) and all the nested contours. If it is 2, the function draws the contours, - all the nested contours, all the nested-to-nested contours, and so on. This parameter is only taken into account - when there is hierarchy available. - Optional contour shift parameter. Shift all the drawn contours by the specified offset = (dx, dy) - - - - draws contours in the image - - Destination image. - All the input contours. Each contour is stored as a point vector. - Parameter indicating a contour to draw. If it is negative, all the contours are drawn. - Color of the contours. - Thickness of lines the contours are drawn with. If it is negative (for example, thickness=CV_FILLED ), - the contour interiors are drawn. - Line connectivity. - Optional information about hierarchy. It is only needed if you want to draw only some of the contours - Maximal level for drawn contours. If it is 0, only the specified contour is drawn. - If it is 1, the function draws the contour(s) and all the nested contours. If it is 2, the function draws the contours, - all the nested contours, all the nested-to-nested contours, and so on. This parameter is only taken into account - when there is hierarchy available. - Optional contour shift parameter. Shift all the drawn contours by the specified offset = (dx, dy) - - - - Clips the line against the image rectangle - - The image size - The first line point - The second line point - - - - - Clips the line against the image rectangle - - sThe image rectangle - The first line point - The second line point - - - - - Approximates an elliptic arc with a polyline. - The function ellipse2Poly computes the vertices of a polyline that - approximates the specified elliptic arc. It is used by cv::ellipse. - - Center of the arc. - Half of the size of the ellipse main axes. See the ellipse for details. - Rotation angle of the ellipse in degrees. See the ellipse for details. - Starting angle of the elliptic arc in degrees. - Ending angle of the elliptic arc in degrees. - Angle between the subsequent polyline vertices. It defines the approximation - Output vector of polyline vertices. - - - - Approximates an elliptic arc with a polyline. - The function ellipse2Poly computes the vertices of a polyline that - approximates the specified elliptic arc. It is used by cv::ellipse. - - Center of the arc. - Half of the size of the ellipse main axes. See the ellipse for details. - Rotation angle of the ellipse in degrees. See the ellipse for details. - Starting angle of the elliptic arc in degrees. - Ending angle of the elliptic arc in degrees. - Angle between the subsequent polyline vertices. It defines the approximation - Output vector of polyline vertices. - - - - renders text string in the image - - Image. - Text string to be drawn. - Bottom-left corner of the text string in the image. - Font type, see #HersheyFonts. - Font scale factor that is multiplied by the font-specific base size. - Text color. - Thickness of the lines used to draw a text. - Line type. See #LineTypes - When true, the image data origin is at the bottom-left corner. - Otherwise, it is at the top-left corner. - - - - returns bounding box of the text string - - Input text string. - Font to use, see #HersheyFonts. - Font scale factor that is multiplied by the font-specific base size. - Thickness of lines used to render the text. See #putText for details. - baseLine y-coordinate of the baseline relative to the bottom-most text - The size of a box that contains the specified text. - - - - Calculates the font-specific size to use to achieve a given height in pixels. - - Font to use, see cv::HersheyFonts. - Pixel height to compute the fontScale for - Thickness of lines used to render the text.See putText for details. - The fontSize to use for cv::putText - - - - Groups the object candidate rectangles. - - Input/output vector of rectangles. Output vector includes retained and grouped rectangles. - Minimum possible number of rectangles minus 1. The threshold is used in a group of rectangles to retain it. - - - - - Groups the object candidate rectangles. - - Input/output vector of rectangles. Output vector includes retained and grouped rectangles. - - Minimum possible number of rectangles minus 1. The threshold is used in a group of rectangles to retain it. - Relative difference between sides of the rectangles to merge them into a group. - - - - Groups the object candidate rectangles. - - - - - - - - - - Groups the object candidate rectangles. - - - - - - - - - - - - - - - - - - - - Restores the selected region in an image using the region neighborhood. - - Input 8-bit, 16-bit unsigned or 32-bit float 1-channel or 8-bit 3-channel image. - Inpainting mask, 8-bit 1-channel image. Non-zero pixels indicate the area that needs to be inpainted. - Output image with the same size and type as src. - Radius of a circular neighborhood of each point inpainted that is considered by the algorithm. - Inpainting method that could be cv::INPAINT_NS or cv::INPAINT_TELEA - - - - Perform image denoising using Non-local Means Denoising algorithm - with several computational optimizations. Noise expected to be a gaussian white noise - - Input 8-bit 1-channel, 2-channel or 3-channel image. - Output image with the same size and type as src . - - Parameter regulating filter strength. Big h value perfectly removes noise but also removes image details, - smaller h value preserves details but also preserves some noise - - Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels - - Size in pixels of the window that is used to compute weighted average for given pixel. - Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels - - - - Modification of fastNlMeansDenoising function for colored images - - Input 8-bit 3-channel image. - Output image with the same size and type as src. - Parameter regulating filter strength for luminance component. - Bigger h value perfectly removes noise but also removes image details, smaller h value preserves details but also preserves some noise - The same as h but for color components. For most images value equals 10 will be enought - to remove colored noise and do not distort colors - - Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels - - Size in pixels of the window that is used to compute weighted average for given pixel. Should be odd. - Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels - - - - Modification of fastNlMeansDenoising function for images sequence where consequtive images have been captured - in small period of time. For example video. This version of the function is for grayscale images or for manual manipulation with colorspaces. - - Input 8-bit 1-channel, 2-channel or 3-channel images sequence. All images should have the same type and size. - Output image with the same size and type as srcImgs images. - Target image to denoise index in srcImgs sequence - Number of surrounding images to use for target image denoising. - Should be odd. Images from imgToDenoiseIndex - temporalWindowSize / 2 to imgToDenoiseIndex - temporalWindowSize / 2 - from srcImgs will be used to denoise srcImgs[imgToDenoiseIndex] image. - Parameter regulating filter strength for luminance component. Bigger h value perfectly removes noise but also removes image details, - smaller h value preserves details but also preserves some noise - Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels - Size in pixels of the window that is used to compute weighted average for given pixel. - Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels - - - - Modification of fastNlMeansDenoisingMulti function for colored images sequences - - Input 8-bit 3-channel images sequence. All images should have the same type and size. - Output image with the same size and type as srcImgs images. - Target image to denoise index in srcImgs sequence - Number of surrounding images to use for target image denoising. Should be odd. - Images from imgToDenoiseIndex - temporalWindowSize / 2 to imgToDenoiseIndex - temporalWindowSize / 2 from srcImgs - will be used to denoise srcImgs[imgToDenoiseIndex] image. - Parameter regulating filter strength for luminance component. Bigger h value perfectly removes noise - but also removes image details, smaller h value preserves details but also preserves some noise. - The same as h but for color components. - Size in pixels of the template patch that is used to compute weights. Should be odd. Recommended value 7 pixels - Size in pixels of the window that is used to compute weighted average for given pixel. - Should be odd. Affect performance linearly: greater searchWindowsSize - greater denoising time. Recommended value 21 pixels - - - - Primal-dual algorithm is an algorithm for solving special types of variational problems - (that is, finding a function to minimize some functional). As the image denoising, - in particular, may be seen as the variational problem, primal-dual algorithm then - can be used to perform denoising and this is exactly what is implemented. - - This array should contain one or more noised versions - of the image that is to be restored. - Here the denoised image will be stored. There is no need to - do pre-allocation of storage space, as it will be automatically allocated, if necessary. - Corresponds to \f$\lambda\f$ in the formulas above. - As it is enlarged, the smooth (blurred) images are treated more favorably than - detailed (but maybe more noised) ones. Roughly speaking, as it becomes smaller, - the result will be more blur but more sever outliers will be removed. - Number of iterations that the algorithm will run. - Of course, as more iterations as better, but it is hard to quantitatively - refine this statement, so just use the default and increase it if the results are poor. - - - - Transforms a color image to a grayscale image. It is a basic tool in digital - printing, stylized black-and-white photograph rendering, and in many single - channel image processing applications @cite CL12 . - - Input 8-bit 3-channel image. - Output 8-bit 1-channel image. - Output 8-bit 3-channel image. - - - - Image editing tasks concern either global changes (color/intensity corrections, - filters, deformations) or local changes concerned to a selection. Here we are - interested in achieving local changes, ones that are restricted to a region - manually selected (ROI), in a seamless and effortless manner. The extent of - the changes ranges from slight distortions to complete replacement by novel - content @cite PM03 . - - Input 8-bit 3-channel image. - Input 8-bit 3-channel image. - Input 8-bit 1 or 3-channel image. - Point in dst image where object is placed. - Output image with the same size and type as dst. - Cloning method - - - - Given an original color image, two differently colored versions of this - image can be mixed seamlessly. Multiplication factor is between 0.5 to 2.5. - - Input 8-bit 3-channel image. - Input 8-bit 1 or 3-channel image. - Output image with the same size and type as src. - R-channel multiply factor. - G-channel multiply factor. - B-channel multiply factor. - - - - Applying an appropriate non-linear transformation to the gradient field inside - the selection and then integrating back with a Poisson solver, modifies locally - the apparent illumination of an image. - - Input 8-bit 3-channel image. - Input 8-bit 1 or 3-channel image. - Output image with the same size and type as src. - Value ranges between 0-2. - Value ranges between 0-2. - - This is useful to highlight under-exposed foreground objects or to reduce specular reflections. - - - - - By retaining only the gradients at edge locations, before integrating with the - Poisson solver, one washes out the texture of the selected region, giving its - contents a flat aspect. Here Canny Edge Detector is used. - - Input 8-bit 3-channel image. - Input 8-bit 1 or 3-channel image. - Output image with the same size and type as src. - Range from 0 to 100. - Value > 100. - The size of the Sobel kernel to be used. - - - - Filtering is the fundamental operation in image and video processing. - Edge-preserving smoothing filters are used in many different applications @cite EM11 . - - Input 8-bit 3-channel image. - Output 8-bit 3-channel image. - Edge preserving filters - Range between 0 to 200. - Range between 0 to 1. - - - - This filter enhances the details of a particular image. - - Input 8-bit 3-channel image. - Output image with the same size and type as src. - Range between 0 to 200. - Range between 0 to 1. - - - - Pencil-like non-photorealistic line drawing - - Input 8-bit 3-channel image. - Output 8-bit 1-channel image. - Output image with the same size and type as src. - Range between 0 to 200. - Range between 0 to 1. - Range between 0 to 0.1. - - - - Stylization aims to produce digital imagery with a wide variety of effects - not focused on photorealism. Edge-aware filters are ideal for stylization, - as they can abstract regions of low contrast while preserving, or enhancing, - high-contrast features. - - Input 8-bit 3-channel image. - Output image with the same size and type as src. - Range between 0 to 200. - Range between 0 to 1. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create Bilateral TV-L1 Super Resolution. - - - - - - Create Bilateral TV-L1 Super Resolution. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Finds an object center, size, and orientation. - - Back projection of the object histogram. - Initial search window. - Stop criteria for the underlying MeanShift() . - - - - - Finds an object on a back projection image. - - Back projection of the object histogram. - Initial search window. - Stop criteria for the iterative search algorithm. - Number of iterations CAMSHIFT took to converge. - - - - Constructs a pyramid which can be used as input for calcOpticalFlowPyrLK - - 8-bit input image. - output pyramid. - window size of optical flow algorithm. - Must be not less than winSize argument of calcOpticalFlowPyrLK(). - It is needed to calculate required padding for pyramid levels. - 0-based maximal pyramid level number. - set to precompute gradients for the every pyramid level. - If pyramid is constructed without the gradients then calcOpticalFlowPyrLK() will - calculate them internally. - the border mode for pyramid layers. - the border mode for gradients. - put ROI of input image into the pyramid if possible. - You can pass false to force data copying. - number of levels in constructed pyramid. Can be less than maxLevel. - - - - Constructs a pyramid which can be used as input for calcOpticalFlowPyrLK - - 8-bit input image. - output pyramid. - window size of optical flow algorithm. - Must be not less than winSize argument of calcOpticalFlowPyrLK(). - It is needed to calculate required padding for pyramid levels. - 0-based maximal pyramid level number. - set to precompute gradients for the every pyramid level. - If pyramid is constructed without the gradients then calcOpticalFlowPyrLK() will - calculate them internally. - the border mode for pyramid layers. - the border mode for gradients. - put ROI of input image into the pyramid if possible. - You can pass false to force data copying. - number of levels in constructed pyramid. Can be less than maxLevel. - - - - computes sparse optical flow using multi-scale Lucas-Kanade algorithm - - - - - - - - - - - - - - - - computes sparse optical flow using multi-scale Lucas-Kanade algorithm - - - - - - - - - - - - - - - - Computes a dense optical flow using the Gunnar Farneback's algorithm. - - first 8-bit single-channel input image. - second input image of the same size and the same type as prev. - computed flow image that has the same size as prev and type CV_32FC2. - parameter, specifying the image scale (<1) to build pyramids for each image; - pyrScale=0.5 means a classical pyramid, where each next layer is twice smaller than the previous one. - number of pyramid layers including the initial image; - levels=1 means that no extra layers are created and only the original images are used. - averaging window size; larger values increase the algorithm robustness to - image noise and give more chances for fast motion detection, but yield more blurred motion field. - number of iterations the algorithm does at each pyramid level. - size of the pixel neighborhood used to find polynomial expansion in each pixel; - larger values mean that the image will be approximated with smoother surfaces, - yielding more robust algorithm and more blurred motion field, typically poly_n =5 or 7. - standard deviation of the Gaussian that is used to smooth derivatives used as - a basis for the polynomial expansion; for polyN=5, you can set polySigma=1.1, - for polyN=7, a good value would be polySigma=1.5. - operation flags that can be a combination of OPTFLOW_USE_INITIAL_FLOW and/or OPTFLOW_FARNEBACK_GAUSSIAN - - - - Computes the Enhanced Correlation Coefficient value between two images @cite EP08 . - - single-channel template image; CV_8U or CV_32F array. - single-channel input image to be warped to provide an image similar to templateImage, same type as templateImage. - An optional mask to indicate valid values of inputImage. - - - - - Finds the geometric transform (warp) between two images in terms of the ECC criterion @cite EP08 . - - single-channel template image; CV_8U or CV_32F array. - single-channel input image which should be warped with the final warpMatrix in - order to provide an image similar to templateImage, same type as templateImage. - floating-point \f$2\times 3\f$ or \f$3\times 3\f$ mapping matrix (warp). - parameter, specifying the type of motion - parameter, specifying the termination criteria of the ECC algorithm; - criteria.epsilon defines the threshold of the increment in the correlation coefficient between two - iterations(a negative criteria.epsilon makes criteria.maxcount the only termination criterion). - Default values are shown in the declaration above. - An optional mask to indicate valid values of inputImage. - An optional value indicating size of gaussian blur filter; (DEFAULT: 5) - - - - - Finds the geometric transform (warp) between two images in terms of the ECC criterion @cite EP08 . - - single-channel template image; CV_8U or CV_32F array. - single-channel input image which should be warped with the final warpMatrix in - order to provide an image similar to templateImage, same type as templateImage. - floating-point \f$2\times 3\f$ or \f$3\times 3\f$ mapping matrix (warp). - parameter, specifying the type of motion - parameter, specifying the termination criteria of the ECC algorithm; - criteria.epsilon defines the threshold of the increment in the correlation coefficient between two - iterations(a negative criteria.epsilon makes criteria.maxcount the only termination criterion). - Default values are shown in the declaration above. - An optional mask to indicate valid values of inputImage. - - - - - A class which has a pointer of OpenCV structure - - - - - Data pointer - - - - - Default constructor - - - - - - - - - - - Native pointer of OpenCV structure - - - - - DisposableObject + ICvPtrHolder - - - - - Data pointer - - - - - Default constructor - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - - releases unmanaged resources - - - - - Native pointer of OpenCV structure - - - - - Represents a class which manages its own memory. - - - - - Gets or sets a handle which allocates using cvSetData. - - - - - Gets a value indicating whether this instance has been disposed. - - - - - Gets or sets a value indicating whether you permit disposing this instance. - - - - - Gets or sets a memory address allocated by AllocMemory. - - - - - Gets or sets the byte length of the allocated memory - - - - - Default constructor - - - - - Constructor - - true if you permit disposing this class by GC - - - - Releases the resources - - - - - Releases the resources - - - If disposing equals true, the method has been called directly or indirectly by a user's code. Managed and unmanaged resources can be disposed. - If false, the method has been called by the runtime from inside the finalizer and you should not reference other objects. Only unmanaged resources can be disposed. - - - - - Destructor - - - - - Releases managed resources - - - - - Releases unmanaged resources - - - - - Pins the object to be allocated by cvSetData. - - - - - - - Allocates the specified size of memory. - - - - - - - Notifies the allocated size of memory. - - - - - - If this object is disposed, then ObjectDisposedException is thrown. - - - - - Represents a OpenCV-based class which has a native pointer. - - - - - Unmanaged OpenCV data pointer - - - - - The default exception to be thrown by OpenCV - - - - - The numeric code for error status - - - - - The source file name where error is encountered - - - - - A description of the error - - - - - The source file name where error is encountered - - - - - The line number in the source where error is encountered - - - - - Constructor - - The numeric code for error status - The source file name where error is encountered - A description of the error - The source file name where error is encountered - The line number in the source where error is encountered - - - - - - - - - - - - - - - - - - - The exception that is thrown by OpenCvSharp. - - - - - - - - - - - - - - - - - - - - - - Template class for smart reference-counting pointers - - - - - Constructor - - - - - - Returns Ptr<T>.get() pointer - - - - - Used for managing the resources of OpenCVSharp, like Mat, MatExpr, etc. - - - - - Trace the object obj, and return it - - - - - - - - Trace an array of objects , and return them - - - - - - - - Create a new Mat instance, and trace it - - - - - - Create a new Mat instance, and trace it - - size - matType - scalar - - - - - Create a new UMat instance, and trace it - - - - - - Create a new UMat instance, and trace it - - size - matType - scalar - - - - - Dispose all traced objects - - - - - Whether native methods for P/Invoke raises an exception - - - - - P/Invoke methods of OpenCV 2.x C++ interface - - - - - Is tried P/Invoke once - - - - - Static constructor - - - - - Load DLL files dynamically using Win32 LoadLibrary - - - - - - Checks whether PInvoke functions can be called - - - - - Returns whether the OS is Windows or not - - - - - - Returns whether the OS is *nix or not - - - - - - Returns whether the runtime is Mono or not - - - - - - Returns whether the architecture is Wasm or not - - - - - - Custom error handler to be thrown by OpenCV - - - - - Custom error handler to ignore all OpenCV errors - - - - - Default error handler - - - - - - C++ std::string - - - - - - - - - - - - - - - - Releases unmanaged resources - - - - - string.size() - - - - - Converts std::string to managed string - - - - - - Win32API Wrapper - - - - - Handles loading embedded dlls into memory, based on http://stackoverflow.com/questions/666799/embedding-unmanaged-dll-into-a-managed-c-sharp-dll. - - This code is based on https://github.com/charlesw/tesseract - - - - The default base directory name to copy the assemblies too. - - - - - Map processor - - - - - Used as a sanity check for the returned processor architecture to double check the returned value. - - - - - Additional user-defined DLL paths - - - - - constructor - - - - - - - - - - - - Determine if the OS is Windows - - - - - - Determine if the runtime is .NET Core - - - - - - - - - - - - - Get's the current process architecture while keeping track of any assumptions or possible errors. - - - - - - Determines if the dynamic link library file name requires a suffix - and adds it if necessary. - - - - - Given the processor architecture, returns the name of the platform. - - - - - - - - - - - Releases unmanaged resources - - - - - Class to get address of specified jagged array - - - - - - - - - - - - - - - - - - Releases unmanaged resources - - - - - - - - - - - - - - - - - enumerable as T[] ?? enumerable.ToArray() - - - - - - - - - - - - - Checks whether PInvoke functions can be called - - - - - DllImportの際にDllNotFoundExceptionかBadImageFormatExceptionが発生した際に呼び出されるメソッド。 - エラーメッセージを表示して解決策をユーザに示す。 - - - - - - - - - - - - Provides information for the platform which the user is using - - - - - OS type - - - - - Runtime type - - - - - Readonly rectangular array (T[,]) - - - - - - Constructor - - - - - - Indexer - - - - - - - - Gets the total number of elements in all the dimensions of the System.Array. - - - - - Gets a 32-bit integer that represents the number of elements in the specified dimension of the System.Array. - - - - - - - Returns internal buffer - - - - - - Original GCHandle that implement IDisposable - - - - - Constructor - - - - - - Constructor - - - - - - - Constructor - - - - - - Represents std::vector - - - - - vector.size() - - - - - Convert std::vector<T> to managed array T[] - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - Converts std::vector to managed array - - structure that has two float members (ex. CvLineSegmentPolar, CvPoint2D32f, PointF) - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - Converts std::vector to managed array - - structure that has two float members (ex. CvLineSegmentPolar, CvPoint2D32f, PointF) - - - - - - - - - Constructor - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - Converts std::vector to managed array - - structure that has four int members (ex. CvLineSegmentPoint, CvRect) - - - - - - - - - Constructor - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - Converts std::vector to managed array - - structure that has four int members (ex. CvLineSegmentPoint, CvRect) - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - &vector[0] - - - - - Converts std::vector to managed array - - - - - - Converts std::vector to managed array - - structure that has four int members (ex. CvLineSegmentPoint, CvRect) - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - vector.size() - - - - - vector[i].size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - vector.size() - - - - - vector[i].size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - vector.size() - - - - - vector[i].size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - vector.size() - - - - - vector[i].size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - vector.size() - - - - - vector[i].size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - - - - - - vector.size() - - - - - Converts std::vector to managed array - - - - - - - - - - Constructor - - - - - Releases unmanaged resources - - - - - vector.size() - - - - - - - - - - vector[i].size() - - - - - Converts std::vector to managed array - - - - - - aruco module - - - - - Basic marker detection - - input image - indicates the type of markers that will be searched - vector of detected marker corners. - For each marker, its four corners are provided. For N detected markers, - the dimensions of this array is Nx4.The order of the corners is clockwise. - vector of identifiers of the detected markers. The identifier is of type int. - For N detected markers, the size of ids is also N. The identifiers have the same order than the markers in the imgPoints array. - marker detection parameters - contains the imgPoints of those squares whose inner code has not a - correct codification.Useful for debugging purposes. - - - - Pose estimation for single markers - - corners vector of already detected markers corners. - For each marker, its four corners are provided, (e.g std::vector<std::vector<cv::Point2f>> ). - For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. - the length of the markers' side. The returning translation vectors will - be in the same unit.Normally, unit is meters. - input 3x3 floating-point camera matrix - \f$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\f$ - vector of distortion coefficients - \f$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\f$ of 4, 5, 8 or 12 elements - array of output rotation vectors (@sa Rodrigues) (e.g. std::vector<cv::Vec3d>). - Each element in rvecs corresponds to the specific marker in imgPoints. - array of output translation vectors (e.g. std::vector<cv::Vec3d>). - Each element in tvecs corresponds to the specific marker in imgPoints. - array of object points of all the marker corners - - - - Draw detected markers in image - - input/output image. It must have 1 or 3 channels. The number of channels is not altered. - positions of marker corners on input image. - For N detected markers, the dimensions of this array should be Nx4.The order of the corners should be clockwise. - vector of identifiers for markers in markersCorners. Optional, if not provided, ids are not painted. - - - - Draw detected markers in image - - input/output image. It must have 1 or 3 channels. The number of channels is not altered. - positions of marker corners on input image. - For N detected markers, the dimensions of this array should be Nx4.The order of the corners should be clockwise. - vector of identifiers for markers in markersCorners. Optional, if not provided, ids are not painted. - color of marker borders. Rest of colors (text color and first corner color) - are calculated based on this one to improve visualization. - - - - Draw a canonical marker image - - dictionary of markers indicating the type of markers - identifier of the marker that will be returned. It has to be a valid id in the specified dictionary. - size of the image in pixels - output image with the marker - width of the marker border. - - - - Returns one of the predefined dictionaries defined in PREDEFINED_DICTIONARY_NAME - - - - - - - Detect ChArUco Diamond markers. - - input image necessary for corner subpixel. - list of detected marker corners from detectMarkers function. - list of marker ids in markerCorners. - rate between square and marker length: squareMarkerLengthRate = squareLength/markerLength. The real units are not necessary. - output list of detected diamond corners (4 corners per diamond). The order is the same than in marker corners: top left, top right, bottom right and bottom left. Similar format than the corners returned by detectMarkers (e.g std::vector<std::vector<cv::Point2f>>). - ids of the diamonds in diamondCorners. The id of each diamond is in fact of type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the diamond. - Optional camera calibration matrix. - Optional camera distortion coefficients. - - - - Draw a set of detected ChArUco Diamond markers. - - input/output image. It must have 1 or 3 channels. The number of channels is not altered. - positions of diamond corners in the same format returned by detectCharucoDiamond(). (e.g std::vector<std::vector<cv::Point2f>>). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. - vector of identifiers for diamonds in diamondCorners, in the same format returned by detectCharucoDiamond() (e.g. std::vector<Vec4i>). Optional, if not provided, ids are not painted. - - - - Draw a set of detected ChArUco Diamond markers. - - input/output image. It must have 1 or 3 channels. The number of channels is not altered. - positions of diamond corners in the same format returned by detectCharucoDiamond(). (e.g std::vector<std::vector<cv::Point2f>>). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. - vector of identifiers for diamonds in diamondCorners, in the same format returned by detectCharucoDiamond() (e.g. std::vector<Vec4i>). Optional, if not provided, ids are not painted. - color of marker borders. Rest of colors (text color and first corner color) are calculated based on this one. - - - - Parameters for the detectMarker process - - - - - - - - - - minimum window size for adaptive thresholding before finding contours (default 3). - - - - - adaptiveThreshWinSizeMax: maximum window size for adaptive thresholding before finding contours(default 23). - - - - - increments from adaptiveThreshWinSizeMin to adaptiveThreshWinSizeMax during the thresholding(default 10). - - - - - constant for adaptive thresholding before finding contours (default 7) - - - - - determine minimum perimeter for marker contour to be detected. - This is defined as a rate respect to the maximum dimension of the input image(default 0.03). - - - - - determine maximum perimeter for marker contour to be detected. - This is defined as a rate respect to the maximum dimension of the input image(default 4.0). - - - - - minimum accuracy during the polygonal approximation process to determine which contours are squares. - - - - - minimum distance between corners for detected markers relative to its perimeter(default 0.05) - - - - - minimum distance of any corner to the image border for detected markers (in pixels) (default 3) - - - - - minimum mean distance between two marker corners to be considered similar, - so that the smaller one is removed.The rate is relative to the smaller perimeter of the two markers(default 0.05). - - - - - corner refinement method. - (CORNER_REFINE_NONE, no refinement. CORNER_REFINE_SUBPIX, do subpixel refinement. CORNER_REFINE_CONTOUR use contour-Points) - - - - - window size for the corner refinement process (in pixels) (default 5). - - - - - maximum number of iterations for stop criteria of the corner refinement process(default 30). - - - - - minimum error for the stop criteria of the corner refinement process(default: 0.1) - - - - - number of bits of the marker border, i.e. marker border width (default 1). - - - - - number of bits (per dimension) for each cell of the marker when removing the perspective(default 8). - - - - - width of the margin of pixels on each cell not considered for the determination - of the cell bit.Represents the rate respect to the total size of the cell, - i.e. perspectiveRemovePixelPerCell (default 0.13) - - - - - maximum number of accepted erroneous bits in the border - (i.e. number of allowed white bits in the border). Represented as a rate respect to the total - number of bits per marker(default 0.35). - - - - - minimun standard deviation in pixels values during the decodification step to - apply Otsu thresholding(otherwise, all the bits are set to 0 or 1 depending on mean higher than 128 or not) (default 5.0) - - - - - errorCorrectionRate error correction rate respect to the maximun error correction capability for each dictionary. (default 0.6). - - - - - Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. - Decoding the binary payload is still done at full resolution. - - - - - What Gaussian blur should be applied to the segmented image (used for quad detection?) Parameter is the standard deviation in pixels. - Very noisy images benefit from non-zero values (e.g. 0.8). - - - - - reject quads containing too few pixels. - - - - - how many corner candidates to consider when segmenting a group of pixels into a quad. - - - - - Reject quads where pairs of edges have angles that are close to straight or close to 180 degrees. Zero means that no quads are rejected. (In radians). - - - - - When fitting lines to the contours, what is the maximum mean squared error allowed? - This is useful in rejecting contours that are far from being quad shaped; rejecting these quads "early" saves expensive decoding processing. - - - - - should the thresholded image be deglitched? Only useful for very noisy images - - - - - When we build our model of black & white pixels, we add an extra check that the white model must be (overall) brighter than the black model. - How much brighter? (in pixel values, [0,255]). - - - - - to check if there is a white marker. In order to generate a "white" marker just invert a normal marker by using a tilde, ~markerImage. (default false) - - - - - Dictionary/Set of markers. It contains the inner codification - - - - - cv::Ptr<T> - - - - - - - - - - Releases managed resources - - - - - Marker code information - - - - - Number of bits per dimension. - - - - - Maximum number of bits that can be corrected. - - - - - corner refinement method - - - - - Tag and corners detection based on the ArUco approach. - - - - - ArUco approach and refine the corners locations using corner subpixel accuracy. - - - - - ArUco approach and refine the corners locations using the contour-points line fitting. - - - - - Tag and corners detection based on the AprilTag 2 approach - - - - - PredefinedDictionaryName - - - - - Background Subtractor module. Takes a series of images and returns a sequence of mask (8UC1) - images of the same size, where 255 indicates Foreground and 0 represents Background. - - - - - cv::Ptr<T> - - - - - Creates a GMG Background Subtractor - - number of frames used to initialize the background models. - Threshold value, above which it is marked foreground, else background. - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gaussian Mixture-based Backbround/Foreground Segmentation Algorithm - - - - - cv::Ptr<T> - - - - - Creates mixture-of-gaussian background subtractor - - Length of the history. - Number of Gaussian mixtures. - Background ratio. - Noise strength (standard deviation of the brightness or each color channel). 0 means some automatic value. - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - Different flags for cvCalibrateCamera2 and cvStereoCalibrate - - - - - - - - - - The flag allows the function to optimize some or all of the intrinsic parameters, depending on the other flags, but the initial values are provided by the user - - - - - fyk is optimized, but the ratio fxk/fyk is fixed. - - - - - The principal points are fixed during the optimization. - - - - - Tangential distortion coefficients are set to zeros and do not change during the optimization. - - - - - fxk and fyk are fixed. - - - - - The 0-th distortion coefficients (k1) are fixed - - - - - The 1-th distortion coefficients (k2) are fixed - - - - - The 4-th distortion coefficients (k3) are fixed - - - - - Do not change the corresponding radial distortion coefficient during the optimization. - If CV_CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the supplied distCoeffs matrix is used, otherwise it is set to 0. - - - - - Do not change the corresponding radial distortion coefficient during the optimization. - If CV_CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the supplied distCoeffs matrix is used, otherwise it is set to 0. - - - - - Do not change the corresponding radial distortion coefficient during the optimization. - If CV_CALIB_USE_INTRINSIC_GUESS is set, the coefficient from the supplied distCoeffs matrix is used, otherwise it is set to 0. - - - - - Enable coefficients k4, k5 and k6. - To provide the backward compatibility, this extra flag should be explicitly specified to make the calibration function - use the rational model and return 8 coefficients. If the flag is not set, the function will compute only 5 distortion coefficients. - - - - - - - - - - - - - - - If it is set, camera_matrix1,2, as well as dist_coeffs1,2 are fixed, so that only extrinsic parameters are optimized. - - - - - Enforces fx0=fx1 and fy0=fy1. CV_CALIB_ZERO_TANGENT_DIST - Tangential distortion coefficients for each camera are set to zeros and fixed there. - - - - - for stereo rectification - - - - - Various operation flags for cvFindChessboardCorners - - - - - - - - - - Use adaptive thresholding to convert the image to black-n-white, rather than a fixed threshold level (computed from the average image brightness). - - - - - Normalize the image using cvNormalizeHist before applying fixed or adaptive thresholding. - - - - - Use additional criteria (like contour area, perimeter, square-like shape) to filter out false quads - that are extracted at the contour retrieval stage. - - - - - Run a fast check on the image that looks for chessboard corners, and shortcut the call if none is found. - This can drastically speed up the call in the degenerate condition when no chessboard is observed. - - - - - Run an exhaustive search to improve detection rate. - - - - - Up sample input image to improve sub-pixel accuracy due to aliasing effects. - This should be used if an accurate camera calibration is required. - - - - - Method for computing the essential matrix - - - - - for LMedS algorithm. - - - - - for RANSAC algorithm. - - - - - Method for solving a PnP problem: - - - - - uses symmetric pattern of circles. - - - - - uses asymmetric pattern of circles. - - - - - uses a special algorithm for grid detection. It is more robust to perspective distortions but much more sensitive to background clutter. - - - - - Method for computing the fundamental matrix - - - - - for 7-point algorithm. N == 7 - - - - - for 8-point algorithm. N >= 8 - [CV_FM_8POINT] - - - - - for LMedS algorithm. N > 8 - - - - - for RANSAC algorithm. N > 8 - - - - - method One of the implemented Hand-Eye calibration method - - - - - A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration @cite Tsai89 - - - - - Robot Sensor Calibration: Solving AX = XB on the Euclidean Group @cite Park94 - - - - - Hand-eye Calibration @cite Horaud95 - - - - - On-line Hand-Eye Calibration @cite Andreff99 - - - - - Hand-Eye Calibration Using Dual Quaternions @cite Daniilidis98 - - - - - The method used to computed homography matrix - - - - - Regular method using all the point pairs - - - - - Least-Median robust method - - - - - RANSAC-based robust method - - - - - RHO algorithm - - - - - USAC algorithm, default settings - - - - - USAC, parallel version - - - - - USAC, fundamental matrix 8 points - - - - - USAC, fast settings - - - - - USAC, accurate settings - - - - - USAC, sorted points, runs PROSAC - - - - - USAC, runs MAGSAC++ - - - - - cv::initWideAngleProjMap flags - - - - - - - - - - - - - - - One of the implemented Robot-World/Hand-Eye calibration method - - - - - Solving the robot-world/hand-eye calibration problem using the kronecker product @cite Shah2013SolvingTR - - - - - Simultaneous robot-world and hand-eye calibration using dual-quaternions and kronecker product @cite Li2010SimultaneousRA - - - - - type of the robust estimation algorithm - - - - - least-median of squares algorithm - - - - - RANSAC algorithm - - - - - RHO algorithm - - - - - USAC algorithm, default settings - - - - - USAC, parallel version - - - - - USAC, fundamental matrix 8 points - - - - - USAC, fast settings - - - - - USAC, accurate settings - - - - - USAC, sorted points, runs PROSAC - - - - - USAC, runs MAGSAC++ - - - - - Method for solving a PnP problem: - - - - - Iterative method is based on Levenberg-Marquardt optimization. - In this case the function finds such a pose that minimizes reprojection error, - that is the sum of squared distances between the observed projections imagePoints and the projected (using projectPoints() ) objectPoints . - - - - - Method has been introduced by F.Moreno-Noguer, V.Lepetit and P.Fua in the paper “EPnP: Efficient Perspective-n-Point Camera Pose Estimation”. - - - - - Method is based on the paper of X.S. Gao, X.-R. Hou, J. Tang, H.-F. Chang“Complete Solution Classification for - the Perspective-Three-Point Problem”. In this case the function requires exactly four object and image points. - - - - - Joel A. Hesch and Stergios I. Roumeliotis. "A Direct Least-Squares (DLS) Method for PnP" - - - - - A.Penate-Sanchez, J.Andrade-Cetto, F.Moreno-Noguer. "Exhaustive Linearization for Robust Camera Pose and Focal Length Estimation" - - - - - The operation flags for cvStereoRectify - - - - - Default value (=0). - the function can shift one of the image in horizontal or vertical direction (depending on the orientation of epipolar lines) in order to maximise the useful image area. - - - - - the function makes the principal points of each camera have the same pixel coordinates in the rectified views. - - - - - Semi-Global Stereo Matching - - - - - constructor - - - - - - - - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The base class for stereo correspondence algorithms. - - - - - constructor - - - - - Computes disparity map for the specified stereo pair - - Left 8-bit single-channel image. - Right image of the same size and the same type as the left one. - Output disparity map. It has the same size as the input images. Some algorithms, - like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map(where each disparity value has 4 fractional bits), - whereas other algorithms output 32 - bit floating - point disparity map. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Semi-Global Stereo Matching - - - - - constructor - - - - - - - - - - - - - - - - - - - - - - Releases managed resources - - - - - Truncation value for the prefiltered image pixels. The algorithm first - computes x-derivative at each pixel and clips its value by [-preFilterCap, preFilterCap] interval. - The result values are passed to the Birchfield-Tomasi pixel cost function. - - - - - Margin in percentage by which the best (minimum) computed cost function - value should "win" the second best value to consider the found match correct. Normally, a value - within the 5-15 range is good enough. - - - - - The first parameter controlling the disparity smoothness. See P2 description. - - - - - The second parameter controlling the disparity smoothness. The larger the values are, - the smoother the disparity is. P1 is the penalty on the disparity change by plus or minus 1 - between neighbor pixels. P2 is the penalty on the disparity change by more than 1 between neighbor - pixels. The algorithm requires P2 \> P1 . See stereo_match.cpp sample where some reasonably good - P1 and P2 values are shown (like 8\*number_of_image_channels\*SADWindowSize\*SADWindowSize and - 32\*number_of_image_channels\*SADWindowSize\*SADWindowSize , respectively). - - - - - Set it to StereoSGBM::MODE_HH to run the full-scale two-pass dynamic programming - algorithm. It will consume O(W\*H\*numDisparities) bytes, which is large for 640x480 stereo and - huge for HD-size pictures. By default, it is set to false . - - - - - Base class for high-level OpenCV algorithms - - - - - Stores algorithm parameters in a file storage - - - - - - Reads algorithm parameters from a file storage - - - - - - Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read - - - - - - Saves the algorithm to a file. - In order to make this method work, the derived class must - implement Algorithm::write(FileStorage fs). - - - - - - Returns the algorithm string identifier. - This string is used as top level xml/yml node tag when the object - is saved to a file or string. - - - - - - Error Handler - - The numeric code for error status - The source file name where error is encountered - A description of the error - The source file name where error is encountered - The line number in the source where error is encountered - Pointer to the user data. Ignored by the standard handlers - - - - cv::AccessFlag - - - - - cv::Algorithm parameter type - - - - - Type of the border to create around the copied source image rectangle - - - https://github.com/opencv/opencv/blob/fc1a15626226609babd128e043cf7c4e32f567ca/modules/core/include/opencv2/core/base.hpp#L268 - - - - - Border is filled with the fixed value, passed as last parameter of the function. - `iiiiii|abcdefgh|iiiiiii` with some specified `i` - - - - - The pixels from the top and bottom rows, the left-most and right-most columns are replicated to fill the border. - `aaaaaa|abcdefgh|hhhhhhh` - - - - - `fedcba|abcdefgh|hgfedcb` - - - - - `cdefgh|abcdefgh|abcdefg` - - - - - `gfedcb|abcdefgh|gfedcba` - - - - - `uvwxyz|absdefgh|ijklmno` - - - - - same as BORDER_REFLECT_101 - - - - - do not look outside of ROI - - - - - The flag specifying the relation between the elements to be checked - - - - - src1(I) "equal to" src2(I) - - - - - src1(I) "greater than" src2(I) - - - - - src1(I) "greater or equal" src2(I) - - - - - src1(I) "less than" src2(I) - - - - - src1(I) "less or equal" src2(I) - - - - - src1(I) "not equal to" src2(I) - - - - - Operation flags for Covariation - - - - - scale * [vects[0]-avg,vects[1]-avg,...]^T * [vects[0]-avg,vects[1]-avg,...] - that is, the covariation matrix is count×count. Such an unusual covariation matrix is used for fast PCA of a set of very large vectors - (see, for example, Eigen Faces technique for face recognition). Eigenvalues of this "scrambled" matrix will match to the eigenvalues of - the true covariation matrix and the "true" eigenvectors can be easily calculated from the eigenvectors of the "scrambled" covariation matrix. - - - - - scale * [vects[0]-avg,vects[1]-avg,...]*[vects[0]-avg,vects[1]-avg,...]^T - that is, cov_mat will be a usual covariation matrix with the same linear size as the total number of elements in every input vector. - One and only one of CV_COVAR_SCRAMBLED and CV_COVAR_NORMAL must be specified - - - - - If the flag is specified, the function does not calculate avg from the input vectors, - but, instead, uses the passed avg vector. This is useful if avg has been already calculated somehow, - or if the covariation matrix is calculated by parts - in this case, avg is not a mean vector of the input sub-set of vectors, - but rather the mean vector of the whole set. - - - - - If the flag is specified, the covariation matrix is scaled by the number of input vectors. - - - - - Means that all the input vectors are stored as rows of a single matrix, vects[0].count is ignored in this case, - and avg should be a single-row vector of an appropriate size. - - - - - Means that all the input vectors are stored as columns of a single matrix, vects[0].count is ignored in this case, - and avg should be a single-column vector of an appropriate size. - - - - - - - - - - Type of termination criteria - - - - - the maximum number of iterations or elements to compute - - - - - the maximum number of iterations or elements to compute - - - - - the desired accuracy or change in parameters at which the iterative algorithm stops - - - - - Transformation flags for cv::dct - - - - - - - - - - Do inverse 1D or 2D transform. - (Forward and Inverse are mutually exclusive, of course.) - - - - - Do forward or inverse transform of every individual row of the input matrix. - This flag allows user to transform multiple vectors simultaneously and can be used to decrease the overhead - (which is sometimes several times larger than the processing itself), to do 3D and higher-dimensional transforms etc. - [CV_DXT_ROWS] - - - - - Inversion methods - - - - - Gaussian elimination with the optimal pivot element chosen. - - - - - singular value decomposition (SVD) method; - the system can be over-defined and/or the matrix src1 can be singular - - - - - eigenvalue decomposition; the matrix src1 must be symmetrical - - - - - Cholesky \f$LL^T\f$ factorization; the matrix src1 must be symmetrical - and positively defined - - - - - QR factorization; the system can be over-defined and/or the matrix - src1 can be singular - - - - - while all the previous flags are mutually exclusive, - this flag can be used together with any of the previous - - - - - Transformation flags for cvDFT - - - - - - - - - - Do inverse 1D or 2D transform. The result is not scaled. - (Forward and Inverse are mutually exclusive, of course.) - - - - - Scale the result: divide it by the number of array elements. Usually, it is combined with Inverse. - - - - - Do forward or inverse transform of every individual row of the input matrix. - This flag allows user to transform multiple vectors simultaneously and can be used to decrease the overhead - (which is sometimes several times larger than the processing itself), to do 3D and higher-dimensional transforms etc. - - - - - performs a forward transformation of 1D or 2D real array; the result, - though being a complex array, has complex-conjugate symmetry (*CCS*, - see the function description below for details), and such an array can - be packed into a real array of the same size as input, which is the fastest - option and which is what the function does by default; however, you may - wish to get a full complex array (for simpler spectrum analysis, and so on) - - pass the flag to enable the function to produce a full-size complex output array. - - - - - performs an inverse transformation of a 1D or 2D complex array; - the result is normally a complex array of the same size, however, - if the input array has conjugate-complex symmetry (for example, - it is a result of forward transformation with DFT_COMPLEX_OUTPUT flag), - the output is a real array; while the function itself does not - check whether the input is symmetrical or not, you can pass the flag - and then the function will assume the symmetry and produce the real - output array (note that when the input is packed into a real array - and inverse transformation is executed, the function treats the input - as a packed complex-conjugate symmetrical array, and the output - will also be a real array). - - - - - Distribution type for cvRandArr, etc. - - - - - Uniform distribution - - - - - Normal or Gaussian distribution - - - - - Error status codes - - - - - everithing is ok [CV_StsOk] - - - - - pseudo error for back trace [CV_StsBackTrace] - - - - - unknown /unspecified error [CV_StsError] - - - - - internal error (bad state) [CV_StsInternal] - - - - - insufficient memory [CV_StsNoMem] - - - - - function arg/param is bad [CV_StsBadArg] - - - - - unsupported function [CV_StsBadFunc] - - - - - iter. didn't converge [CV_StsNoConv] - - - - - tracing [CV_StsAutoTrace] - - - - - image header is NULL [CV_HeaderIsNull] - - - - - image size is invalid [CV_BadImageSize] - - - - - offset is invalid [CV_BadOffset] - - - - - [CV_BadOffset] - - - - - [CV_BadStep] - - - - - [CV_BadModelOrChSeq] - - - - - [CV_BadNumChannels] - - - - - [CV_BadNumChannel1U] - - - - - [CV_BadDepth] - - - - - [CV_BadAlphaChannel] - - - - - [CV_BadOrder] - - - - - [CV_BadOrigin] - - - - - [CV_BadAlign] - - - - - [CV_BadCallBack] - - - - - [CV_BadTileSize] - - - - - [CV_BadCOI] - - - - - [CV_BadROISize] - - - - - [CV_MaskIsTiled] - - - - - null pointer [CV_StsNullPtr] - - - - - incorrect vector length [CV_StsVecLengthErr] - - - - - incorr. filter structure content [CV_StsFilterStructContentErr] - - - - - incorr. transform kernel content [CV_StsKernelStructContentErr] - - - - - incorrect filter ofset value [CV_StsFilterOffsetErr] - - - - - the input/output structure size is incorrect [CV_StsBadSize] - - - - - division by zero [CV_StsDivByZero] - - - - - in-place operation is not supported [CV_StsInplaceNotSupported] - - - - - request can't be completed [CV_StsObjectNotFound] - - - - - formats of input/output arrays differ [CV_StsUnmatchedFormats] - - - - - flag is wrong or not supported [CV_StsBadFlag] - - - - - bad CvPoint [CV_StsBadPoint] - - - - - bad format of mask (neither 8uC1 nor 8sC1) [CV_StsBadMask] - - - - - sizes of input/output structures do not match [CV_StsUnmatchedSizes] - - - - - the data format/type is not supported by the function [CV_StsUnsupportedFormat] - - - - - some of parameters are out of range [CV_StsOutOfRange] - - - - - invalid syntax/structure of the parsed file [CV_StsParseError] - - - - - the requested function/feature is not implemented [CV_StsNotImplemented] - - - - - an allocated block has been corrupted [CV_StsBadMemBlock] - - - - - assertion failed - - - - - Output string format of Mat.Dump() - - - - - Default format. - [1, 2, 3, 4, 5, 6; \n - 7, 8, 9, ... ] - - - - - - - - - - CSV format. - 1, 2, 3, 4, 5, 6\n - 7, 8, 9, ... - - - - - Python format. - [[[1, 2, 3], [4, 5, 6]], \n - [[7, 8, 9], ... ] - - - - - NumPy format. - array([[[1, 2, 3], [4, 5, 6]], \n - [[7, 8, 9], .... ]]], type='uint8'); - - - - - C language format. - {1, 2, 3, 4, 5, 6, \n - 7, 8, 9, ...}; - - - - - The operation flags for cv::GEMM - - - - - - - - - - Transpose src1 - - - - - Transpose src2 - - - - - Transpose src3 - - - - - Font name identifier. - Only a subset of Hershey fonts (http://sources.isc.org/utils/misc/hershey-font.txt) are supported now. - - - - - normal size sans-serif font - - - - - small size sans-serif font - - - - - normal size sans-serif font (more complex than HERSHEY_SIMPLEX) - - - - - normal size serif font - - - - - normal size serif font (more complex than HERSHEY_COMPLEX) - - - - - smaller version of HERSHEY_COMPLEX - - - - - hand-writing style font - - - - - more complex variant of HERSHEY_SCRIPT_SIMPLEX - - - - - flag for italic font - - - - - - - - - - Miscellaneous flags for cv::kmeans - - - - - Select random initial centers in each attempt. - - - - - Use kmeans++ center initialization by Arthur and Vassilvitskii [Arthur2007]. - - - - - During the first (and possibly the only) attempt, use the - user-supplied labels instead of computing them from the initial centers. - For the second and further attempts, use the random or semi-random centers. - Use one of KMEANS_\*_CENTERS flag to specify the exact method. - - - - - diagonal type - - - - - a diagonal from the upper half - [< 0] - - - - - Main diagonal - [= 0] - - - - - a diagonal from the lower half - [> 0] - - - - - Type of norm - - - - - - - - - - The L1-norm (sum of absolute values) of the array is normalized. - - - - - The (Euclidean) L2-norm of the array is normalized. - - - - - - - - - - - - - - - - - - - - - - - - - The array values are scaled and shifted to the specified range. - - - - - The dimension index along which the matrix is reduce. - - - - - The matrix is reduced to a single row. - [= 0] - - - - - The matrix is reduced to a single column. - [= 1] - - - - - The dimension is chosen automatically by analysing the dst size. - [= -1] - - - - - The reduction operations for cvReduce - - - https://github.com/opencv/opencv/blob/37c12db3668a1fbbfdb286be59f662c67cfbfea1/modules/core/include/opencv2/core.hpp#L231 - - - - - The output is the sum of all the matrix rows/columns. - - - - - The output is the mean vector of all the matrix rows/columns. - - - - - The output is the maximum (column/row-wise) of all the matrix rows/columns. - - - - - The output is the minimum (column/row-wise) of all the matrix rows/columns. - - - - - an enum to specify how to rotate the array. - - - - - Rotate 90 degrees clockwise - - - - - Rotate 180 degrees clockwise - - - - - Rotate 270 degrees clockwise - - - - - return codes for cv::solveLP() function - - - - - problem is unbounded (target function can achieve arbitrary high values) - - - - - problem is unfeasible (there are no points that satisfy all the constraints imposed) - - - - - there is only one maximum for target function - - - - - there are multiple maxima for target function - the arbitrary one is returned - - - - - Signals an error and raises the exception. - - - - - each matrix row is sorted independently - - - - - each matrix column is sorted independently; - this flag and the previous one are mutually exclusive. - - - - - each matrix row is sorted in the ascending order. - - - - - each matrix row is sorted in the descending order; - this flag and the previous one are also mutually exclusive. - - - - - cv::UMatUsageFlags - - - - - File Storage Node class - - - - - The default constructor - - - - - Initializes from cv::FileNode* - - - - - - Releases unmanaged resources - - - - - Returns the node content as an integer. If the node stores floating-point number, it is rounded. - - - - - - - Returns the node content as an integer. If the node stores floating-point number, it is rounded. - - - - - - Returns the node content as float - - - - - - - Returns the node content as System.Single - - - - - - Returns the node content as double - - - - - - - Returns the node content as double - - - - - - Returns the node content as text string - - - - - - - Returns the node content as text string - - - - - - Returns the node content as OpenCV Mat - - - - - - - Returns the node content as OpenCV Mat - - - - - - returns element of a mapping node - - - - - returns element of a sequence node - - - - - Returns true if the node is empty - - - - - - Returns true if the node is a "none" object - - - - - - Returns true if the node is a sequence - - - - - - Returns true if the node is a mapping - - - - - - Returns true if the node is an integer - - - - - - Returns true if the node is a floating-point number - - - - - - Returns true if the node is a text string - - - - - - Returns true if the node has a name - - - - - - Returns the node name or an empty string if the node is nameless - - - - - - Returns the number of elements in the node, if it is a sequence or mapping, or 1 otherwise. - - - - - - Returns type of the node. - - Type of the node. - - - - returns iterator pointing to the first node element - - - - - - returns iterator pointing to the element following the last node element - - - - - - Get FileNode iterator - - - - - - Reads node elements to the buffer with the specified format - - - - - - - - Reads the node element as Int32 (int) - - - - - - - Reads the node element as Single (float) - - - - - - - Reads the node element as Double - - - - - - - Reads the node element as String - - - - - - - Reads the node element as Mat - - - - - - - Reads the node element as SparseMat - - - - - - - Reads the node element as KeyPoint[] - - - - - - Reads the node element as DMatch[] - - - - - - Reads the node element as Range - - - - - - Reads the node element as KeyPoint - - - - - - Reads the node element as DMatch - - - - - - Reads the node element as Point - - - - - - Reads the node element as Point2f - - - - - - Reads the node element as Point2d - - - - - - Reads the node element as Point3i - - - - - - Reads the node element as Point3f - - - - - - Reads the node element as Point3d - - - - - - Reads the node element as Size - - - - - - Reads the node element as Size2f - - - - - - Reads the node element as Size2d - - - - - - Reads the node element as Rect - - - - - - Reads the node element as Rect2f - - - - - - Reads the node element as Rect2d - - - - - - Reads the node element as Scalar - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - Reads the node element as Vector - - - - - - type of the file storage node - - - - - empty node - - - - - an integer - - - - - floating-point number - - - - - synonym or REAL - - - - - text string in UTF-8 encoding - - - - - synonym for STR - - - - - sequence - - - - - mapping - - - - - - - - - - compact representation of a sequence or mapping. Used only by YAML writer - - - - - if set, means that all the collection elements are numbers of the same type (real's or int's). - UNIFORM is used only when reading FileStorage; FLOW is used only when writing. So they share the same bit - - - - - empty structure (sequence or mapping) - - - - - the node has a name (i.e. it is element of a mapping) - - - - - - File Storage Node class - - - - - The default constructor - - - - - Initializes from cv::FileNode* - - - - - - Releases unmanaged resources - - - - - Reads node elements to the buffer with the specified format. - Usually it is more convenient to use operator `>>` instead of this method. - - Specification of each array element.See @ref format_spec "format specification" - Pointer to the destination array. - Number of elements to read. If it is greater than number of remaining elements then all of them will be read. - - - - - *iterator - - - - - IEnumerable<T>.Reset - - - - - iterator++ - - - - - - iterator += ofs - - - - - - - Reads node elements to the buffer with the specified format. - Usually it is more convenient to use operator `>>` instead of this method. - - Specification of each array element.See @ref format_spec "format specification" - Pointer to the destination array. - Number of elements to read. If it is greater than number of remaining elements then all of them will be read. - - - - - XML/YAML File Storage Class. - - - - - Default constructor. - You should call FileStorage::open() after initialization. - - - - - The full constructor - - Name of the file to open or the text string to read the data from. - Extension of the file (.xml or .yml/.yaml) determines its format - (XML or YAML respectively). Also you can append .gz to work with - compressed files, for example myHugeMatrix.xml.gz. - If both FileStorage::WRITE and FileStorage::MEMORY flags are specified, - source is used just to specify the output file format - (e.g. mydata.xml, .yml etc.). - - Encoding of the file. Note that UTF-16 XML encoding is not supported - currently and you should use 8-bit encoding instead of it. - - - - Releases unmanaged resources - - - - - Returns the specified element of the top-level mapping - - - - - - - the currently written element - - - - - the writer state - - - - - operator that performs PCA. The previously stored data, if any, is released - - Name of the file to open or the text string to read the data from. - Extension of the file (.xml, .yml/.yaml or .json) determines its format (XML, YAML or JSON respectively). - Also you can append .gz to work with compressed files, for example myHugeMatrix.xml.gz. - If both FileStorage::WRITE and FileStorage::MEMORY flags are specified, source is used just to specify the output file format (e.g. mydata.xml, .yml etc.). - A file name can also contain parameters. You can use this format, "*?base64" (e.g. "file.json?base64" (case sensitive)), - as an alternative to FileStorage::BASE64 flag. - Mode of operation. - Encoding of the file. Note that UTF-16 XML encoding is not supported - currently and you should use 8-bit encoding instead of it. - - - - - Returns true if the object is associated with currently opened file. - - - - - - Closes the file and releases all the memory buffers - - - - - Closes the file, releases all the memory buffers and returns the text string - - - - - - Returns the first element of the top-level mapping - - The first element of the top-level mapping. - - - - Returns the top-level mapping. YAML supports multiple streams - - Zero-based index of the stream. In most cases there is only one stream in the file. - However, YAML supports multiple streams and so there can be several. - The top-level mapping. - - - - Writes one or more numbers of the specified format to the currently written structure - - Specification of each array element, see @ref format_spec "format specification" - Pointer to the written array. - Number of the uchar elements to write. - - - - Writes a comment. - The function writes a comment into file storage. The comments are skipped when the storage is read. - - The written comment, single-line or multi-line - If true, the function tries to put the comment at the end of current line. - Else if the comment is multi-line, or if it does not fit at the end of the current line, the comment starts a new line. - - - - - - - - - - - - - - - - - Returns the normalized object name for the specified file name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - /Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - Writes data to a file storage. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - File storage mode - - - - - The storage is open for reading - - - - - The storage is open for writing - - - - - The storage is open for appending - - - - - flag, read data from source or write data to the internal buffer - (which is returned by FileStorage::release) - - - - - flag, auto format - - - - - flag, XML format - - - - - flag, YAML format - - - - - flag, write rawdata in Base64 by default. (consider using WRITE_BASE64) - - - - - flag, enable both WRITE and BASE64 - - - - - Proxy data type for passing Mat's and vector<>'s as input parameters - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - - - - - - - Releases managed resources - - - - - Releases unmanaged resources - - - - - Creates a proxy class of the specified Mat - - - - - - - Creates a proxy class of the specified Mat - - - - - - - Creates a proxy class of the specified MatExpr - - - - - - - Creates a proxy class of the specified Scalar - - - - - - - Creates a proxy class of the specified double - - - - - - - Creates a proxy class of the specified array of Mat - - - - - - - Creates a proxy class of the specified list - - Array object - - - - - Creates a proxy class of the specified list - - Array object - Matrix depth and channels for converting array to cv::Mat - - - - - Creates a proxy class of the specified list - - Array object - - - - - Creates a proxy class of the specified list - - Array object - Matrix depth and channels for converting array to cv::Mat - - - - - Creates a proxy class of the specified list - - Array object - - - - - Creates a proxy class of the specified list - - Array object - Matrix depth and channels for converting array to cv::Mat - - - - - Creates a proxy class of the specified Vec*b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Proxy data type for passing Mat's and vector<>'s as input parameters. - Synonym for OutputArray. - - - - - Constructor - - - - - - Constructor - - - - - - Creates a proxy class of the specified Mat - - - - - - - Creates a proxy class of the specified UMat - - - - - - - - - - - - - - - - - - - - - Linear Discriminant Analysis - - - - - constructor - - - - - - Initializes and performs a Discriminant Analysis with Fisher's - Optimization Criterion on given data in src and corresponding labels - in labels.If 0 (or less) number of components are given, they are - automatically determined for given data in computation. - - - - - - - - Releases unmanaged resources - - - - - Returns the eigenvectors of this LDA. - - - - - Returns the eigenvalues of this LDA. - - - - - Serializes this object to a given filename. - - - - - - Deserializes this object from a given filename. - - - - - - Serializes this object to a given cv::FileStorage. - - - - - - Deserializes this object from a given cv::FileStorage. - - - - - - Compute the discriminants for data in src (row aligned) and labels. - - - - - - - Projects samples into the LDA subspace. - src may be one or more row aligned samples. - - - - - - - Reconstructs projections from the LDA subspace. - src may be one or more row aligned projections. - - - - - - - - - - - - - - - - - - - - - - - - - Matrix expression - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - Convert to cv::Mat - - - - - - - Convert to cv::Mat - - - - - - Convert cv::Mat to cv::MatExpr - - - - - - - Convert cv::Mat to cv::MatExpr - - - - - - - Extracts a rectangular submatrix. - - - - - - - - - - Extracts a rectangular submatrix. - - - - - - - - Extracts a rectangular submatrix. - - - - - - - Creates a matrix header for the specified matrix row. - - A 0-based row index. - - - - - Creates a matrix header for the specified matrix column. - - A 0-based column index. - - - - - Extracts a diagonal from a matrix - - d index of the diagonal, with the following values: - - d=0 is the main diagonal. - - d<0 is a diagonal from the lower half. For example, d=-1 means the diagonal is set immediately below the main one. - - d>0 is a diagonal from the upper half. For example, d=1 means the diagonal is set immediately above the main one. - - - - - Extracts a rectangular submatrix. - - - - - - - - - - Extracts a rectangular submatrix. - - - - - - - - Extracts a rectangular submatrix. - - - - - - - Transposes a matrix. - - - - - - Inverses a matrix. - - - - - - - Performs an element-wise multiplication or division of the two matrices. - - Another array of the same type and the same size as this, or a matrix expression. - Optional scale factor. - - - - - Performs an element-wise multiplication or division of the two matrices. - - Another array of the same type and the same size as this, or a matrix expression. - Optional scale factor. - - - - - Computes a cross-product of two 3-element vectors. - - Another cross-product operand. - - - - - Computes a dot-product of two vectors. - - another dot-product operand. - - - - - Returns the size of a matrix element. - - - - - Returns the type of a matrix element. - - - - - Computes absolute value of each matrix element - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OpenCV C++ n-dimensional dense array class (cv::Mat) - - - - - typeof(T) -> MatType - - - - - Creates from native cv::Mat* pointer - - - - - - Creates empty Mat - - - - - - - - - - - Loads an image from a file. (cv::imread) - - Name of file to be loaded. - Specifies color type of the loaded image - - - - constructs 2D matrix of the specified size and type - - Number of rows in a 2D array. - Number of columns in a 2D array. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - - - - constructs 2D matrix of the specified size and type - - 2D array size: Size(cols, rows) . In the Size() constructor, - the number of rows and the number of columns go in the reverse order. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType.CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - - - - constructs 2D matrix and fills it with the specified Scalar value. - - Number of rows in a 2D array. - Number of columns in a 2D array. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - constructs 2D matrix and fills it with the specified Scalar value. - - 2D array size: Size(cols, rows) . In the Size() constructor, - the number of rows and the number of columns go in the reverse order. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat::clone() . - Range of the m rows to take. As usual, the range start is inclusive and the range end is exclusive. - Use Range.All to take all the rows. - Range of the m columns to take. Use Range.All to take all the columns. - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat.Clone() . - Array of selected ranges of m along each dimensionality. - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat.Clone() . - Region of interest. - - - - constructor for matrix headers pointing to user-allocated data - - Number of rows in a 2D array. - Number of columns in a 2D array. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Number of bytes each matrix row occupies. The value should include the padding bytes at the end of each row, if any. - If the parameter is missing (set to AUTO_STEP ), no padding is assumed and the actual step is calculated as cols*elemSize() . - - - - constructor for matrix headers pointing to user-allocated data - - Number of rows in a 2D array. - Number of columns in a 2D array. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Number of bytes each matrix row occupies. The value should include the padding bytes at the end of each row, if any. - If the parameter is missing (set to AUTO_STEP ), no padding is assumed and the actual step is calculated as cols*elemSize() . - - - - constructor for matrix headers pointing to user-allocated data - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Array of ndims-1 steps in case of a multi-dimensional array (the last step is always set to the element size). - If not specified, the matrix is assumed to be continuous. - - - - constructor for matrix headers pointing to user-allocated data - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Array of ndims-1 steps in case of a multi-dimensional array (the last step is always set to the element size). - If not specified, the matrix is assumed to be continuous. - - - - constructs n-dimensional matrix - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - - - - constructs n-dimensional matrix - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - Releases the resources - - - - - - Releases unmanaged resources - - - - - Creates the Mat instance from System.IO.Stream - - - - - - - - Creates the Mat instance from image data (using cv::decode) - - - - - - - - Reads image from the specified buffer in memory. - - The input slice of bytes. - The same flags as in imread - - - - - Creates the Mat instance from image data (using cv::decode) - - - - - - - - Reads image from the specified buffer in memory. - - The input slice of bytes. - The same flags as in imread - - - - - Extracts a diagonal from a matrix, or creates a diagonal matrix. - - One-dimensional matrix that represents the main diagonal. - - - - - Returns a zero array of the specified size and type. - - Number of rows. - Number of columns. - Created matrix type. - - - - - Returns a zero array of the specified size and type. - - Alternative to the matrix size specification Size(cols, rows) . - Created matrix type. - - - - - Returns a zero array of the specified size and type. - - Created matrix type. - - - - - - Returns an array of all 1’s of the specified size and type. - - Number of rows. - Number of columns. - Created matrix type. - - - - - Returns an array of all 1’s of the specified size and type. - - Alternative to the matrix size specification Size(cols, rows) . - Created matrix type. - - - - - Returns an array of all 1’s of the specified size and type. - - Created matrix type. - Array of integers specifying the array shape. - - - - - Returns an identity matrix of the specified size and type. - - Alternative to the matrix size specification Size(cols, rows) . - Created matrix type. - - - - - Returns an identity matrix of the specified size and type. - - Number of rows. - Number of columns. - Created matrix type. - - - - - Initializes as N x 1 matrix and copies array data to this - - Source array data to be copied to this - - - - Initializes as M x N matrix and copies array data to this - - Source array data to be copied to this - - - - Initializes as N x 1 matrix and copies array data to this - - Source array data to be copied to this - - - - operator < - - - - - - - operator < - - - - - - - operator <= - - - - - - - operator <= - - - - - - - operator == - - - - - - - operator == - - - - - - - operator != - - - - - - - operator != - - - - - - - operator > - - - - - - - operator > - - - - - - - operator >= - - - - - - - operator >= - - - - - - - Extracts a rectangular submatrix. - - Start row of the extracted submatrix. The upper boundary is not included. - End row of the extracted submatrix. The upper boundary is not included. - Start column of the extracted submatrix. The upper boundary is not included. - End column of the extracted submatrix. The upper boundary is not included. - - - - - Extracts a rectangular submatrix. - - Start and end row of the extracted submatrix. The upper boundary is not included. - To select all the rows, use Range.All(). - Start and end column of the extracted submatrix. - The upper boundary is not included. To select all the columns, use Range.All(). - - - - - Extracts a rectangular submatrix. - - Extracted submatrix specified as a rectangle. - - - - - Extracts a rectangular submatrix. - - Array of selected ranges along each array dimension. - - - - - Retrieve UMat from Mat - - - - - - - - Creates a matrix header for the specified matrix column. - - A 0-based column index. - - - - - Creates a matrix header for the specified column span. - - An inclusive 0-based start index of the column span. - An exclusive 0-based ending index of the column span. - - - - - Creates a matrix header for the specified column span. - - - - - - - Creates a matrix header for the specified matrix row. - - A 0-based row index. - - - - - Creates a matrix header for the specified row span. - - - - - - - - Creates a matrix header for the specified row span. - - - - - - - Single-column matrix that forms a diagonal matrix or index of the diagonal, with the following values: - - Single-column matrix that forms a diagonal matrix or index of the diagonal, with the following values: - - - - - Creates a full copy of the matrix. - - - - - - Returns the partial Mat of the specified Mat - - - - - - - Copies the matrix to another one. - - Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. - Operation mask. Its non-zero elements indicate which matrix elements need to be copied. - - - - Copies the matrix to another one. - - Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. - Operation mask. Its non-zero elements indicate which matrix elements need to be copied. - - - - Converts an array to another data type with optional scaling. - - output matrix; if it does not have a proper size or type before the operation, it is reallocated. - desired output matrix type or, rather, the depth since the number of channels are the same as the input has; - if rtype is negative, the output matrix will have the same type as the input. - optional scale factor. - optional delta added to the scaled values. - - - - Provides a functional form of convertTo. - - Destination array. - Desired destination array depth (or -1 if it should be the same as the source type). - - - - Sets all or some of the array elements to the specified value. - - - - - - - - Sets all or some of the array elements to the specified value. - - - - - - - - Changes the shape and/or the number of channels of a 2D matrix without copying the data. - - New number of channels. If the parameter is 0, the number of channels remains the same. - New number of rows. If the parameter is 0, the number of rows remains the same. - - - - - Changes the shape and/or the number of channels of a 2D matrix without copying the data. - - New number of channels. If the parameter is 0, the number of channels remains the same. - New number of rows. If the parameter is 0, the number of rows remains the same. - - - - - Transposes a matrix. - - - - - - Inverses a matrix. - - Matrix inversion method - - - - - Performs an element-wise multiplication or division of the two matrices. - - - - - - - - Computes a cross-product of two 3-element vectors. - - Another cross-product operand. - - - - - Computes a dot-product of two vectors. - - another dot-product operand. - - - - - Allocates new array data if needed. - - New number of rows. - New number of columns. - New matrix type. - - - - Allocates new array data if needed. - - Alternative new matrix size specification: Size(cols, rows) - New matrix type. - - - - Allocates new array data if needed. - - Array of integers specifying a new array shape. - New matrix type. - - - - Reserves space for the certain number of rows. - - The method reserves space for sz rows. If the matrix already has enough space to store sz rows, - nothing happens. If the matrix is reallocated, the first Mat::rows rows are preserved. The method - emulates the corresponding method of the STL vector class. - - Number of rows. - - - - Reserves space for the certain number of bytes. - - The method reserves space for sz bytes. If the matrix already has enough space to store sz bytes, - nothing happens. If matrix has to be reallocated its previous content could be lost. - - Number of bytes. - - - - Changes the number of matrix rows. - - New number of rows. - - - - Changes the number of matrix rows. - - New number of rows. - Value assigned to the newly added elements. - - - - removes several hyper-planes from bottom of the matrix (Mat.pop_back) - - - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat::push_back) - - Added element - - - - Adds elements to the bottom of the matrix. (Mat.push_back) - - Added line(s) - - - - Locates the matrix header within a parent matrix. - - Output parameter that contains the size of the whole matrix containing *this as a part. - Output parameter that contains an offset of *this inside the whole matrix. - - - - Adjusts a submatrix size and position within the parent matrix. - - Shift of the top submatrix boundary upwards. - Shift of the bottom submatrix boundary downwards. - Shift of the left submatrix boundary to the left. - Shift of the right submatrix boundary to the right. - - - - - Extracts a rectangular submatrix. - - - - - - - - - - Extracts a rectangular submatrix. - - Start and end row of the extracted submatrix. The upper boundary is not included. - To select all the rows, use Range::all(). - Start and end column of the extracted submatrix. The upper boundary is not included. - To select all the columns, use Range::all(). - - - - - Extracts a rectangular submatrix. - - Extracted submatrix specified as a rectangle. - - - - - Extracts a rectangular submatrix. - - Array of selected ranges along each array dimension. - - - - - Reports whether the matrix is continuous or not. - - - - - - Returns whether this matrix is a part of other matrix or not. - - - - - - Returns the matrix element size in bytes. - - - - - - Returns the size of each matrix element channel in bytes. - - - - - - Returns the type of a matrix element. - - - - - - Returns the depth of a matrix element. - - - - - - Returns the number of matrix channels. - - - - - - Returns a normalized step. - - - - - - - Returns true if the array has no elements. - - - - - - Returns the total number of array elements. - - - - - - Returns the total number of array elements. - The method returns the number of elements within a certain sub-array slice with startDim <= dim < endDim - - - - - - - - - - Number of channels or number of columns the matrix should have. - For a 2-D matrix, when the matrix has only 1 column, then it should have - elemChannels channels; When the matrix has only 1 channel, - then it should have elemChannels columns. For a 3-D matrix, it should have only one channel. - Furthermore, if the number of planes is not one, then the number of rows within every - plane has to be 1; if the number of rows within every plane is not 1, - then the number of planes has to be 1. - The depth the matrix should have. Set it to -1 when any depth is fine. - Set it to true to require the matrix to be continuous - -1 if the requirement is not satisfied. - Otherwise, it returns the number of elements in the matrix. Note that an element may have multiple channels. - - - - Returns a pointer to the specified matrix row. - - Index along the dimension 0 - - - - - Returns a pointer to the specified matrix element. - - Index along the dimension 0 - Index along the dimension 1 - - - - - Returns a pointer to the specified matrix element. - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - - - - - Returns a pointer to the specified matrix element. - - Array of Mat::dims indices. - - - - - includes several bit-fields: - - the magic signature - - continuity flag - - depth - - number of channels - - - - - the array dimensionality, >= 2 - - - - - the number of rows or -1 when the array has more than 2 dimensions - - - - - the number of rows or -1 when the array has more than 2 dimensions - - - - - - the number of columns or -1 when the array has more than 2 dimensions - - - - - - the number of columns or -1 when the array has more than 2 dimensions - - - - - - pointer to the data - - - - - unsafe pointer to the data - - - - - The pointer that is possible to compute a relative sub-array position in the main container array using locateROI() - - - - - The pointer that is possible to compute a relative sub-array position in the main container array using locateROI() - - - - - The pointer that is possible to compute a relative sub-array position in the main container array using locateROI() - - - - - Returns a matrix size. - - - - - - Returns a matrix size. - - - - - - - Returns number of bytes each matrix row occupies. - - - - - - Returns number of bytes each matrix row occupies. - - - - - - - Returns a string that represents this Mat. - - - - - - Returns a string that represents each element value of Mat. - This method corresponds to std::ostream << Mat - - - - - - - Makes a Mat that have the same size, depth and channels as this image - - - - - - Gets a type-specific indexer. The indexer has getters/setters to access each matrix element. - - - - - - - Gets a type-specific unsafe indexer. The indexer has getters/setters to access each matrix element. - - - - - - - Mat Indexer - - - - - - 1-dimensional indexer - - Index along the dimension 0 - A value to the specified array element. - - - - 2-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - A value to the specified array element. - - - - 3-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - A value to the specified array element. - - - - n-dimensional indexer - - Array of Mat::dims indices. - A value to the specified array element. - - - - Mat Indexer - - - - - - 1-dimensional indexer - - Index along the dimension 0 - A value to the specified array element. - - - - 2-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - A value to the specified array element. - - - - 3-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - A value to the specified array element. - - - - n-dimensional indexer - - Array of Mat::dims indices. - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Array of Mat::dims indices. - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Array of Mat::dims indices. - A value to the specified array element. - - - - Set a value to the specified array element. - - - Index along the dimension 0 - - - - - Set a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - - - - - Set a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - - - - - Set a value to the specified array element. - - - Array of Mat::dims indices. - - - - - Get the data of this matrix as array - - Primitive or Vec array to be copied - Length of copied bytes - - using var m1 = new Mat(1, 1, MatType.CV_8UC1); - m1.GetArray(out byte[] array); - - using var m2 = new Mat(1, 1, MatType.CV_32SC1); - m2.GetArray(out int[] array); - - using var m3 = new Mat(1, 1, MatType.CV_8UC(6)); - m3.GetArray(out Vec6b[] array); - - using var m4 = new Mat(1, 1, MatType.CV_64FC4); - m4.GetArray(out Vec4d[] array); - - - - - Get the data of this matrix as array - - Primitive or Vec array to be copied - Length of copied bytes - - using var m1 = new Mat(1, 1, MatType.CV_8UC1); - m1.GetRectangularArray(out byte[,] array); - - using var m2 = new Mat(1, 1, MatType.CV_32SC1); - m2.GetRectangularArray(out int[,] array); - - using var m3 = new Mat(1, 1, MatType.CV_8UC(6)); - m3.GetRectangularArray(out Vec6b[,] array); - - using var m4 = new Mat(1, 1, MatType.CV_64FC4); - m4.GetRectangularArray(out Vec4d[,] array); - - - - - Set the specified array data to this matrix - - Primitive or Vec array to be copied - Length of copied bytes - - - - Set the specified array data to this matrix - - Primitive or Vec array to be copied - Length of copied bytes - - - - Encodes an image into a memory buffer. - - Encodes an image into a memory buffer. - Format-specific parameters. - - - - - Encodes an image into a memory buffer. - - Encodes an image into a memory buffer. - Format-specific parameters. - - - - - Converts Mat to System.IO.MemoryStream - - - - - - - - Writes image data encoded from this Mat to System.IO.Stream - - - - - - - - - - - - - - - - Creates type-specific Mat instance from this. - - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Runs the given functor over all matrix elements in parallel. - - - - - - Computes absolute value of each matrix element - - - - - - Scales, computes absolute values and converts the result to 8-bit. - - The optional scale factor. [By default this is 1] - The optional delta added to the scaled values. [By default this is 0] - - - - - transforms array of numbers using a lookup table: dst(i)=lut(src(i)) - - Look-up table of 256 elements. - In the case of multi-channel source array, the table should either have - a single channel (in this case the same table is used for all channels) - or the same number of channels as in the source array - - - - - transforms array of numbers using a lookup table: dst(i)=lut(src(i)) - - Look-up table of 256 elements. - In the case of multi-channel source array, the table should either have - a single channel (in this case the same table is used for all channels) - or the same number of channels as in the source array - - - - - computes sum of array elements - - - - - - computes the number of nonzero array elements - - number of non-zero elements in mtx - - - - returns the list of locations of non-zero pixels - - - - - - computes mean value of selected array elements - - The optional operation mask - - - - - computes mean value and standard deviation of all or selected array elements - - The output parameter: computed mean value - The output parameter: computed standard deviation - The optional operation mask - - - - computes norm of the selected array part - - Type of the norm - The optional operation mask - - - - - scales and shifts array elements so that either the specified norm (alpha) - or the minimum (alpha) and maximum (beta) array values get the specified values - - The norm value to normalize to or the lower range boundary - in the case of range normalization - The upper range boundary in the case of range normalization; - not used for norm normalization - The normalization type - When the parameter is negative, - the destination array will have the same type as src, - otherwise it will have the same number of channels as src and the depth =CV_MAT_DEPTH(rtype) - The optional operation mask - - - - - finds global minimum and maximum array elements and returns their values and their locations - - Pointer to returned minimum value - Pointer to returned maximum value - - - - finds global minimum and maximum array elements and returns their values and their locations - - Pointer to returned minimum location - Pointer to returned maximum location - - - - finds global minimum and maximum array elements and returns their values and their locations - - Pointer to returned minimum value - Pointer to returned maximum value - Pointer to returned minimum location - Pointer to returned maximum location - The optional mask used to select a sub-array - - - - finds global minimum and maximum array elements and returns their values and their locations - - Pointer to returned minimum value - Pointer to returned maximum value - - - - finds global minimum and maximum array elements and returns their values and their locations - - - - - - - finds global minimum and maximum array elements and returns their values and their locations - - Pointer to returned minimum value - Pointer to returned maximum value - - - - - - - transforms 2D matrix to 1D row or column vector by taking sum, minimum, maximum or mean value over all the rows - - The dimension index along which the matrix is reduced. - 0 means that the matrix is reduced to a single row and 1 means that the matrix is reduced to a single column - - When it is negative, the destination vector will have - the same type as the source matrix, otherwise, its type will be CV_MAKE_TYPE(CV_MAT_DEPTH(dtype), mtx.channels()) - - - - - Copies each plane of a multi-channel array to a dedicated array - - The number of arrays must match mtx.channels() . - The arrays themselves will be reallocated if needed - - - - extracts a single channel from src (coi is 0-based index) - - - - - - - inserts a single channel to dst (coi is 0-based index) - - - - - - - reverses the order of the rows, columns or both in a matrix - - Specifies how to flip the array: - 0 means flipping around the x-axis, positive (e.g., 1) means flipping around y-axis, - and negative (e.g., -1) means flipping around both axes. See also the discussion below for the formulas. - The destination array; will have the same size and same type as src - - - - replicates the input matrix the specified number of times in the horizontal and/or vertical direction - - How many times the src is repeated along the vertical axis - How many times the src is repeated along the horizontal axis - - - - - Checks if array elements lie between the elements of two other arrays. - - inclusive lower boundary array or a scalar. - inclusive upper boundary array or a scalar. - The destination array, will have the same size as src and CV_8U type - - - - Checks if array elements lie between the elements of two other arrays. - - inclusive lower boundary array or a scalar. - inclusive upper boundary array or a scalar. - The destination array, will have the same size as src and CV_8U type - - - - computes square root of each matrix element (dst = src**0.5) - - The destination array; will have the same size and the same type as src - - - - raises the input matrix elements to the specified power (b = a**power) - - The exponent of power - The destination array; will have the same size and the same type as src - - - - computes exponent of each matrix element (dst = e**src) - - The destination array; will have the same size and same type as src - - - - computes natural logarithm of absolute value of each matrix element: dst = log(abs(src)) - - The destination array; will have the same size and same type as src - - - - checks that each matrix element is within the specified range. - - The flag indicating whether the functions quietly - return false when the array elements are out of range, - or they throw an exception. - - - - - checks that each matrix element is within the specified range. - - The flag indicating whether the functions quietly - return false when the array elements are out of range, - or they throw an exception. - The optional output parameter, where the position of - the first outlier is stored. - The inclusive lower boundary of valid values range - The exclusive upper boundary of valid values range - - - - - converts NaN's to the given number - - - - - - multiplies matrix by its transposition from the left or from the right - - Specifies the multiplication ordering; see the description below - The optional delta matrix, subtracted from src before the - multiplication. When the matrix is empty ( delta=Mat() ), it’s assumed to be - zero, i.e. nothing is subtracted, otherwise if it has the same size as src, - then it’s simply subtracted, otherwise it is "repeated" to cover the full src - and then subtracted. Type of the delta matrix, when it's not empty, must be the - same as the type of created destination matrix, see the rtype description - The optional scale factor for the matrix product - When it’s negative, the destination matrix will have the - same type as src . Otherwise, it will have type=CV_MAT_DEPTH(rtype), - which should be either CV_32F or CV_64F - - - - transposes the matrix - - The destination array of the same type as src - - - - performs affine transformation of each element of multi-channel input matrix - - The transformation matrix - The destination array; will have the same size and depth as src and as many channels as mtx.rows - - - - performs perspective transformation of each element of multi-channel input matrix - - 3x3 or 4x4 transformation matrix - The destination array; it will have the same size and same type as src - - - - extends the symmetrical matrix from the lower half or from the upper half - - If true, the lower half is copied to the upper half, - otherwise the upper half is copied to the lower half - - - - initializes scaled identity matrix (not necessarily square). - - The value to assign to the diagonal elements - - - - computes determinant of a square matrix. - The input matrix must have CV_32FC1 or CV_64FC1 type and square size. - - determinant of the specified matrix. - - - - computes trace of a matrix - - - - - - sorts independently each matrix row or each matrix column - - The operation flags, a combination of the SortFlag values - The destination array of the same size and the same type as src - - - - sorts independently each matrix row or each matrix column - - The operation flags, a combination of SortFlag values - The destination integer array of the same size as src - - - - Performs a forward Discrete Fourier transform of 1D or 2D floating-point array. - - Transformation flags, a combination of the DftFlag2 values - When the parameter != 0, the function assumes that - only the first nonzeroRows rows of the input array ( DFT_INVERSE is not set) - or only the first nonzeroRows of the output array ( DFT_INVERSE is set) contain non-zeros, - thus the function can handle the rest of the rows more efficiently and - thus save some time. This technique is very useful for computing array cross-correlation - or convolution using DFT - The destination array, which size and type depends on the flags - - - - Performs an inverse Discrete Fourier transform of 1D or 2D floating-point array. - - Transformation flags, a combination of the DftFlag2 values - When the parameter != 0, the function assumes that - only the first nonzeroRows rows of the input array ( DFT_INVERSE is not set) - or only the first nonzeroRows of the output array ( DFT_INVERSE is set) contain non-zeros, - thus the function can handle the rest of the rows more efficiently and - thus save some time. This technique is very useful for computing array cross-correlation - or convolution using DFT - The destination array, which size and type depends on the flags - - - - performs forward or inverse 1D or 2D Discrete Cosine Transformation - - Transformation flags, a combination of DctFlag2 values - The destination array; will have the same size and same type as src - - - - performs inverse 1D or 2D Discrete Cosine Transformation - - Transformation flags, a combination of DctFlag2 values - The destination array; will have the same size and same type as src - - - - fills array with uniformly-distributed random numbers from the range [low, high) - - The inclusive lower boundary of the generated random numbers - The exclusive upper boundary of the generated random numbers - - - - fills array with uniformly-distributed random numbers from the range [low, high) - - The inclusive lower boundary of the generated random numbers - The exclusive upper boundary of the generated random numbers - - - - fills array with normally-distributed random numbers with the specified mean and the standard deviation - - The mean value (expectation) of the generated random numbers - The standard deviation of the generated random numbers - - - - fills array with normally-distributed random numbers with the specified mean and the standard deviation - - The mean value (expectation) of the generated random numbers - The standard deviation of the generated random numbers - - - - shuffles the input array elements - - The scale factor that determines the number of random swap operations. - The input/output numerical 1D array - - - - shuffles the input array elements - - The scale factor that determines the number of random swap operations. - The optional random number generator used for shuffling. - If it is null, theRng() is used instead. - The input/output numerical 1D array - - - - Draws a line segment connecting two points - - First point's x-coordinate of the line segment. - First point's y-coordinate of the line segment. - Second point's x-coordinate of the line segment. - Second point's y-coordinate of the line segment. - Line color. - Line thickness. [By default this is 1] - Type of the line. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws a line segment connecting two points - - First point of the line segment. - Second point of the line segment. - Line color. - Line thickness. [By default this is 1] - Type of the line. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws simple, thick or filled rectangle - - One of the rectangle vertices. - Opposite rectangle vertex. - Line color (RGB) or brightness (grayscale image). - Thickness of lines that make up the rectangle. Negative values make the function to draw a filled rectangle. [By default this is 1] - Type of the line, see cvLine description. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws simple, thick or filled rectangle - - Rectangle. - Line color (RGB) or brightness (grayscale image). - Thickness of lines that make up the rectangle. Negative values make the function to draw a filled rectangle. [By default this is 1] - Type of the line, see cvLine description. [By default this is LineType.Link8] - Number of fractional bits in the point coordinates. [By default this is 0] - - - - Draws a circle - - X-coordinate of the center of the circle. - Y-coordinate of the center of the circle. - Radius of the circle. - Circle color. - Thickness of the circle outline if positive, otherwise indicates that a filled circle has to be drawn. [By default this is 1] - Type of the circle boundary. [By default this is LineType.Link8] - Number of fractional bits in the center coordinates and radius value. [By default this is 0] - - - - Draws a circle - - Center of the circle. - Radius of the circle. - Circle color. - Thickness of the circle outline if positive, otherwise indicates that a filled circle has to be drawn. [By default this is 1] - Type of the circle boundary. [By default this is LineType.Link8] - Number of fractional bits in the center coordinates and radius value. [By default this is 0] - - - - Draws simple or thick elliptic arc or fills ellipse sector - - Center of the ellipse. - Length of the ellipse axes. - Rotation angle. - Starting angle of the elliptic arc. - Ending angle of the elliptic arc. - Ellipse color. - Thickness of the ellipse arc. [By default this is 1] - Type of the ellipse boundary. [By default this is LineType.Link8] - Number of fractional bits in the center coordinates and axes' values. [By default this is 0] - - - - Draws simple or thick elliptic arc or fills ellipse sector - - The enclosing box of the ellipse drawn - Ellipse color. - Thickness of the ellipse boundary. [By default this is 1] - Type of the ellipse boundary. [By default this is LineType.Link8] - - - - Draws a marker on a predefined position in an image. - - The function cv::drawMarker draws a marker on a given position in the image.For the moment several - marker types are supported, see #MarkerTypes for more information. - - The point where the crosshair is positioned. - Line color. - The specific type of marker you want to use. - The length of the marker axis [default = 20 pixels] - Line thickness. - Type of the line. - - - - Fills a convex polygon. - - The polygon vertices - Polygon color - Type of the polygon boundaries - The number of fractional bits in the vertex coordinates - - - - Fills the area bounded by one or more polygons - - Array of polygons, each represented as an array of points - Polygon color - Type of the polygon boundaries - The number of fractional bits in the vertex coordinates - - - - - draws one or more polygonal curves - - - - - - - - - - - renders text string in the image - - - - - - - - - - - - - Encodes an image into a memory buffer. - - Encodes an image into a memory buffer. - Format-specific parameters. - - - - - Encodes an image into a memory buffer. - - Encodes an image into a memory buffer. - Format-specific parameters. - - - - - Saves an image to a specified file. - - - - - - - - Saves an image to a specified file. - - - - - - - - Saves an image to a specified file. - - - - - - - - Saves an image to a specified file. - - - - - - - - Forms a border around the image - - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - Specify how much pixels in each direction from the source image rectangle one needs to extrapolate - The border type - The border value if borderType == Constant - - - - Smoothes image using median filter. - The source image must have 1-, 3- or 4-channel and - its depth should be CV_8U , CV_16U or CV_32F. - - The aperture linear size. It must be odd and more than 1, i.e. 3, 5, 7 ... - The destination array; will have the same size and the same type as src. - - - - Blurs an image using a Gaussian filter. - The input image can have any number of channels, which are processed independently, - but the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. - - Gaussian kernel size. ksize.width and ksize.height can differ but they both must be positive and odd. - Or, they can be zero’s and then they are computed from sigma* . - Gaussian kernel standard deviation in X direction. - Gaussian kernel standard deviation in Y direction; if sigmaY is zero, it is set to be equal to sigmaX, - if both sigmas are zeros, they are computed from ksize.width and ksize.height, - respectively (see getGaussianKernel() for details); to fully control the result - regardless of possible future modifications of all this semantics, it is recommended to specify all of ksize, sigmaX, and sigmaY. - pixel extrapolation method - - - - Applies bilateral filter to the image - The source image must be a 8-bit or floating-point, 1-channel or 3-channel image. - - The diameter of each pixel neighborhood, that is used during filtering. - If it is non-positive, it's computed from sigmaSpace - Filter sigma in the color space. - Larger value of the parameter means that farther colors within the pixel neighborhood - will be mixed together, resulting in larger areas of semi-equal color - Filter sigma in the coordinate space. - Larger value of the parameter means that farther pixels will influence each other - (as long as their colors are close enough; see sigmaColor). Then d>0 , it specifies - the neighborhood size regardless of sigmaSpace, otherwise d is proportional to sigmaSpace - - The destination image; will have the same size and the same type as src - - - - Smoothes image using box filter - - - The smoothing kernel size - The anchor point. The default value Point(-1,-1) means that the anchor is at the kernel center - Indicates, whether the kernel is normalized by its area or not - The border mode used to extrapolate pixels outside of the image - The destination image; will have the same size and the same type as src - - - - Smoothes image using normalized box filter - - The smoothing kernel size - The anchor point. The default value Point(-1,-1) means that the anchor is at the kernel center - The border mode used to extrapolate pixels outside of the image - The destination image; will have the same size and the same type as src - - - - Convolves an image with the kernel - - The desired depth of the destination image. If it is negative, it will be the same as src.depth() - Convolution kernel (or rather a correlation kernel), - a single-channel floating point matrix. If you want to apply different kernels to - different channels, split the image into separate color planes using split() and process them individually - The anchor of the kernel that indicates the relative position of - a filtered point within the kernel. The anchor should lie within the kernel. - The special default value (-1,-1) means that the anchor is at the kernel center - The optional value added to the filtered pixels before storing them in dst - The pixel extrapolation method - The destination image. It will have the same size and the same number of channels as src - - - - Applies separable linear filter to an image - - The destination image depth - The coefficients for filtering each row - The coefficients for filtering each column - The anchor position within the kernel; The default value (-1, 1) means that the anchor is at the kernel center - The value added to the filtered results before storing them - The pixel extrapolation method - The destination image; will have the same size and the same number of channels as src - - - - Calculates the first, second, third or mixed image derivatives using an extended Sobel operator - - The destination image depth - Order of the derivative x - Order of the derivative y - Size of the extended Sobel kernel, must be 1, 3, 5 or 7 - The optional scale factor for the computed derivative values (by default, no scaling is applied - The optional delta value, added to the results prior to storing them in dst - The pixel extrapolation method - The destination image; will have the same size and the same number of channels as src - - - - Calculates the first x- or y- image derivative using Scharr operator - - The destination image depth - Order of the derivative x - Order of the derivative y - The optional scale factor for the computed derivative values (by default, no scaling is applie - The optional delta value, added to the results prior to storing them in dst - The pixel extrapolation method - The destination image; will have the same size and the same number of channels as src - - - - Calculates the Laplacian of an image - - The desired depth of the destination image - The aperture size used to compute the second-derivative filters - The optional scale factor for the computed Laplacian values (by default, no scaling is applied - The optional delta value, added to the results prior to storing them in dst - The pixel extrapolation method - Destination image; will have the same size and the same number of channels as src - - - - Finds edges in an image using Canny algorithm. - - The first threshold for the hysteresis procedure - The second threshold for the hysteresis procedure - Aperture size for the Sobel operator [By default this is ApertureSize.Size3] - Indicates, whether the more accurate L2 norm should be used to compute the image gradient magnitude (true), or a faster default L1 norm is enough (false). [By default this is false] - The output edge map. It will have the same size and the same type as image - - - - computes both eigenvalues and the eigenvectors of 2x2 derivative covariation matrix at each pixel. The output is stored as 6-channel matrix. - - - - - - - - computes another complex cornerness criteria at each pixel - - - - - - - adjusts the corner locations with sub-pixel accuracy to maximize the certain cornerness criteria - - Initial coordinates of the input corners and refined coordinates provided for output. - Half of the side length of the search window. - Half of the size of the dead region in the middle of the search zone - over which the summation in the formula below is not done. It is used sometimes to avoid possible singularities - of the autocorrelation matrix. The value of (-1,-1) indicates that there is no such a size. - Criteria for termination of the iterative process of corner refinement. - That is, the process of corner position refinement stops either after criteria.maxCount iterations - or when the corner position moves by less than criteria.epsilon on some iteration. - - - - - Finds the strong enough corners where the cornerMinEigenVal() or cornerHarris() report the local maxima. - Input matrix must be 8-bit or floating-point 32-bit, single-channel image. - - Maximum number of corners to return. If there are more corners than are found, - the strongest of them is returned. - Parameter characterizing the minimal accepted quality of image corners. - The parameter value is multiplied by the best corner quality measure, which is the minimal eigenvalue - or the Harris function response (see cornerHarris() ). The corners with the quality measure less than - the product are rejected. For example, if the best corner has the quality measure = 1500, and the qualityLevel=0.01, - then all the corners with the quality measure less than 15 are rejected. - Minimum possible Euclidean distance between the returned corners. - Optional region of interest. If the image is not empty - (it needs to have the type CV_8UC1 and the same size as image ), it specifies the region - in which the corners are detected. - Size of an average block for computing a derivative covariation matrix over each pixel neighborhood. - Parameter indicating whether to use a Harris detector - Free parameter of the Harris detector. - Output vector of detected corners. - - - - Finds lines in a binary image using standard Hough transform. - The input matrix must be 8-bit, single-channel, binary source image. - This image may be modified by the function. - - Distance resolution of the accumulator in pixels - Angle resolution of the accumulator in radians - The accumulator threshold parameter. Only those lines are returned that get enough votes ( > threshold ) - For the multi-scale Hough transform it is the divisor for the distance resolution rho. [By default this is 0] - For the multi-scale Hough transform it is the divisor for the distance resolution theta. [By default this is 0] - The output vector of lines. Each line is represented by a two-element vector (rho, theta) . - rho is the distance from the coordinate origin (0,0) (top-left corner of the image) and theta is the line rotation angle in radians - - - - Finds lines segments in a binary image using probabilistic Hough transform. - - Distance resolution of the accumulator in pixels - Angle resolution of the accumulator in radians - The accumulator threshold parameter. Only those lines are returned that get enough votes ( > threshold ) - The minimum line length. Line segments shorter than that will be rejected. [By default this is 0] - The maximum allowed gap between points on the same line to link them. [By default this is 0] - The output lines. Each line is represented by a 4-element vector (x1, y1, x2, y2) - - - - Finds circles in a grayscale image using a Hough transform. - The input matrix must be 8-bit, single-channel and grayscale. - - The available methods are HoughMethods.Gradient and HoughMethods.GradientAlt - The inverse ratio of the accumulator resolution to the image resolution. - Minimum distance between the centers of the detected circles. - The first method-specific parameter. [By default this is 100] - The second method-specific parameter. [By default this is 100] - Minimum circle radius. [By default this is 0] - Maximum circle radius. [By default this is 0] - The output vector found circles. Each vector is encoded as 3-element floating-point vector (x, y, radius) - - - - Dilates an image by using a specific structuring element. - - The structuring element used for dilation. If element=new Mat() , a 3x3 rectangular structuring element is used - Position of the anchor within the element. The default value (-1, -1) means that the anchor is at the element center - The number of times dilation is applied. [By default this is 1] - The pixel extrapolation method. [By default this is BorderTypes.Constant] - The border value in case of a constant border. The default value has a special meaning. [By default this is CvCpp.MorphologyDefaultBorderValue()] - The destination image. It will have the same size and the same type as src - - - - Erodes an image by using a specific structuring element. - - The structuring element used for dilation. If element=new Mat(), a 3x3 rectangular structuring element is used - Position of the anchor within the element. The default value (-1, -1) means that the anchor is at the element center - The number of times erosion is applied - The pixel extrapolation method - The border value in case of a constant border. The default value has a special meaning. [By default this is CvCpp.MorphologyDefaultBorderValue()] - The destination image. It will have the same size and the same type as src - - - - Performs advanced morphological transformations - - Type of morphological operation - Structuring element - Position of the anchor within the element. The default value (-1, -1) means that the anchor is at the element center - Number of times erosion and dilation are applied. [By default this is 1] - The pixel extrapolation method. [By default this is BorderTypes.Constant] - The border value in case of a constant border. The default value has a special meaning. [By default this is CvCpp.MorphologyDefaultBorderValue()] - Destination image. It will have the same size and the same type as src - - - - Resizes an image. - - output image size; if it equals zero, it is computed as: - dsize = Size(round(fx*src.cols), round(fy*src.rows)) - Either dsize or both fx and fy must be non-zero. - scale factor along the horizontal axis; when it equals 0, - it is computed as: (double)dsize.width/src.cols - scale factor along the vertical axis; when it equals 0, - it is computed as: (double)dsize.height/src.rows - interpolation method - output image; it has the size dsize (when it is non-zero) or the size computed - from src.size(), fx, and fy; the type of dst is the same as of src. - - - - Applies an affine transformation to an image. - - output image that has the size dsize and the same type as src. - 2x3 transformation matrix. - size of the output image. - combination of interpolation methods and the optional flag - WARP_INVERSE_MAP that means that M is the inverse transformation (dst -> src) . - pixel extrapolation method; when borderMode=BORDER_TRANSPARENT, - it means that the pixels in the destination image corresponding to the "outliers" - in the source image are not modified by the function. - value used in case of a constant border; by default, it is 0. - - - - Applies a perspective transformation to an image. - - 3x3 transformation matrix. - size of the output image. - combination of interpolation methods (INTER_LINEAR or INTER_NEAREST) - and the optional flag WARP_INVERSE_MAP, that sets M as the inverse transformation (dst -> src). - pixel extrapolation method (BORDER_CONSTANT or BORDER_REPLICATE). - value used in case of a constant border; by default, it equals 0. - output image that has the size dsize and the same type as src. - - - - Applies a generic geometrical transformation to an image. - - The first map of either (x,y) points or just x values having the type CV_16SC2, CV_32FC1, or CV_32FC2. - The second map of y values having the type CV_16UC1, CV_32FC1, or none (empty map if map1 is (x,y) points), respectively. - Interpolation method. The method INTER_AREA is not supported by this function. - Pixel extrapolation method. When borderMode=BORDER_TRANSPARENT, - it means that the pixels in the destination image that corresponds to the "outliers" in - the source image are not modified by the function. - Value used in case of a constant border. By default, it is 0. - Destination image. It has the same size as map1 and the same type as src - - - - Inverts an affine transformation. - - Output reverse affine transformation. - - - - Retrieves a pixel rectangle from an image with sub-pixel accuracy. - - Size of the extracted patch. - Floating point coordinates of the center of the extracted rectangle - within the source image. The center must be inside the image. - Depth of the extracted pixels. By default, they have the same depth as src. - Extracted patch that has the size patchSize and the same number of channels as src . - - - - Adds an image to the accumulator. - - Optional operation mask. - Accumulator image with the same number of channels as input image, 32-bit or 64-bit floating-point. - - - - Adds the square of a source image to the accumulator. - - Optional operation mask. - Accumulator image with the same number of channels as input image, 32-bit or 64-bit floating-point. - - - - Computes a Hanning window coefficients in two dimensions. - - The window size specifications - Created array type - - - - Applies a fixed-level threshold to each array element. - The input matrix must be single-channel, 8-bit or 32-bit floating point. - - threshold value. - maximum value to use with the THRESH_BINARY and THRESH_BINARY_INV thresholding types. - thresholding type (see the details below). - output array of the same size and type as src. - - - - Applies an adaptive threshold to an array. - Source matrix must be 8-bit single-channel image. - - Non-zero value assigned to the pixels for which the condition is satisfied. See the details below. - Adaptive thresholding algorithm to use, ADAPTIVE_THRESH_MEAN_C or ADAPTIVE_THRESH_GAUSSIAN_C . - Thresholding type that must be either THRESH_BINARY or THRESH_BINARY_INV . - Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. - Constant subtracted from the mean or weighted mean (see the details below). - Normally, it is positive but may be zero or negative as well. - Destination image of the same size and the same type as src. - - - - Blurs an image and downsamples it. - - size of the output image; by default, it is computed as Size((src.cols+1)/2 - - - - - - Upsamples an image and then blurs it. - - size of the output image; by default, it is computed as Size(src.cols*2, (src.rows*2) - - - - - - corrects lens distortion for the given camera matrix and distortion coefficients - - Input camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, - or 8 elements. If the vector is null, the zero distortion coefficients are assumed. - Camera matrix of the distorted image. - By default, it is the same as cameraMatrix but you may additionally scale - and shift the result by using a different matrix. - Output (corrected) image that has the same size and type as src . - - - - returns the default new camera matrix (by default it is the same as cameraMatrix unless centerPricipalPoint=true) - - Camera view image size in pixels. - Location of the principal point in the new camera matrix. - The parameter indicates whether this location should be at the image center or not. - the camera matrix that is either an exact copy of the input cameraMatrix - (when centerPrinicipalPoint=false), or the modified one (when centerPrincipalPoint=true). - - - - Computes the ideal point coordinates from the observed point coordinates. - Input matrix is an observed point coordinates, 1xN or Nx1 2-channel (CV_32FC2 or CV_64FC2). - - Camera matrix - Input vector of distortion coefficients (k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6]]) of 4, 5, or 8 elements. - If the vector is null, the zero distortion coefficients are assumed. - Rectification transformation in the object space (3x3 matrix). - R1 or R2 computed by stereoRectify() can be passed here. - If the matrix is empty, the identity transformation is used. - New camera matrix (3x3) or new projection matrix (3x4). - P1 or P2 computed by stereoRectify() can be passed here. If the matrix is empty, - the identity new camera matrix is used. - Output ideal point coordinates after undistortion and reverse perspective transformation. - If matrix P is identity or omitted, dst will contain normalized point coordinates. - - - - Normalizes the grayscale image brightness and contrast by normalizing its histogram. - The source matrix is 8-bit single channel image. - - The destination image; will have the same size and the same type as src - - - - Performs a marker-based image segmentation using the watershed algorithm. - Input matrix is 8-bit 3-channel image. - - Input/output 32-bit single-channel image (map) of markers. - It should have the same size as image. - - - - Performs initial step of meanshift segmentation of an image. - The source matrix is 8-bit, 3-channel image. - - The spatial window radius. - The color window radius. - Maximum level of the pyramid for the segmentation. - Termination criteria: when to stop meanshift iterations. - The destination image of the same format and the same size as the source. - - - - Segments the image using GrabCut algorithm. - The input is 8-bit 3-channel image. - - Input/output 8-bit single-channel mask. - The mask is initialized by the function when mode is set to GC_INIT_WITH_RECT. - Its elements may have Cv2.GC_BGD / Cv2.GC_FGD / Cv2.GC_PR_BGD / Cv2.GC_PR_FGD - ROI containing a segmented object. The pixels outside of the ROI are - marked as "obvious background". The parameter is only used when mode==GC_INIT_WITH_RECT. - Temporary array for the background model. Do not modify it while you are processing the same image. - Temporary arrays for the foreground model. Do not modify it while you are processing the same image. - Number of iterations the algorithm should make before returning the result. - Note that the result can be refined with further calls with mode==GC_INIT_WITH_MASK or mode==GC_EVAL . - Operation mode that could be one of GrabCutFlag value. - - - - Fills a connected component with the given color. - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - - Starting point. - New value of the repainted domain pixels. - - - - - Fills a connected component with the given color. - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - - Starting point. - New value of the repainted domain pixels. - Optional output parameter set by the function to the - minimum bounding rectangle of the repainted domain. - Maximal lower brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Maximal upper brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Operation flags. Lower bits contain a connectivity value, - 4 (default) or 8, used within the function. Connectivity determines which - neighbors of a pixel are considered. - - - - - Fills a connected component with the given color. - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - - (For the second function only) Operation mask that should be a single-channel 8-bit image, - 2 pixels wider and 2 pixels taller. The function uses and updates the mask, so you take responsibility of - initializing the mask content. Flood-filling cannot go across non-zero pixels in the mask. For example, - an edge detector output can be used as a mask to stop filling at edges. It is possible to use the same mask - in multiple calls to the function to make sure the filled area does not overlap. - Starting point. - New value of the repainted domain pixels. - - - - - Fills a connected component with the given color. - Input/output 1- or 3-channel, 8-bit, or floating-point image. - It is modified by the function unless the FLOODFILL_MASK_ONLY flag is set in the - second variant of the function. See the details below. - - (For the second function only) Operation mask that should be a single-channel 8-bit image, - 2 pixels wider and 2 pixels taller. The function uses and updates the mask, so you take responsibility of - initializing the mask content. Flood-filling cannot go across non-zero pixels in the mask. For example, - an edge detector output can be used as a mask to stop filling at edges. It is possible to use the same mask - in multiple calls to the function to make sure the filled area does not overlap. - Starting point. - New value of the repainted domain pixels. - Optional output parameter set by the function to the - minimum bounding rectangle of the repainted domain. - Maximal lower brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Maximal upper brightness/color difference between the currently - observed pixel and one of its neighbors belonging to the component, or a seed pixel - being added to the component. - Operation flags. Lower bits contain a connectivity value, - 4 (default) or 8, used within the function. Connectivity determines which - neighbors of a pixel are considered. - - - - - Converts image from one color space to another - - The color space conversion code - The number of channels in the destination image; if the parameter is 0, the number of the channels will be derived automatically from src and the code - The destination image; will have the same size and the same depth as src - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - The input is a raster image (single-channel, 8-bit or floating-point 2D array). - - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Computes the proximity map for the raster template and the image where the template is searched for - The input is Image where the search is running; should be 8-bit or 32-bit floating-point. - - Searched template; must be not greater than the source image and have the same data type - Specifies the comparison method - Mask of searched template. It must have the same datatype and size with templ. It is not set by default. - A map of comparison results; will be single-channel 32-bit floating-point. - If image is WxH and templ is wxh then result will be (W-w+1) x (H-h+1). - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - destination labeled image - 8 or 4 for 8-way or 4-way connectivity respectively - The number of labels - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - destination labeled image - 8 or 4 for 8-way or 4-way connectivity respectively - output image label type. Currently CV_32S and CV_16U are supported. - The number of labels - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - destination labeled rectangular array - 8 or 4 for 8-way or 4-way connectivity respectively - The number of labels - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - destination labeled image - statistics output for each label, including the background label, - see below for available statistics. Statistics are accessed via stats(label, COLUMN) - where COLUMN is one of cv::ConnectedComponentsTypes - floating point centroid (x,y) output for each label, - including the background label - 8 or 4 for 8-way or 4-way connectivity respectively - - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - destination labeled image - statistics output for each label, including the background label, - see below for available statistics. Statistics are accessed via stats(label, COLUMN) - where COLUMN is one of cv::ConnectedComponentsTypes - floating point centroid (x,y) output for each label, - including the background label - 8 or 4 for 8-way or 4-way connectivity respectively - output image label type. Currently CV_32S and CV_16U are supported. - - - - - computes the connected components labeled image of boolean image. - image with 4 or 8 way connectivity - returns N, the total number of labels [0, N-1] where 0 - represents the background label. ltype specifies the output label image type, an important - consideration based on the total number of labels or alternatively the total number of - pixels in the source image. - - 8 or 4 for 8-way or 4-way connectivity respectively - - - - - Finds contours in a binary image. - The source is an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. The function modifies this image while extracting the contours. - - Detected contours. Each contour is stored as a vector of points. - Optional output vector, containing information about the image topology. - It has as many elements as the number of contours. For each i-th contour contours[i], - the members of the elements hierarchy[i] are set to 0-based indices in contours of the next - and previous contours at the same hierarchical level, the first child contour and the parent contour, respectively. - If for the contour i there are no next, previous, parent, or nested contours, the corresponding elements of hierarchy[i] will be negative. - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - - - - Finds contours in a binary image. - The source is an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. The function modifies this image while extracting the contours. - - Detected contours. Each contour is stored as a vector of points. - Optional output vector, containing information about the image topology. - It has as many elements as the number of contours. For each i-th contour contours[i], - the members of the elements hierarchy[i] are set to 0-based indices in contours of the next - and previous contours at the same hierarchical level, the first child contour and the parent contour, respectively. - If for the contour i there are no next, previous, parent, or nested contours, the corresponding elements of hierarchy[i] will be negative. - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - - - - Finds contours in a binary image. - The source is an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. The function modifies this image while extracting the contours. - - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - Detected contours. Each contour is stored as a vector of points. - - - - Finds contours in a binary image. - The source is an 8-bit single-channel image. Non-zero pixels are treated as 1’s. - Zero pixels remain 0’s, so the image is treated as binary. The function modifies this image while extracting the contours. - - Contour retrieval mode - Contour approximation method - Optional offset by which every contour point is shifted. - This is useful if the contours are extracted from the image ROI and then they should be analyzed in the whole image context. - Detected contours. Each contour is stored as a vector of points. - - - - Draws contours in the image - - All the input contours. Each contour is stored as a point vector. - Parameter indicating a contour to draw. If it is negative, all the contours are drawn. - Color of the contours. - Thickness of lines the contours are drawn with. If it is negative (for example, thickness=CV_FILLED ), - the contour interiors are drawn. - Line connectivity. - Optional information about hierarchy. It is only needed if you want to draw only some of the contours - Maximal level for drawn contours. If it is 0, only the specified contour is drawn. - If it is 1, the function draws the contour(s) and all the nested contours. If it is 2, the function draws the contours, - all the nested contours, all the nested-to-nested contours, and so on. This parameter is only taken into account - when there is hierarchy available. - Optional contour shift parameter. Shift all the drawn contours by the specified offset = (dx, dy) - - - - Draws contours in the image - - All the input contours. Each contour is stored as a point vector. - Parameter indicating a contour to draw. If it is negative, all the contours are drawn. - Color of the contours. - Thickness of lines the contours are drawn with. If it is negative (for example, thickness=CV_FILLED ), - the contour interiors are drawn. - Line connectivity. - Optional information about hierarchy. It is only needed if you want to draw only some of the contours - Maximal level for drawn contours. If it is 0, only the specified contour is drawn. - If it is 1, the function draws the contour(s) and all the nested contours. If it is 2, the function draws the contours, - all the nested contours, all the nested-to-nested contours, and so on. This parameter is only taken into account - when there is hierarchy available. - Optional contour shift parameter. Shift all the drawn contours by the specified offset = (dx, dy) - - - - Approximates contour or a curve using Douglas-Peucker algorithm. - The input is the polygon or curve to approximate and - it must be 1 x N or N x 1 matrix of type CV_32SC2 or CV_32FC2. - - Specifies the approximation accuracy. - This is the maximum distance between the original curve and its approximation. - The result of the approximation; - The type should match the type of the input curve - The result of the approximation; - The type should match the type of the input curve - - - - Calculates a contour perimeter or a curve length. - The input is 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - Indicates, whether the curve is closed or not - - - - - Calculates the up-right bounding rectangle of a point set. - The input is 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - Minimal up-right bounding rectangle for the specified point set. - - - - Calculates the contour area. - The input is 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - - - - - - Finds the minimum area rotated rectangle enclosing a 2D point set. - The input is 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - - - - - Finds the minimum area circle enclosing a 2D point set. - The input is 2D point set, represented by CV_32SC2 or CV_32FC2 matrix. - - The output center of the circle - The output radius of the circle - - - - Computes convex hull for a set of 2D points. - - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - - The output convex hull. It is either a vector of points that form the - hull (must have the same type as the input points), or a vector of 0-based point - indices of the hull points in the original array (since the set of convex hull - points is a subset of the original point set). - - - - Computes convex hull for a set of 2D points. - - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of points that form the - hull (must have the same type as the input points). - - - - Computes convex hull for a set of 2D points. - - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of points that form the - hull (must have the same type as the input points). - - - - Computes convex hull for a set of 2D points. - - If true, the output convex hull will be oriented clockwise, - otherwise it will be oriented counter-clockwise. Here, the usual screen coordinate - system is assumed - the origin is at the top-left corner, x axis is oriented to the right, - and y axis is oriented downwards. - The output convex hull. It is a vector of 0-based point - indices of the hull points in the original array (since the set of convex hull - points is a subset of the original point set). - - - - Computes the contour convexity defects - - Convex hull obtained using convexHull() that - should contain indices of the contour points that make the hull. - The output vector of convexity defects. - Each convexity defect is represented as 4-element integer vector - (a.k.a. cv::Vec4i): (start_index, end_index, farthest_pt_index, fixpt_depth), - where indices are 0-based indices in the original contour of the convexity defect beginning, - end and the farthest point, and fixpt_depth is fixed-point approximation - (with 8 fractional bits) of the distance between the farthest contour point and the hull. - That is, to get the floating-point value of the depth will be fixpt_depth/256.0. - - - - Computes the contour convexity defects - - Convex hull obtained using convexHull() that - should contain indices of the contour points that make the hull. - The output vector of convexity defects. - Each convexity defect is represented as 4-element integer vector - (a.k.a. cv::Vec4i): (start_index, end_index, farthest_pt_index, fixpt_depth), - where indices are 0-based indices in the original contour of the convexity defect beginning, - end and the farthest point, and fixpt_depth is fixed-point approximation - (with 8 fractional bits) of the distance between the farthest contour point and the hull. - That is, to get the floating-point value of the depth will be fixpt_depth/256.0. - - - - Returns true if the contour is convex. - Does not support contours with self-intersection - - - - - - Fits ellipse to the set of 2D points. - - - - - - Fits line to the set of 2D points using M-estimator algorithm. - The input is vector of 2D points. - - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - Output line parameters. - - - - Fits line to the set of 3D points using M-estimator algorithm. - The input is vector of 3D points. - - Distance used by the M-estimator - Numerical parameter ( C ) for some types of distances. - If it is 0, an optimal value is chosen. - Sufficient accuracy for the radius - (distance between the coordinate origin and the line). - Sufficient accuracy for the angle. - 0.01 would be a good default value for reps and aeps. - Output line parameters. - - - - Checks if the point is inside the contour. - Optionally computes the signed distance from the point to the contour boundary. - - Point tested against the contour. - If true, the function estimates the signed distance - from the point to the nearest contour edge. Otherwise, the function only checks - if the point is inside a contour or not. - Positive (inside), negative (outside), or zero (on an edge) value. - - - - Computes the distance transform map - - - - - - - Abstract definition of Mat indexer - - - - - - 1-dimensional indexer - - Index along the dimension 0 - A value to the specified array element. - - - - 2-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - A value to the specified array element. - - - - 3-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - A value to the specified array element. - - - - n-dimensional indexer - - Array of Mat::dims indices. - A value to the specified array element. - - - - Parent matrix object - - - - - Step byte length for each dimension - - - - - Constructor - - - - - - Type-specific abstract matrix - - Element Type - - - - Creates empty Mat - - - - - Creates from native cv::Mat* pointer - - - - - - Initializes by Mat object - - Managed Mat object - - - - constructs 2D matrix of the specified size and type - - Number of rows in a 2D array. - Number of columns in a 2D array. - - - - constructs 2D matrix of the specified size and type - - 2D array size: Size(cols, rows) . In the Size() constructor, - the number of rows and the number of columns go in the reverse order. - - - - constructs 2D matrix and fills it with the specified Scalar value. - - Number of rows in a 2D array. - Number of columns in a 2D array. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - constructs 2D matrix and fills it with the specified Scalar value. - - 2D array size: Size(cols, rows) . In the Size() constructor, - the number of rows and the number of columns go in the reverse order. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat::clone() . - Range of the m rows to take. As usual, the range start is inclusive and the range end is exclusive. - Use Range.All to take all the rows. - Range of the m columns to take. Use Range.All to take all the columns. - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat.Clone() . - Array of selected ranges of m along each dimensionality. - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat.Clone() . - Region of interest. - - - - constructor for matrix headers pointing to user-allocated data - - Number of rows in a 2D array. - Number of columns in a 2D array. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Number of bytes each matrix row occupies. The value should include the padding bytes at the end of each row, if any. - If the parameter is missing (set to AUTO_STEP ), no padding is assumed and the actual step is calculated as cols*elemSize() . - - - - constructor for matrix headers pointing to user-allocated data - - Number of rows in a 2D array. - Number of columns in a 2D array. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Number of bytes each matrix row occupies. The value should include the padding bytes at the end of each row, if any. - If the parameter is missing (set to AUTO_STEP ), no padding is assumed and the actual step is calculated as cols*elemSize() . - - - - constructor for matrix headers pointing to user-allocated data - - Array of integers specifying an n-dimensional array shape. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Array of ndims-1 steps in case of a multi-dimensional array (the last step is always set to the element size). - If not specified, the matrix is assumed to be continuous. - - - - constructor for matrix headers pointing to user-allocated data - - Array of integers specifying an n-dimensional array shape. - Pointer to the user data. Matrix constructors that take data and step parameters do not allocate matrix data. - Instead, they just initialize the matrix header that points to the specified data, which means that no data is copied. - This operation is very efficient and can be used to process external data using OpenCV functions. - The external data is not automatically de-allocated, so you should take care of it. - Array of ndims-1 steps in case of a multi-dimensional array (the last step is always set to the element size). - If not specified, the matrix is assumed to be continuous. - - - - constructs n-dimensional matrix - - Array of integers specifying an n-dimensional array shape. - - - - constructs n-dimensional matrix - - Array of integers specifying an n-dimensional array shape. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - Matrix indexer - - - - - 1-dimensional indexer - - Index along the dimension 0 - A value to the specified array element. - - - - 2-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - A value to the specified array element. - - - - 3-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - A value to the specified array element. - - - - n-dimensional indexer - - Array of Mat::dims indices. - A value to the specified array element. - - - - Gets a type-specific indexer. The indexer has getters/setters to access each matrix element. - - - - - - Gets read-only enumerator - - - - - - Convert this mat to managed array - - - - - - Convert this mat to managed rectangular array - - - - - - - - - - - - - Creates a full copy of the matrix. - - - - - - Changes the shape of channels of a 2D matrix without copying the data. - - New number of rows. If the parameter is 0, the number of rows remains the same. - - - - - Changes the shape of a 2D matrix without copying the data. - - New number of rows. If the parameter is 0, the number of rows remains the same. - - - - - Transposes a matrix. - - - - - - Extracts a rectangular submatrix. - - Start row of the extracted submatrix. The upper boundary is not included. - End row of the extracted submatrix. The upper boundary is not included. - Start column of the extracted submatrix. The upper boundary is not included. - End column of the extracted submatrix. The upper boundary is not included. - - - - - Extracts a rectangular submatrix. - - Start and end row of the extracted submatrix. The upper boundary is not included. - To select all the rows, use Range.All(). - Start and end column of the extracted submatrix. - The upper boundary is not included. To select all the columns, use Range.All(). - - - - - Extracts a rectangular submatrix. - - Extracted submatrix specified as a rectangle. - - - - - Extracts a rectangular submatrix. - - Array of selected ranges along each array dimension. - - - - - Extracts a rectangular submatrix. - - Start row of the extracted submatrix. The upper boundary is not included. - End row of the extracted submatrix. The upper boundary is not included. - Start column of the extracted submatrix. The upper boundary is not included. - End column of the extracted submatrix. The upper boundary is not included. - - - - - Extracts a rectangular submatrix. - - Start and end row of the extracted submatrix. The upper boundary is not included. - To select all the rows, use Range.All(). - Start and end column of the extracted submatrix. - The upper boundary is not included. To select all the columns, use Range.All(). - - - - - Extracts a rectangular submatrix. - - Extracted submatrix specified as a rectangle. - - - - - Extracts a rectangular submatrix. - - Array of selected ranges along each array dimension. - - - - - OpenCV C++ n-dimensional dense array class (cv::Mat) - - - - - typeof(T) -> MatType - - - - - Creates from native cv::Mat* pointer - - - - - - Creates empty Mat - - - - - - - - - - - constructs 2D matrix of the specified size and type - - Number of rows in a 2D array. - Number of columns in a 2D array. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - usage flags for allocator - - - - constructs 2D matrix of the specified size and type - - 2D array size: Size(cols, rows) . In the Size() constructor, - the number of rows and the number of columns go in the reverse order. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType.CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - usage flags for allocator - - - - constructs 2D matrix and fills it with the specified Scalar value. - - Number of rows in a 2D array. - Number of columns in a 2D array. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - usage flags for allocator - - - - constructs 2D matrix and fills it with the specified Scalar value. - - 2D array size: Size(cols, rows) . In the Size() constructor, - the number of rows and the number of columns go in the reverse order. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or CV_8UC(n), ..., CV_64FC(n) to create multi-channel (up to CV_CN_MAX channels) matrices. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - usage flags for allocator - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat::clone() . - Range of the m rows to take. As usual, the range start is inclusive and the range end is exclusive. - Use Range.All to take all the rows. - Range of the m columns to take. Use Range.All to take all the columns. - usage flags for allocator - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat.Clone() . - Array of selected ranges of m along each dimensionality. - - - - creates a matrix header for a part of the bigger matrix - - Array that (as a whole or partly) is assigned to the constructed matrix. - No data is copied by these constructors. Instead, the header pointing to m data or its sub-array - is constructed and associated with it. The reference counter, if any, is incremented. - So, when you modify the matrix formed using such a constructor, you also modify the corresponding elements of m . - If you want to have an independent copy of the sub-array, use Mat.Clone() . - Region of interest. - - - - constructs n-dimensional matrix - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - - - - constructs n-dimensional matrix - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - An optional value to initialize each matrix element with. - To set all the matrix elements to the particular value after the construction, use SetTo(Scalar s) method . - - - - Releases the resources - - - - - - Releases unmanaged resources - - - - - Extracts a diagonal from a matrix, or creates a diagonal matrix. - - One-dimensional matrix that represents the main diagonal. - - - - - Returns a zero array of the specified size and type. - - Number of rows. - Number of columns. - Created matrix type. - - - - - Returns a zero array of the specified size and type. - - Alternative to the matrix size specification Size(cols, rows) . - Created matrix type. - - - - - Returns a zero array of the specified size and type. - - Created matrix type. - - - - - - Returns an array of all 1’s of the specified size and type. - - Number of rows. - Number of columns. - Created matrix type. - - - - - Returns an array of all 1’s of the specified size and type. - - Alternative to the matrix size specification Size(cols, rows) . - Created matrix type. - - - - - Returns an array of all 1’s of the specified size and type. - - Created matrix type. - Array of integers specifying the array shape. - - - - - Returns an identity matrix of the specified size and type. - - Alternative to the matrix size specification Size(cols, rows) . - Created matrix type. - - - - - Returns an identity matrix of the specified size and type. - - Number of rows. - Number of columns. - Created matrix type. - - - - - Extracts a rectangular submatrix. - - Start row of the extracted submatrix. The upper boundary is not included. - End row of the extracted submatrix. The upper boundary is not included. - Start column of the extracted submatrix. The upper boundary is not included. - End column of the extracted submatrix. The upper boundary is not included. - - - - - Extracts a rectangular submatrix. - - Start and end row of the extracted submatrix. The upper boundary is not included. - To select all the rows, use Range.All(). - Start and end column of the extracted submatrix. - The upper boundary is not included. To select all the columns, use Range.All(). - - - - - Extracts a rectangular submatrix. - - Extracted submatrix specified as a rectangle. - - - - - Extracts a rectangular submatrix. - - Array of selected ranges along each array dimension. - - - - - Returns the UMat data as a Mat. - - AccessFlag determining the mode in which the data is to be acquired - - - - - Creates a matrix header for the specified matrix column. - - A 0-based column index. - - - - - Creates a matrix header for the specified column span. - - An inclusive 0-based start index of the column span. - An exclusive 0-based ending index of the column span. - - - - - Creates a matrix header for the specified column span. - - - - - - - Creates a matrix header for the specified matrix row. - - A 0-based row index. - - - - - Creates a matrix header for the specified row span. - - - - - - - - Creates a matrix header for the specified row span. - - - - - - - Single-column matrix that forms a diagonal matrix or index of the diagonal, with the following values: - - Single-column matrix that forms a diagonal matrix or index of the diagonal, with the following values: - - - - - Creates a full copy of the matrix. - - - - - - Returns the partial Mat of the specified Mat - - - - - - - Copies the matrix to another one. - - Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. - Operation mask. Its non-zero elements indicate which matrix elements need to be copied. - - - - Copies the matrix to another one. - - Destination matrix. If it does not have a proper size or type before the operation, it is reallocated. - Operation mask. Its non-zero elements indicate which matrix elements need to be copied. - - - - Converts an array to another data type with optional scaling. - - output matrix; if it does not have a proper size or type before the operation, it is reallocated. - desired output matrix type or, rather, the depth since the number of channels are the same as the input has; - if rtype is negative, the output matrix will have the same type as the input. - optional scale factor. - optional delta added to the scaled values. - - - - Provides a functional form of convertTo. - - Destination array. - Desired destination array depth (or -1 if it should be the same as the source type). - - - - Sets all or some of the array elements to the specified value. - - - - - - - - Sets all or some of the array elements to the specified value. - - - - - - - - Changes the shape and/or the number of channels of a 2D matrix without copying the data. - - New number of channels. If the parameter is 0, the number of channels remains the same. - New number of rows. If the parameter is 0, the number of rows remains the same. - - - - - Changes the shape and/or the number of channels of a 2D matrix without copying the data. - - New number of channels. If the parameter is 0, the number of channels remains the same. - New number of rows. If the parameter is 0, the number of rows remains the same. - - - - - Transposes a matrix. - - - - - - Inverses a matrix. - - Matrix inversion method - - - - - Performs an element-wise multiplication or division of the two matrices. - - - - - - - - Computes a dot-product of two vectors. - - another dot-product operand. - - - - - Allocates new array data if needed. - - New number of rows. - New number of columns. - New matrix type. - - - - Allocates new array data if needed. - - Alternative new matrix size specification: Size(cols, rows) - New matrix type. - - - - Allocates new array data if needed. - - Array of integers specifying a new array shape. - New matrix type. - - - - Locates the matrix header within a parent matrix. - - Output parameter that contains the size of the whole matrix containing *this as a part. - Output parameter that contains an offset of *this inside the whole matrix. - - - - Adjusts a submatrix size and position within the parent matrix. - - Shift of the top submatrix boundary upwards. - Shift of the bottom submatrix boundary downwards. - Shift of the left submatrix boundary to the left. - Shift of the right submatrix boundary to the right. - - - - - Extracts a rectangular submatrix. - - - - - - - - - - Extracts a rectangular submatrix. - - Start and end row of the extracted submatrix. The upper boundary is not included. - To select all the rows, use Range::all(). - Start and end column of the extracted submatrix. The upper boundary is not included. - To select all the columns, use Range::all(). - - - - - Extracts a rectangular submatrix. - - Extracted submatrix specified as a rectangle. - - - - - Extracts a rectangular submatrix. - - Array of selected ranges along each array dimension. - - - - - Reports whether the matrix is continuous or not. - - - - - - Returns whether this matrix is a part of other matrix or not. - - - - - - Returns the matrix element size in bytes. - - - - - - Returns the size of each matrix element channel in bytes. - - - - - - Returns the type of a matrix element. - - - - - - Returns the depth of a matrix element. - - - - - - Returns the number of matrix channels. - - - - - - Returns a normalized step. - - - - - - - Returns true if the array has no elements. - - - - - - Returns the total number of array elements. - - - - - - - - Number of channels or number of columns the matrix should have. - For a 2-D matrix, when the matrix has only 1 column, then it should have - elemChannels channels; When the matrix has only 1 channel, - then it should have elemChannels columns. For a 3-D matrix, it should have only one channel. - Furthermore, if the number of planes is not one, then the number of rows within every - plane has to be 1; if the number of rows within every plane is not 1, - then the number of planes has to be 1. - The depth the matrix should have. Set it to -1 when any depth is fine. - Set it to true to require the matrix to be continuous - -1 if the requirement is not satisfied. - Otherwise, it returns the number of elements in the matrix. Note that an element may have multiple channels. - - - - includes several bit-fields: - - the magic signature - - continuity flag - - depth - - number of channels - - - - - the array dimensionality, >= 2 - - - - - the number of rows or -1 when the array has more than 2 dimensions - - - - - the number of rows or -1 when the array has more than 2 dimensions - - - - - - the number of columns or -1 when the array has more than 2 dimensions - - - - - - the number of columns or -1 when the array has more than 2 dimensions - - - - - - Returns a matrix size. - - - - - - Returns a matrix size. - - - - - - - Returns number of bytes each matrix row occupies. - - - - - - Returns number of bytes each matrix row occupies. - - - - - - - Returns a string that represents this Mat. - - - - - - Makes a Mat that have the same size, depth and channels as this image - - - - - - - - - usage flags for allocator - - - - - Proxy datatype for passing Mat's and List<>'s as output parameters - - - - - Constructor - - - - - - Constructor - - - - - - Constructor - - - - - - Releases unmanaged resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates a proxy class of the specified matrix - - - - - - - Creates a proxy class of the specified matrix - - - - - - - Creates a proxy class of the specified list - - - - - - - - Creates a proxy class of the specified list - - - - - - - Proxy datatype for passing Mat's and List<>'s as output parameters - - - - - - - - - - - - - - - - - - - - - - Proxy datatype for passing Mat's and List<>'s as output parameters - - - - - - - - - - - - - - - - Principal Component Analysis - - - - - default constructor. - - The default constructor initializes an empty PCA structure. - The other constructors initialize the structure and call PCA::operator()(). - - - - - Constructor - - input samples stored as matrix rows or matrix columns. - optional mean value; if the matrix is empty (@c noArray()), the mean is computed from the data. - operation flags; currently the parameter is only used to specify the data layout (PCA::Flags) - maximum number of components that PCA should retain; by default, all the components are retained. - - - - Constructor - - input samples stored as matrix rows or matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - operation flags; currently the parameter is only used to specify the data layout (PCA::Flags) - Percentage of variance that PCA should retain. - Using this parameter will let the PCA decided how many components to retain but it will always keep at least 2. - - - - Releases unmanaged resources - - - - - eigenvalues of the covariation matrix - - - - - eigenvalues of the covariation matrix - - - - - mean value subtracted before the projection and added after the back projection - - - - - Performs PCA. - - The operator performs %PCA of the supplied dataset. It is safe to reuse - the same PCA structure for multiple datasets. That is, if the structure - has been previously used with another dataset, the existing internal - data is reclaimed and the new @ref eigenvalues, @ref eigenvectors and @ref - mean are allocated and computed. - - The computed @ref eigenvalues are sorted from the largest to the smallest and - the corresponding @ref eigenvectors are stored as eigenvectors rows. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), the mean is computed from the data. - operation flags; currently the parameter is only used to specify the data layout. (Flags) - maximum number of components that PCA should retain; - by default, all the components are retained. - - - - - Performs PCA. - - The operator performs %PCA of the supplied dataset. It is safe to reuse - the same PCA structure for multiple datasets. That is, if the structure - has been previously used with another dataset, the existing internal - data is reclaimed and the new @ref eigenvalues, @ref eigenvectors and @ref - mean are allocated and computed. - - The computed @ref eigenvalues are sorted from the largest to the smallest and - the corresponding @ref eigenvectors are stored as eigenvectors rows. - - input samples stored as the matrix rows or as the matrix columns. - optional mean value; if the matrix is empty (noArray()), - the mean is computed from the data. - operation flags; currently the parameter is only used to - specify the data layout. (PCA::Flags) - Percentage of variance that %PCA should retain. - Using this parameter will let the %PCA decided how many components to - retain but it will always keep at least 2. - - - - - Projects vector(s) to the principal component subspace. - - The methods project one or more vectors to the principal component - subspace, where each vector projection is represented by coefficients in - the principal component basis. The first form of the method returns the - matrix that the second form writes to the result. So the first form can - be used as a part of expression while the second form can be more - efficient in a processing loop. - - input vector(s); must have the same dimensionality and the - same layout as the input data used at %PCA phase, that is, if - DATA_AS_ROW are specified, then `vec.cols==data.cols` - (vector dimensionality) and `vec.rows` is the number of vectors to - project, and the same is true for the PCA::DATA_AS_COL case. - - - - - Projects vector(s) to the principal component subspace. - - input vector(s); must have the same dimensionality and the - same layout as the input data used at PCA phase, that is, if DATA_AS_ROW are - specified, then `vec.cols==data.cols` (vector dimensionality) and `vec.rows` - is the number of vectors to project, and the same is true for the PCA::DATA_AS_COL case. - output vectors; in case of PCA::DATA_AS_COL, the - output matrix has as many columns as the number of input vectors, this - means that `result.cols==vec.cols` and the number of rows match the - number of principal components (for example, `maxComponents` parameter - passed to the constructor). - - - - Reconstructs vectors from their PC projections. - - The methods are inverse operations to PCA::project. They take PC - coordinates of projected vectors and reconstruct the original vectors. - Unless all the principal components have been retained, the - reconstructed vectors are different from the originals. But typically, - the difference is small if the number of components is large enough (but - still much smaller than the original vector dimensionality). As a result, PCA is used. - - coordinates of the vectors in the principal component subspace, - the layout and size are the same as of PCA::project output vectors. - - - - - Reconstructs vectors from their PC projections. - - The methods are inverse operations to PCA::project. They take PC - coordinates of projected vectors and reconstruct the original vectors. - Unless all the principal components have been retained, the - reconstructed vectors are different from the originals. But typically, - the difference is small if the number of components is large enough (but - still much smaller than the original vector dimensionality). As a result, PCA is used. - - coordinates of the vectors in the principal component subspace, - the layout and size are the same as of PCA::project output vectors. - reconstructed vectors; the layout and size are the same as - of PCA::project input vectors. - - - - Write PCA objects. - Writes @ref eigenvalues @ref eigenvectors and @ref mean to specified FileStorage - - - - - - Load PCA objects. - Loads @ref eigenvalues @ref eigenvectors and @ref mean from specified FileNode - - - - - - Flags for PCA operations - - - - - The vectors are stored as rows (i.e. all the components of a certain vector are stored continously) - - - - - The vectors are stored as columns (i.e. values of a certain vector component are stored continuously) - - - - - Use pre-computed average vector - - - - - Random Number Generator. - The class implements RNG using Multiply-with-Carry algorithm. - - operations.hpp - - - - - - - - Constructor - - 64-bit value used to initialize the RNG. - - - - (byte)RNG.next() - - - - - - - (byte)RNG.next() - - - - - - (sbyte)RNG.next() - - - - - - - (sbyte)RNG.next() - - - - - - (ushort)RNG.next() - - - - - - - (ushort)RNG.next() - - - - - - (short)RNG.next() - - - - - - - (short)RNG.next() - - - - - - (uint)RNG.next() - - - - - - - (uint)RNG.next() - - - - - - (int)RNG.next() - - - - - - - (int)RNG.next() - - - - - - returns a next random value as float (System.Single) - - - - - - - returns a next random value as float (System.Single) - - - - - - returns a next random value as double (System.Double) - - - - - - - returns a next random value as double (System.Double) - - - - - - updates the state and returns the next 32-bit unsigned integer random number - - - - - - returns a random integer sampled uniformly from [0, N). - - - - - - - - - - - - - returns uniformly distributed integer random number from [a,b) range - - - - - - - - returns uniformly distributed floating-point random number from [a,b) range - - - - - - - - returns uniformly distributed double-precision floating-point random number from [a,b) range - - - - - - - - Fills arrays with random numbers. - - 2D or N-dimensional matrix; currently matrices with more than - 4 channels are not supported by the methods, use Mat::reshape as a possible workaround. - distribution type, RNG::UNIFORM or RNG::NORMAL. - first distribution parameter; in case of the uniform distribution, - this is an inclusive lower boundary, in case of the normal distribution, this is a mean value. - second distribution parameter; in case of the uniform distribution, this is - a non-inclusive upper boundary, in case of the normal distribution, this is a standard deviation - (diagonal of the standard deviation matrix or the full standard deviation matrix). - pre-saturation flag; for uniform distribution only; - if true, the method will first convert a and b to the acceptable value range (according to the - mat datatype) and then will generate uniformly distributed random numbers within the range - [saturate(a), saturate(b)), if saturateRange=false, the method will generate uniformly distributed - random numbers in the original range [a, b) and then will saturate them, it means, for example, that - theRNG().fill(mat_8u, RNG::UNIFORM, -DBL_MAX, DBL_MAX) will likely produce array mostly filled - with 0's and 255's, since the range (0, 255) is significantly smaller than [-DBL_MAX, DBL_MAX). - - - - Returns the next random number sampled from the Gaussian distribution. - - The method transforms the state using the MWC algorithm and returns the next random number - from the Gaussian distribution N(0,sigma) . That is, the mean value of the returned random - numbers is zero and the standard deviation is the specified sigma. - - standard deviation of the distribution. - - - - - - - - - - - - - - - - - - - - - - - - - - - - Mersenne Twister random number generator - - operations.hpp - - - - Constructor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - updates the state and returns the next 32-bit unsigned integer random number - - - - - - returns a random integer sampled uniformly from [0, N). - - - - - - - - - - - - - returns uniformly distributed integer random number from [a,b) range - - - - - - - - returns uniformly distributed floating-point random number from [a,b) range - - - - - - - - returns uniformly distributed double-precision floating-point random number from [a,b) range - - - - - - - - Sparse matrix class. - - - - - Creates from native cv::SparseMat* pointer - - - - - - Creates empty SparseMat - - - - - constructs n-dimensional sparse matrix - - Array of integers specifying an n-dimensional array shape. - Array type. Use MatType.CV_8UC1, ..., CV_64FC4 to create 1-4 channel matrices, - or MatType. CV_8UC(n), ..., CV_64FC(n) to create multi-channel matrices. - - - - converts old-style CvMat to the new matrix; the data is not copied by default - - cv::Mat object - - - - Releases the resources - - - - - Releases unmanaged resources - - - - - Create SparseMat from Mat - - - - - - - Assignment operator. This is O(1) operation, i.e. no data is copied - - - - - - - Assignment operator. equivalent to the corresponding constructor. - - - - - - - creates full copy of the matrix - - - - - - copies all the data to the destination matrix. All the previous content of m is erased. - - - - - - converts sparse matrix to dense matrix. - - - - - - multiplies all the matrix elements by the specified scale factor alpha and converts the results to the specified data type - - - - - - - - converts sparse matrix to dense n-dim matrix with optional type conversion and scaling. - - - The output matrix data type. When it is =-1, the output array will have the same data type as (*this) - The scale factor - The optional delta added to the scaled values before the conversion - - - - not used now - - - - - - - Reallocates sparse matrix. - If the matrix already had the proper size and type, - it is simply cleared with clear(), otherwise, - the old matrix is released (using release()) and the new one is allocated. - - - - - - - sets all the sparse matrix elements to 0, which means clearing the hash table. - - - - - manually increments the reference counter to the header. - - - - - returns the size of each element in bytes (not including the overhead - the space occupied by SparseMat::Node elements) - - - - - - returns elemSize()/channels() - - - - - - Returns the type of sparse matrix element. - - - - - - Returns the depth of sparse matrix element. - - - - - - Returns the matrix dimensionality - - - - - Returns the number of sparse matrix channels. - - - - - - Returns the array of sizes, or null if the matrix is not allocated - - - - - - Returns the size of i-th matrix dimension (or 0) - - - - - - - returns the number of non-zero elements (=the number of hash table nodes) - - - - - - Computes the element hash value (1D case) - - Index along the dimension 0 - - - - - Computes the element hash value (2D case) - - Index along the dimension 0 - Index along the dimension 1 - - - - - Computes the element hash value (3D case) - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - - - - - Computes the element hash value (nD case) - - Array of Mat::dims indices. - - - - - Low-level element-access function. - - Index along the dimension 0 - Create new element with 0 value if it does not exist in SparseMat. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Low-level element-access function. - - Index along the dimension 0 - Index along the dimension 1 - Create new element with 0 value if it does not exist in SparseMat. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Low-level element-access function. - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - Create new element with 0 value if it does not exist in SparseMat. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Low-level element-access function. - - Array of Mat::dims indices. - Create new element with 0 value if it does not exist in SparseMat. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, null. - - Index along the dimension 0 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, null. - - Index along the dimension 0 - Index along the dimension 1 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, null. - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, null. - - Array of Mat::dims indices. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, default(T). - - Index along the dimension 0 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, default(T). - - Index along the dimension 0 - Index along the dimension 1 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, default(T). - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Return pthe specified sparse matrix element if it exists; otherwise, default(T). - - Array of Mat::dims indices. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - - Mat Indexer - - - - - - 1-dimensional indexer - - Index along the dimension 0 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - 2-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - 3-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - n-dimensional indexer - - Array of Mat::dims indices. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - Gets a type-specific indexer. - The indexer has getters/setters to access each matrix element. - - - - - - - Gets a type-specific indexer. - The indexer has getters/setters to access each matrix element. - - - - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - Returns a value to the specified array element. - - - Array of Mat::dims indices. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - Set a value to the specified array element. - - - Index along the dimension 0 - - - - - - Set a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - Set a value to the specified array element. - - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - Set a value to the specified array element. - - - Array of Mat::dims indices. - - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - - - - Returns a string that represents this Mat. - - - - - - Abstract definition of Mat indexer - - - - - - 1-dimensional indexer - - Index along the dimension 0 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - 2-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - 3-dimensional indexer - - Index along the dimension 0 - Index along the dimension 1 - Index along the dimension 2 - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - n-dimensional indexer - - Array of Mat::dims indices. - If hashVal is not null, the element hash value is not computed but hashval is taken instead. - A value to the specified array element. - - - - Parent matrix object - - - - - Constructor - - - - - - Struct for matching: query descriptor index, train descriptor index, train image index and distance between descriptors. - - - - - query descriptor index - - - - - train descriptor index - - - - - train image index - - - - - - - - - - - - - - - - Constructor - - - - - - - - Constructor - - - - - - - - - Compares by distance (less is better) - - - - - - - - Compares by distance (less is better) - - - - - - - - Compares by distance (less is better) - - - - - - - - - - Data structure for salient point detectors - - - - - Coordinate of the point - - - - - Feature size - - - - - Feature orientation in degrees (has negative value if the orientation is not defined/not computed) - - - - - Feature strength (can be used to select only the most prominent key points) - - - - - Scale-space octave in which the feature has been found; may correlate with the size - - - - - Point class (can be used by feature classifiers or object detectors) - - - - - Complete constructor - - Coordinate of the point - Feature size - Feature orientation in degrees (has negative value if the orientation is not defined/not computed) - Feature strength (can be used to select only the most prominent key points) - Scale-space octave in which the feature has been found; may correlate with the size - Point class (can be used by feature classifiers or object detectors) - - - - Complete constructor - - X-coordinate of the point - Y-coordinate of the point - Feature size - Feature orientation in degrees (has negative value if the orientation is not defined/not computed) - Feature strength (can be used to select only the most prominent key points) - Scale-space octave in which the feature has been found; may correlate with the size - Point class (can be used by feature classifiers or object detectors) - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - - - - - - - - - - - - - Matrix data type (depth and number of channels) - - - - - Entity value - - - - - Entity value - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - type depth constants - - - - - type depth constants - - - - - type depth constants - - - - - type depth constants - - - - - type depth constants - - - - - type depth constants - - - - - type depth constants - - - - - type depth constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - predefined type constants - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compares two Point objects. The result specifies whether the values of the X and Y properties of the two Point objects are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the X and Y values of left and right are equal; otherwise, false. - - - - Compares two Point objects. The result specifies whether the values of the X or Y properties of the two Point objects are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the values of either the X properties or the Y properties of left and right differ; otherwise, false. - - - - Unary plus operator - - - - - - Unary plus operator - - - - - - - Unary minus operator - - - - - - Unary minus operator - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - - - - - - - - - - - - - Returns the distance between the specified two points - - - - - - - - Returns the distance between the specified two points - - - - - - - Calculates the dot product of two 2D vectors. - - - - - - - - Calculates the dot product of two 2D vectors. - - - - - - - Calculates the cross product of two 2D vectors. - - - - - - - - Calculates the cross product of two 2D vectors. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compares two CvPoint objects. The result specifies whether the values of the X and Y properties of the two CvPoint objects are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the X and Y values of left and right are equal; otherwise, false. - - - - Compares two CvPoint2D32f objects. The result specifies whether the values of the X or Y properties of the two CvPoint2D32f objects are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the values of either the X properties or the Y properties of left and right differ; otherwise, false. - - - - Unary plus operator - - - - - - Unary plus operator - - - - - - - Unary minus operator - - - - - - Unary minus operator - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - - - - - - - - - - - - - Returns the distance between the specified two points - - - - - - - - Returns the distance between the specified two points - - - - - - - Calculates the dot product of two 2D vectors. - - - - - - - - Calculates the dot product of two 2D vectors. - - - - - - - Calculates the cross product of two 2D vectors. - - - - - - - - Calculates the cross product of two 2D vectors. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compares two CvPoint objects. The result specifies whether the values of the X and Y properties of the two CvPoint objects are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the X and Y values of left and right are equal; otherwise, false. - - - - Compares two CvPoint2D32f objects. The result specifies whether the values of the X or Y properties of the two CvPoint2D32f objects are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the values of either the X properties or the Y properties of left and right differ; otherwise, false. - - - - Unary plus operator - - - - - - Unary plus operator - - - - - - - Unary minus operator - - - - - - Unary minus operator - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - - - - - - - - - - - - - Returns the distance between the specified two points - - - - - - - - Returns the distance between the specified two points - - - - - - - Calculates the dot product of two 2D vectors. - - - - - - - - Calculates the dot product of two 2D vectors. - - - - - - - Calculates the cross product of two 2D vectors. - - - - - - - - Calculates the cross product of two 2D vectors. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compares two CvPoint objects. The result specifies whether the values of the X and Y properties of the two CvPoint objects are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the X and Y values of left and right are equal; otherwise, false. - - - - Compares two CvPoint2D32f objects. The result specifies whether the values of the X or Y properties of the two CvPoint2D32f objects are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the values of either the X properties or the Y properties of left and right differ; otherwise, false. - - - - Unary plus operator - - - - - - - Unary plus operator - - - - - - Unary minus operator - - - - - - - Unary minus operator - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Constructor - - - - - - - - Compares two CvPoint objects. The result specifies whether the values of the X and Y properties of the two CvPoint objects are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the X and Y values of left and right are equal; otherwise, false. - - - - Compares two CvPoint2D32f objects. The result specifies whether the values of the X or Y properties of the two CvPoint2D32f objects are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the values of either the X properties or the Y properties of left and right differ; otherwise, false. - - - - Unary plus operator - - - - - - Unary plus operator - - - - - - - Unary minus operator - - - - - - Unary minus operator - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compares two CvPoint objects. The result specifies whether the values of the X and Y properties of the two CvPoint objects are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the X and Y values of left and right are equal; otherwise, false. - - - - Compares two CvPoint2D32f objects. The result specifies whether the values of the X or Y properties of the two CvPoint2D32f objects are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the values of either the X properties or the Y properties of left and right differ; otherwise, false. - - - - Unary plus operator - - - - - - - Unary plus operator - - - - - - Unary minus operator - - - - - - - Unary minus operator - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - Shifts point by a certain offset - - - - - - - - Shifts point by a certain offset - - - - - - - - - - - - - - - - - - - Template class specifying a continuous subsequence (slice) of a sequence. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - float Range class - - - - - - - - - - - - - - - Constructor - - - - - - - Convert to Range - - - - - - Implicit operator (Range)this - - - - - - - Range(int.MinValue, int.MaxValue) - - - - - Stores a set of four integers that represent the location and size of a rectangle - - - - - - - - - - - - - - - - - - - - - - - - - Represents a Rect structure with its properties left uninitialized. - - - - - Initializes a new instance of the Rectangle class with the specified location and size. - - The x-coordinate of the upper-left corner of the rectangle. - The y-coordinate of the upper-left corner of the rectangle. - The width of the rectangle. - The height of the rectangle. - - - - Initializes a new instance of the Rectangle class with the specified location and size. - - A Point that represents the upper-left corner of the rectangular region. - A Size that represents the width and height of the rectangular region. - - - - Creates a Rectangle structure with the specified edge locations. - - The x-coordinate of the upper-left corner of this Rectangle structure. - The y-coordinate of the upper-left corner of this Rectangle structure. - The x-coordinate of the lower-right corner of this Rectangle structure. - The y-coordinate of the lower-right corner of this Rectangle structure. - - - - Compares two Rect objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two Rect objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - Shifts rectangle by a certain offset - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Shifts rectangle by a certain offset - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - Determines the Rect structure that represents the intersection of two rectangles. - - A rectangle to intersect. - A rectangle to intersect. - - - - - Gets a Rect structure that contains the union of two Rect structures. - - A rectangle to union. - A rectangle to union. - - - - - Gets the y-coordinate of the top edge of this Rect structure. - - - - - Gets the y-coordinate that is the sum of the Y and Height property values of this Rect structure. - - - - - Gets the x-coordinate of the left edge of this Rect structure. - - - - - Gets the x-coordinate that is the sum of X and Width property values of this Rect structure. - - - - - Coordinate of the left-most rectangle corner [Point(X, Y)] - - - - - Size of the rectangle [CvSize(Width, Height)] - - - - - Coordinate of the left-most rectangle corner [Point(X, Y)] - - - - - Coordinate of the right-most rectangle corner [Point(X+Width, Y+Height)] - - - - - Determines if the specified point is contained within the rectangular region defined by this Rectangle. - - x-coordinate of the point - y-coordinate of the point - - - - - Determines if the specified point is contained within the rectangular region defined by this Rectangle. - - point - - - - - Determines if the specified rectangle is contained within the rectangular region defined by this Rectangle. - - rectangle - - - - - Inflates this Rect by the specified amount. - - The amount to inflate this Rectangle horizontally. - The amount to inflate this Rectangle vertically. - - - - Inflates this Rect by the specified amount. - - The amount to inflate this rectangle. - - - - Creates and returns an inflated copy of the specified Rect structure. - - The Rectangle with which to start. This rectangle is not modified. - The amount to inflate this Rectangle horizontally. - The amount to inflate this Rectangle vertically. - - - - - Determines the Rect structure that represents the intersection of two rectangles. - - A rectangle to intersect. - A rectangle to intersect. - - - - - Determines the Rect structure that represents the intersection of two rectangles. - - A rectangle to intersect. - - - - - Determines if this rectangle intersects with rect. - - Rectangle - - - - - Gets a Rect structure that contains the union of two Rect structures. - - A rectangle to union. - - - - - Gets a Rect structure that contains the union of two Rect structures. - - A rectangle to union. - A rectangle to union. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Represents a Rect2d structure with its properties left uninitialized. - - - - - Constructor - - - - - - - - - Constructor - - - - - - - - - - - - - - - - Compares two Rect2d objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two Rect2d objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - Shifts rectangle by a certain offset - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Shifts rectangle by a certain offset - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Determines the Rect2d structure that represents the intersection of two rectangles. - - A rectangle to intersect. - A rectangle to intersect. - - - - - Gets a Rect2d structure that contains the union of two Rect2d structures. - - A rectangle to union. - A rectangle to union. - - - - - Gets the y-coordinate of the top edge of this Rect2d structure. - - - - - Gets the y-coordinate that is the sum of the Y and Height property values of this Rect2d structure. - - - - - Gets the x-coordinate of the left edge of this Rect2d structure. - - - - - Gets the x-coordinate that is the sum of X and Width property values of this Rect2d structure. - - - - - Coordinate of the left-most rectangle corner [Point2d(X, Y)] - - - - - Size of the rectangle [CvSize(Width, Height)] - - - - - Coordinate of the left-most rectangle corner [Point2d(X, Y)] - - - - - Coordinate of the right-most rectangle corner [Point2d(X+Width, Y+Height)] - - - - - - - - - - - Determines if the specified point is contained within the rectangular region defined by this Rectangle. - - x-coordinate of the point - y-coordinate of the point - - - - - Determines if the specified point is contained within the rectangular region defined by this Rectangle. - - point - - - - - Determines if the specified rectangle is contained within the rectangular region defined by this Rectangle. - - rectangle - - - - - Inflates this Rect by the specified amount. - - The amount to inflate this Rectangle horizontally. - The amount to inflate this Rectangle vertically. - - - - Inflates this Rect by the specified amount. - - The amount to inflate this rectangle. - - - - Creates and returns an inflated copy of the specified Rect2d structure. - - The Rectangle with which to start. This rectangle is not modified. - The amount to inflate this Rectangle horizontally. - The amount to inflate this Rectangle vertically. - - - - - Determines the Rect2d structure that represents the intersection of two rectangles. - - A rectangle to intersect. - A rectangle to intersect. - - - - - Determines the Rect2d structure that represents the intersection of two rectangles. - - A rectangle to intersect. - - - - - Determines if this rectangle intersects with rect. - - Rectangle - - - - - Gets a Rect2d structure that contains the union of two Rect2d structures. - - A rectangle to union. - - - - - Gets a Rect2d structure that contains the union of two Rect2d structures. - - A rectangle to union. - A rectangle to union. - - - - - - - - - - - - - - - - - A rectangle with float type coordinates in 2D space - - - - - Represents a Rect2f structure with its properties left uninitialized. - - - - - Constructor - - - - - - - - - Constructor - - - - - - - - - - - - - - - - Compares two Rect2f objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two Rect2f objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - Shifts rectangle by a certain offset - - - - - - - Shifts rectangle by a certain offset - - - - - - - - Shifts rectangle by a certain offset - - - - - - - Shifts rectangle by a certain offset - - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - Expands or shrinks rectangle by a certain amount - - - - - - - - Determines the Rect2f structure that represents the intersection of two rectangles. - - A rectangle to intersect. - A rectangle to intersect. - - - - - Gets a Rect2f structure that contains the union of two Rect2f structures. - - A rectangle to union. - A rectangle to union. - - - - - Gets the y-coordinate of the top edge of this Rect2f structure. - - - - - Gets the y-coordinate that is the sum of the Y and Height property values of this Rect2f structure. - - - - - Gets the x-coordinate of the left edge of this Rect2f structure. - - - - - Gets the x-coordinate that is the sum of X and Width property values of this Rect2f structure. - - - - - Coordinate of the left-most rectangle corner [Point2f(X, Y)] - - - - - Size of the rectangle [CvSize(Width, Height)] - - - - - Coordinate of the left-most rectangle corner [Point2f(X, Y)] - - - - - Coordinate of the right-most rectangle corner [Point2f(X+Width, Y+Height)] - - - - - Determines if the specified point is contained within the rectangular region defined by this Rectangle. - - x-coordinate of the point - y-coordinate of the point - - - - - Determines if the specified point is contained within the rectangular region defined by this Rectangle. - - point - - - - - Determines if the specified rectangle is contained within the rectangular region defined by this Rectangle. - - rectangle - - - - - Inflates this Rect by the specified amount. - - The amount to inflate this Rectangle horizontally. - The amount to inflate this Rectangle vertically. - - - - Inflates this Rect by the specified amount. - - The amount to inflate this rectangle. - - - - Creates and returns an inflated copy of the specified Rect2f structure. - - The Rectangle with which to start. This rectangle is not modified. - The amount to inflate this Rectangle horizontally. - The amount to inflate this Rectangle vertically. - - - - - Determines the Rect2f structure that represents the intersection of two rectangles. - - A rectangle to intersect. - A rectangle to intersect. - - - - - Determines the Rect2f structure that represents the intersection of two rectangles. - - A rectangle to intersect. - - - - - Determines if this rectangle intersects with rect. - - Rectangle - - - - - Gets a Rect2f structure that contains the union of two Rect2f structures. - - A rectangle to union. - - - - - Gets a Rect2f structure that contains the union of two Rect2f structures. - - A rectangle to union. - A rectangle to union. - - - - - - - - - - - - - - - - - The class represents rotated (i.e. not up-right) rectangles on a plane. - - - - - the rectangle mass center - - - - - width and height of the rectangle - - - - - the rotation angle. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle. - - - - - Constructor - - - - - - - - returns 4 vertices of the rectangle - - - - - - returns the minimal up-right rectangle containing the rotated rectangle - - - - - - Template class for a 4-element vector derived from Vec. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets random color - - - - - Gets random color - - .NET random number generator. This method uses Random.NextBytes() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #F0F8FF - - - - - #FAEBD7 - - - - - #00FFFF - - - - - #7FFFD4 - - - - - #F0FFFF - - - - - #F5F5DC - - - - - #FFE4C4 - - - - - #000000 - - - - - #FFEBCD - - - - - #0000FF - - - - - #8A2BE2 - - - - - #A52A2A - - - - - #DEB887 - - - - - #5F9EA0 - - - - - #7FFF00 - - - - - #D2691E - - - - - #FF7F50 - - - - - #6495ED - - - - - #FFF8DC - - - - - #DC143C - - - - - #00FFFF - - - - - #00008B - - - - - #008B8B - - - - - #B8860B - - - - - #A9A9A9 - - - - - #006400 - - - - - #BDB76B - - - - - #8B008B - - - - - #556B2F - - - - - #FF8C00 - - - - - #9932CC - - - - - #8B0000 - - - - - #E9967A - - - - - #8FBC8F - - - - - #483D8B - - - - - #2F4F4F - - - - - #00CED1 - - - - - #9400D3 - - - - - #FF1493 - - - - - #00BFFF - - - - - #696969 - - - - - #1E90FF - - - - - #B22222 - - - - - #FFFAF0 - - - - - #228B22 - - - - - #FF00FF - - - - - #DCDCDC - - - - - #F8F8FF - - - - - #FFD700 - - - - - #DAA520 - - - - - #808080 - - - - - #008000 - - - - - #ADFF2F - - - - - #F0FFF0 - - - - - #FF69B4 - - - - - #CD5C5C - - - - - #4B0082 - - - - - #FFFFF0 - - - - - #F0E68C - - - - - #E6E6FA - - - - - #FFF0F5 - - - - - #7CFC00 - - - - - #FFFACD - - - - - #ADD8E6 - - - - - #F08080 - - - - - #E0FFFF - - - - - #FAFAD2 - - - - - #D3D3D3 - - - - - #90EE90 - - - - - #FFB6C1 - - - - - #FFA07A - - - - - #20B2AA - - - - - #87CEFA - - - - - #778899 - - - - - #B0C4DE - - - - - #FFFFE0 - - - - - #00FF00 - - - - - #32CD32 - - - - - #FAF0E6 - - - - - #FF00FF - - - - - #800000 - - - - - #66CDAA - - - - - #0000CD - - - - - #BA55D3 - - - - - #9370DB - - - - - #3CB371 - - - - - #7B68EE - - - - - #00FA9A - - - - - #48D1CC - - - - - #C71585 - - - - - #191970 - - - - - #F5FFFA - - - - - #FFE4E1 - - - - - #FFE4B5 - - - - - #FFDEAD - - - - - #000080 - - - - - #FDF5E6 - - - - - #808000 - - - - - #6B8E23 - - - - - #FFA500 - - - - - #FF4500 - - - - - #DA70D6 - - - - - #EEE8AA - - - - - #98FB98 - - - - - #AFEEEE - - - - - #DB7093 - - - - - #FFEFD5 - - - - - #FFDAB9 - - - - - #CD853F - - - - - #FFC0CB - - - - - #DDA0DD - - - - - #B0E0E6 - - - - - #800080 - - - - - #FF0000 - - - - - #BC8F8F - - - - - #4169E1 - - - - - #8B4513 - - - - - #FA8072 - - - - - #F4A460 - - - - - #2E8B57 - - - - - #FFF5EE - - - - - #A0522D - - - - - #C0C0C0 - - - - - #87CEEB - - - - - #6A5ACD - - - - - #708090 - - - - - #FFFAFA - - - - - #00FF7F - - - - - #4682B4 - - - - - #D2B48C - - - - - #008080 - - - - - #D8BFD8 - - - - - #FF6347 - - - - - #40E0D0 - - - - - #EE82EE - - - - - #F5DEB3 - - - - - #FFFFFF - - - - - #F5F5F5 - - - - - #FFFF00 - - - - - #9ACD32 - - - - - - - - - - - - - - - - - - - - Constructor - - - - - - - Constructor - - - - - - - Zero size - - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Constructor - - - - - - - Constructor - - - - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Constructor - - - - - - - Constructor - - - - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - - - - - - - - - - - - - The class defining termination criteria for iterative algorithms. - - - - - the type of termination criteria: COUNT, EPS or COUNT + EPS - - - - - the maximum number of iterations/elements - - - - - the desired accuracy - - - - - full constructor - - - - - - - - full constructor with both type (count | epsilon) - - - - - - - Vec empty interface - - - - - Vec** interface - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this * alpha - - - - - - - indexer - - - - - - - 2-Tuple of byte (System.Byte) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - Deconstructing a Vector - - - - - - - Initializer - - - - - - - returns a Vec with all elements set to v0 - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2-Tuple of double (System.Double) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - Deconstructing a Vector - - - - - - - Initializer - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2-Tuple of float (System.Single) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - Deconstructing a Vector - - - - - - - Initializer - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2-Tuple of int (System.Int32) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - Deconstructing a Vector - - - - - - - Initializer - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2-Tuple of short (System.Int16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - Deconstructing a Vector - - - - - - - Initializer - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2-Tuple of ushort (System.UInt16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - Deconstructing a Vector - - - - - - - Initializer - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3-Tuple of byte (System.Byte) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - Deconstructing a Vector - - - - - - - - Initializer - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3-Tuple of double (System.Double) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - Deconstructing a Vector - - - - - - - - Initializer - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3-Tuple of float (System.Single) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - Deconstructing a Vector - - - - - - - - Initializer - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3-Tuple of int (System.Int32) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - Deconstructing a Vector - - - - - - - - Initializer - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3-Tuple of short (System.Int16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - Deconstructing a Vector - - - - - - - - Initializer - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3-Tuple of ushort (System.UInt16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - Deconstructing a Vector - - - - - - - - Initializer - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of byte (System.Byte) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - Initializer - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of double (System.Double) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - Initializer - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of float (System.Single) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - Initializer - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of int (System.Int32) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - Initializer - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of short (System.Int16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - Initializer - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of ushort (System.UInt16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - Initializer - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6-Tuple of byte (System.Byte) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the fifth component of this object. - - - - - The value of the sixth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - - - Initializer - - - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6-Tuple of double (System.Double) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the fifth component of this object. - - - - - The value of the sixth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - - - Initializer - - - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6-Tuple of float (System.Single) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the fifth component of this object. - - - - - The value of the sixth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - - - Initializer - - - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6-Tuple of int (System.Int32) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the sixth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - - - Initializer - - - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6-Tuple of short (System.Int16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the fifth component of this object. - - - - - The value of the sixth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - - - Initializer - - - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4-Tuple of ushort (System.UInt16) - - - - - The value of the first component of this object. - - - - - The value of the second component of this object. - - - - - The value of the third component of this object. - - - - - The value of the fourth component of this object. - - - - - The value of the fifth component of this object. - - - - - The value of the sixth component of this object. - - - - - Deconstructing a Vector - - - - - - - - - - - Initializer - - - - - - - - - - - this + other - - - - - - - this - other - - - - - - - this * alpha - - - - - - - this / alpha - - - - - - - Indexer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Singular Value Decomposition class - - - - - the default constructor - - - - - the constructor that performs SVD - - - - - - - Releases unmanaged resources - - - - - eigenvalues of the covariation matrix - - - - - eigenvalues of the covariation matrix - - - - - mean value subtracted before the projection and added after the back projection - - - - - the operator that performs SVD. The previously allocated SVD::u, SVD::w are SVD::vt are released. - - - - - - - - performs back substitution, so that dst is the solution or pseudo-solution of m*dst = rhs, where m is the decomposed matrix - - - - - - - - decomposes matrix and stores the results to user-provided matrices - - - - - - - - - - computes singular values of a matrix - - - - - - - - performs back substitution - - - - - - - - - - finds dst = arg min_{|dst|=1} |m*dst| - - - - - - - Operation flags for SVD - - - - - - - - - - enables modification of matrix src1 during the operation. It speeds up the processing. - - - - - indicates that only a vector of singular values `w` is to be processed, - while u and vt will be set to empty matrices - - - - - when the matrix is not square, by default the algorithm produces u and - vt matrices of sufficiently large size for the further A reconstruction; - if, however, FULL_UV flag is specified, u and vt will be full-size square - orthogonal matrices. - - - - - Enum of computation backends supported by layers. - - - DNN_BACKEND_DEFAULT equals to DNN_BACKEND_INFERENCE_ENGINE if - OpenCV is built with Intel's Inference Engine library or - DNN_BACKEND_OPENCV otherwise. - - - - - cv::dnn functions - - - - - Reads a network model stored in Darknet (https://pjreddie.com/darknet/) model files. - - path to the .cfg file with text description of the network architecture. - path to the .weights file with learned network. - Network object that ready to do forward, throw an exception in failure cases. - This is shortcut consisting from DarknetImporter and Net::populateNet calls. - - - - Reads a network model stored in Darknet (https://pjreddie.com/darknet/) model files from memory. - - A buffer contains a content of .cfg file with text description of the network architecture. - A buffer contains a content of .weights file with learned network. - - This is shortcut consisting from DarknetImporter and Net::populateNet calls. - - - - Reads a network model stored in Darknet (https://pjreddie.com/darknet/) model files from stream. - - A buffer contains a content of .cfg file with text description of the network architecture. - A buffer contains a content of .weights file with learned network. - - This is shortcut consisting from DarknetImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files. - - path to the .prototxt file with text description of the network architecture. - path to the .caffemodel file with learned network. - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files from memory. - - buffer containing the content of the .prototxt file - buffer containing the content of the .caffemodel file - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files from memory. - - buffer containing the content of the .prototxt file - buffer containing the content of the .caffemodel file - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files from Stream. - - buffer containing the content of the .prototxt file - buffer containing the content of the .caffemodel file - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Tensorflow model file. - - path to the .pb file with binary protobuf description of the network architecture - path to the .pbtxt file that contains text graph definition in protobuf format. - Resulting Net object is built by text graph using weights from a binary one that - let us make it more flexible. - This is shortcut consisting from createTensorflowImporter and Net::populateNet calls. - - - - Reads a network model stored in Tensorflow model file from memory. - - buffer containing the content of the pb file - buffer containing the content of the pbtxt file (optional) - - This is shortcut consisting from createTensorflowImporter and Net::populateNet calls. - - - - Reads a network model stored in Tensorflow model file from stream. - - buffer containing the content of the pb file - buffer containing the content of the pbtxt file (optional) - - This is shortcut consisting from createTensorflowImporter and Net::populateNet calls. - - - - Reads a network model stored in Torch model file. - - - - - This is shortcut consisting from createTorchImporter and Net::populateNet calls. - - - - Read deep learning network represented in one of the supported formats. - - This function automatically detects an origin framework of trained model - and calls an appropriate function such @ref readNetFromCaffe, @ref readNetFromTensorflow, - - Binary file contains trained weights. The following file - * extensions are expected for models from different frameworks: - * * `*.caffemodel` (Caffe, http://caffe.berkeleyvision.org/) - * * `*.pb` (TensorFlow, https://www.tensorflow.org/) - * * `*.t7` | `*.net` (Torch, http://torch.ch/) - * * `*.weights` (Darknet, https://pjreddie.com/darknet/) - * * `*.bin` (DLDT, https://software.intel.com/openvino-toolkit) - Text file contains network configuration. It could be a - * file with the following extensions: - * * `*.prototxt` (Caffe, http://caffe.berkeleyvision.org/) - * * `*.pbtxt` (TensorFlow, https://www.tensorflow.org/) - * * `*.cfg` (Darknet, https://pjreddie.com/darknet/) - * * `*.xml` (DLDT, https://software.intel.com/openvino-toolkit) - Explicit framework name tag to determine a format. - - - - - Loads blob which was serialized as torch.Tensor object of Torch7 framework. - - - - - - This function has the same limitations as createTorchImporter(). - - - - - Reads a network model ONNX https://onnx.ai/ from memory - - - - - - - Reads a network model ONNX https://onnx.ai/ from memory - - memory of the first byte of the buffer. - - - - - Reads a network model ONNX https://onnx.ai/ from memory - - memory of the first byte of the buffer. - - - - - Reads a network model ONNX https://onnx.ai/ from stream. - - memory of the first byte of the buffer. - - - - - Creates blob from .pb file. - - path to the .pb file with input tensor. - - - - - Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center, - subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels. - - input image (with 1- or 3-channels). - multiplier for @p image values. - spatial size for output image - scalar with mean values which are subtracted from channels. Values are intended - to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true. - flag which indicates that swap first and last channels in 3-channel image is necessary. - flag which indicates whether image will be cropped after resize or not - 4-dimansional Mat with NCHW dimensions order. - if @p crop is true, input image is resized so one side after resize is equal to corresponing - dimension in @p size and another one is equal or larger.Then, crop from the center is performed. - If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. - - - - Creates 4-dimensional blob from series of images. Optionally resizes and - crops @p images from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels. - - input images (all with 1- or 3-channels). - multiplier for @p image values. - spatial size for output image - scalar with mean values which are subtracted from channels. Values are intended - to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true. - flag which indicates that swap first and last channels in 3-channel image is necessary. - flag which indicates whether image will be cropped after resize or not - 4-dimansional Mat with NCHW dimensions order. - if @p crop is true, input image is resized so one side after resize is equal to corresponing - dimension in @p size and another one is equal or larger.Then, crop from the center is performed. - If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. - - - - Convert all weights of Caffe network to half precision floating point. - - Path to origin model from Caffe framework contains single - precision floating point weights(usually has `.caffemodel` extension). - Path to destination model with updated weights. - Set of layers types which parameters will be converted. - By default, converts only Convolutional and Fully-Connected layers' weights. - - Shrinked model has no origin float32 weights so it can't be used - in origin Caffe framework anymore.However the structure of data - is taken from NVidia's Caffe fork: https://github.com/NVIDIA/caffe. - So the resulting model may be used there. - - - - - Create a text representation for a binary network stored in protocol buffer format. - - A path to binary network. - A path to output text file to be created. - - - - Performs non maximum suppression given boxes and corresponding scores. - - a set of bounding boxes to apply NMS. - a set of corresponding confidences. - a threshold used to filter boxes by score. - a threshold used in non maximum suppression. - the kept indices of bboxes after NMS. - a coefficient in adaptive threshold formula - if `>0`, keep at most @p top_k picked indices. - - - - Performs non maximum suppression given boxes and corresponding scores. - - a set of bounding boxes to apply NMS. - a set of corresponding confidences. - a threshold used to filter boxes by score. - a threshold used in non maximum suppression. - the kept indices of bboxes after NMS. - a coefficient in adaptive threshold formula - if `>0`, keep at most @p top_k picked indices. - - - - Performs non maximum suppression given boxes and corresponding scores. - - a set of bounding boxes to apply NMS. - a set of corresponding confidences. - a threshold used to filter boxes by score. - a threshold used in non maximum suppression. - the kept indices of bboxes after NMS. - a coefficient in adaptive threshold formula - if `>0`, keep at most @p top_k picked indices. - - - - Release a Myriad device is binded by OpenCV. - - Single Myriad device cannot be shared across multiple processes which uses Inference Engine's Myriad plugin. - - - - - - This class allows to create and manipulate comprehensive artificial neural networks. - - - Neural network is presented as directed acyclic graph(DAG), where vertices are Layer instances, - and edges specify relationships between layers inputs and outputs. - - Each network layer has unique integer id and unique string name inside its network. - LayerId can store either layer name or layer id. - This class supports reference counting of its instances, i.e.copies point to the same instance. - - - - - - Default constructor. - - - - - - - - - - - - - - - Create a network from Intel's Model Optimizer intermediate representation (IR). - Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine backend. - - XML configuration file with network's topology. - Binary file with trained weights. - - - - - Reads a network model stored in Darknet (https://pjreddie.com/darknet/) model files. - - path to the .cfg file with text description of the network architecture. - path to the .weights file with learned network. - Network object that ready to do forward, throw an exception in failure cases. - This is shortcut consisting from DarknetImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files from memory. - - A buffer contains a content of .cfg file with text description of the network architecture. - A buffer contains a content of .weights file with learned network. - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files from memory. - - A buffer contains a content of .cfg file with text description of the network architecture. - A buffer contains a content of .weights file with learned network. - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files. - - path to the .prototxt file with text description of the network architecture. - path to the .caffemodel file with learned network. - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model in memory. - - buffer containing the content of the .prototxt file - buffer containing the content of the .caffemodel file - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Caffe model files from memory. - - buffer containing the content of the .prototxt file - buffer containing the content of the .caffemodel file - - This is shortcut consisting from createCaffeImporter and Net::populateNet calls. - - - - Reads a network model stored in Tensorflow model file. - - path to the .pb file with binary protobuf description of the network architecture - path to the .pbtxt file that contains text graph definition in protobuf format. - Resulting Net object is built by text graph using weights from a binary one that - let us make it more flexible. - This is shortcut consisting from createTensorflowImporter and Net::populateNet calls. - - - - Reads a network model stored in Tensorflow model from memory. - - buffer containing the content of the pb file - buffer containing the content of the pbtxt file (optional) - - This is shortcut consisting from createTensorflowImporter and Net::populateNet calls. - - - - Reads a network model stored in Tensorflow model from memory. - - buffer containing the content of the pb file - buffer containing the content of the pbtxt file (optional) - - This is shortcut consisting from createTensorflowImporter and Net::populateNet calls. - - - - Reads a network model stored in Torch model file. - - - - - This is shortcut consisting from createTorchImporter and Net::populateNet calls. - - - - Read deep learning network represented in one of the supported formats. - - This function automatically detects an origin framework of trained model - and calls an appropriate function such @ref readNetFromCaffe, @ref readNetFromTensorflow, - - Binary file contains trained weights. The following file - * extensions are expected for models from different frameworks: - * * `*.caffemodel` (Caffe, http://caffe.berkeleyvision.org/) - * * `*.pb` (TensorFlow, https://www.tensorflow.org/) - * * `*.t7` | `*.net` (Torch, http://torch.ch/) - * * `*.weights` (Darknet, https://pjreddie.com/darknet/) - * * `*.bin` (DLDT, https://software.intel.com/openvino-toolkit) - Text file contains network configuration. It could be a - * file with the following extensions: - * * `*.prototxt` (Caffe, http://caffe.berkeleyvision.org/) - * * `*.pbtxt` (TensorFlow, https://www.tensorflow.org/) - * * `*.cfg` (Darknet, https://pjreddie.com/darknet/) - * * `*.xml` (DLDT, https://software.intel.com/openvino-toolkit) - Explicit framework name tag to determine a format. - - - - - Load a network from Intel's Model Optimizer intermediate representation. - Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine backend. - - XML configuration file with network's topology. - Binary file with trained weights. - - - - - Reads a network model ONNX https://onnx.ai/ - - path to the .onnx file with text description of the network architecture. - Network object that ready to do forward, throw an exception in failure cases. - - - - Reads a network model ONNX https://onnx.ai/ from memory - - memory of the first byte of the buffer. - Network object that ready to do forward, throw an exception in failure cases. - - - - Reads a network model ONNX https://onnx.ai/ from memory - - memory of the first byte of the buffer. - Network object that ready to do forward, throw an exception in failure cases. - - - - Returns true if there are no layers in the network. - - - - - - Dump net to String. - Call method after setInput(). To see correct backend, target and fusion run after forward(). - - String with structure, hyperparameters, backend, target and fusion - - - - Dump net structure, hyperparameters, backend, target and fusion to dot file - - path to output file with .dot extension - - - - Converts string name of the layer to the integer identifier. - - - id of the layer, or -1 if the layer wasn't found. - - - - - - - - - - Connects output of the first layer to input of the second layer. - - descriptor of the first layer output. - descriptor of the second layer input. - - - - Connects #@p outNum output of the first layer to #@p inNum input of the second layer. - - identifier of the first layer - identifier of the second layer - number of the first layer output - number of the second layer input - - - - Sets outputs names of the network input pseudo layer. - - - - * Each net always has special own the network input pseudo layer with id=0. - * This layer stores the user blobs only and don't make any computations. - * In fact, this layer provides the only way to pass user data into the network. - * As any other layer, this layer can label its outputs and this function provides an easy way to do this. - - - - - Runs forward pass to compute output of layer with name @p outputName. - By default runs forward pass for the whole network. - - name for layer which output is needed to get - blob for first output of specified layer. - - - - Runs forward pass to compute output of layer with name @p outputName. - - contains all output blobs for specified layer. - name for layer which output is needed to get. - If outputName is empty, runs forward pass for the whole network. - - - - Runs forward pass to compute outputs of layers listed in @p outBlobNames. - - contains blobs for first outputs of specified layers. - names for layers which outputs are needed to get - - - - Compile Halide layers. - Schedule layers that support Halide backend. Then compile them for - specific target.For layers that not represented in scheduling file - or if no manual scheduling used at all, automatic scheduling will be applied. - - Path to YAML file with scheduling directives. - - - - Ask network to use specific computation backend where it supported. - - backend identifier. - - - - Ask network to make computations on specific target device. - - target identifier. - - - - Sets the new value for the layer output blob - - new blob. - descriptor of the updating layer output blob. - - connect(String, String) to know format of the descriptor. - If updating blob is not empty then @p blob must have the same shape, - because network reshaping is not implemented yet. - - - - - Returns indexes of layers with unconnected outputs. - - - - - - Returns names of layers with unconnected outputs. - - - - - - Enables or disables layer fusion in the network. - - true to enable the fusion, false to disable. The fusion is enabled by default. - - - - Returns overall time for inference and timings (in ticks) for layers. - Indexes in returned vector correspond to layers ids.Some layers can be fused with others, - in this case zero ticks count will be return for that skipped layers. - - vector for tick timings for all layers. - overall ticks for model inference. - - - - Enum of target devices for computations. - - - - - FPGA device with CPU fallbacks using Inference Engine's Heterogeneous plugin. - - - - - A class to upscale images via convolutional neural networks. - The following four models are implemented: - - edsr - - espcn - - fsrcnn - - lapsrn - - - - - - Empty constructor - - - - - - Constructor which immediately sets the desired model - - String containing one of the desired models: - - edsr - - espcn - - fsrcnn - - lapsrn - Integer specifying the upscale factor - - - - - - - - - - - - - - Read the model from the given path - - Path to the model file. - - - - - Read the model from the given path - - Path to the model weights file. - Path to the model definition file. - - - - - Set desired model - - String containing one of the desired models: - - edsr - - espcn - - fsrcnn - - lapsrn - Integer specifying the upscale factor - - - - - Ask network to use specific computation backend where it supported. - - backend identifier. - - - - Ask network to make computations on specific target device. - - target identifier. - - - - Upsample via neural network - - Image to upscale - Destination upscaled image - - - - Upsample via neural network of multiple outputs - - Image to upscale - Destination upscaled images - Scaling factors of the output nodes - Names of the output nodes in the neural network - - - - Returns the scale factor of the model - - Current scale factor. - - - - Returns the scale factor of the model - - Current algorithm. - - - - Abstract base class for all facemark models. - - All facemark models in OpenCV are derived from the abstract base class Facemark, which - provides a unified access to all facemark algorithms in OpenCV. - To utilize this API in your program, please take a look at the @ref tutorial_table_of_content_facemark - - - - - A function to load the trained model before the fitting process. - - A string represent the filename of a trained model. - - - - Trains a Facemark algorithm using the given dataset. - - Input image. - Output of the function which represent region of interest of the detected faces. Each face is stored in cv::Rect container. - The detected landmark points for each faces. - - - - - - - - - - - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - Constructor - - - - - Releases managed resources - - - - - filename of the model - - - - - - - - - - - - - - - - - - - - show the training print-out - - - - - flag to save the trained model or not - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - Constructor - - - - - Releases managed resources - - - - - offset for the loaded face landmark points - - - - - filename of the face detector model - - - - - show the training print-out - - - - - number of landmark points - - - - - multiplier for augment the training data - - - - - number of refinement stages - - - - - number of tree in the model for each landmark point refinement - - - - - the depth of decision tree, defines the size of feature - - - - - overlap ratio for training the LBF feature - - - - - filename where the trained model will be saved - - - - - flag to save the trained model or not - - - - - seed for shuffling the training data - - - - - - - - - - - - - - - index of facemark points on pupils of left and right eye - - - - - index of facemark points on pupils of left and right eye - - - - - - - - - - - - - - - - - - - - - - base for two FaceRecognizer classes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Training and prediction must be done on grayscale images, use cvtColor to convert between the - color spaces. - - **THE EIGENFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL SIZE. - ** (caps-lock, because I got so many mails asking for this). You have to make sure your - input data has the correct shape, else a meaningful exception is thrown.Use resize to resize the images. - - This model does not support updating. - - - - - - - - - - - - - - - Releases managed resources - - - - - Training and prediction must be done on grayscale images, use cvtColor to convert between the - color spaces. - - **THE EIGENFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL SIZE. - ** (caps-lock, because I got so many mails asking for this). You have to make sure your - input data has the correct shape, else a meaningful exception is thrown.Use resize to resize the images. - - This model does not support updating. - - The number of components (read: Eigenfaces) kept for this Principal Component Analysis. - As a hint: There's no rule how many components (read: Eigenfaces) should be kept for good reconstruction capabilities. - It is based on your input data, so experiment with the number. Keeping 80 components should almost always be sufficient. - The threshold applied in the prediction. - - - - - Abstract base class for all face recognition models. - All face recognition models in OpenCV are derived from the abstract base class FaceRecognizer, which - provides a unified access to all face recongition algorithms in OpenCV. - - - - - Trains a FaceRecognizer with given data and associated labels. - - - - - - - Updates a FaceRecognizer with given data and associated labels. - - - - - - - Gets a prediction from a FaceRecognizer. - - - - - - - Predicts the label and confidence for a given sample. - - - - - - - - Serializes this object to a given filename. - - - - - - Deserializes this object from a given filename. - - - - - - - Serializes this object to a given cv::FileStorage. - - - - - - - Deserializes this object from a given cv::FileNode. - - - - - - Sets string info for the specified model's label. - The string info is replaced by the provided value if it was set before for the specified label. - - - - - - - Gets string information by label. - If an unknown label id is provided or there is no label information associated with the specified - label id the method returns an empty string. - - - - - - - Gets vector of labels by string. - The function searches for the labels containing the specified sub-string in the associated string info. - - - - - - - threshold parameter accessor - required for default BestMinDist collector - - - - - - Sets threshold of model - - - - - - - Training and prediction must be done on grayscale images, use cvtColor to convert between the color spaces. - - **THE FISHERFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL SIZE. - ** (caps-lock, because I got so many mails asking for this). You have to make sure your input data - has the correct shape, else a meaningful exception is thrown.Use resize to resize the images. - - This model does not support updating. - - - - - - - - - - - - - - - Releases managed resources - - - - - Training and prediction must be done on grayscale images, use cvtColor to convert between the color spaces. - - **THE FISHERFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL SIZE. - ** (caps-lock, because I got so many mails asking for this). You have to make sure your input data - has the correct shape, else a meaningful exception is thrown.Use resize to resize the images. - - This model does not support updating. - - The number of components (read: Fisherfaces) kept for this Linear Discriminant Analysis - with the Fisherfaces criterion. It's useful to keep all components, that means the number of your classes c - (read: subjects, persons you want to recognize). If you leave this at the default (0) or set it - to a value less-equal 0 or greater (c-1), it will be set to the correct number (c-1) automatically. - The threshold applied in the prediction. If the distance to the nearest neighbor - is larger than the threshold, this method returns -1. - - - - - - The Circular Local Binary Patterns (used in training and prediction) expect the data given as - grayscale images, use cvtColor to convert between the color spaces. - This model supports updating. - - - - - - - - - - - - - - - Releases managed resources - - - - - The Circular Local Binary Patterns (used in training and prediction) expect the data given as - grayscale images, use cvtColor to convert between the color spaces. - This model supports updating. - - The radius used for building the Circular Local Binary Pattern. The greater the radius, the - The number of sample points to build a Circular Local Binary Pattern from. - An appropriate value is to use `8` sample points.Keep in mind: the more sample points you include, the higher the computational cost. - The number of cells in the horizontal direction, 8 is a common value used in publications. - The more cells, the finer the grid, the higher the dimensionality of the resulting feature vector. - The number of cells in the vertical direction, 8 is a common value used in publications. - The more cells, the finer the grid, the higher the dimensionality of the resulting feature vector. - The threshold applied in the prediction. If the distance to the nearest neighbor - is larger than the threshold, this method returns -1. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Detects corners using the AGAST algorithm - - - - - Constructor - - - - - The AgastFeatureDetector constructor - - threshold on difference between intensity of the central pixel - and pixels of a circle around this pixel. - if true, non-maximum suppression is applied to detected corners (keypoints). - - - - - Releases managed resources - - - - - threshold on difference between intensity of the central pixel and pixels of a circle around this pixel. - - - - - if true, non-maximum suppression is applied to detected corners (keypoints). - - - - - type one of the four neighborhoods as defined in the paper - - - - - AGAST type one of the four neighborhoods as defined in the paper - - - - - Class implementing the AKAZE keypoint detector and descriptor extractor, - described in @cite ANB13 - - - AKAZE descriptors can only be used with KAZE or AKAZE keypoints. - Try to avoid using *extract* and *detect* instead of *operator()* due to performance reasons. - .. [ANB13] Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale - Spaces. Pablo F. Alcantarilla, Jesús Nuevo and Adrien Bartoli. - In British Machine Vision Conference (BMVC), Bristol, UK, September 2013. - - - - - Constructor - - - - - The AKAZE constructor - - Type of the extracted descriptor: DESCRIPTOR_KAZE, - DESCRIPTOR_KAZE_UPRIGHT, DESCRIPTOR_MLDB or DESCRIPTOR_MLDB_UPRIGHT. - Size of the descriptor in bits. 0 -> Full size - Number of channels in the descriptor (1, 2, 3) - Detector response threshold to accept point - Maximum octave evolution of the image - Default number of sublevels per scale level - Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or DIFF_CHARBONNIER - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Brute-force descriptor matcher. - For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. - - - - - - - - - - - - Creates instance by cv::Ptr<T> - - - - - Creates instance by raw pointer T* - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - Releases managed resources - - - - - Return true if the matcher supports mask in match methods. - - - - - - Brute-force descriptor matcher. - For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. - - - - - The constructor. - - Descriptor extractor that is used to compute descriptors for an input image and its keypoints. - Descriptor matcher that is used to find the nearest word of the trained vocabulary for each keypoint descriptor of the image. - - - - The constructor. - - Descriptor matcher that is used to find the nearest word of the trained vocabulary for each keypoint descriptor of the image. - - - - Releases unmanaged resources - - - - - Sets a visual vocabulary. - - Vocabulary (can be trained using the inheritor of BOWTrainer ). - Each row of the vocabulary is a visual word(cluster center). - - - - Returns the set vocabulary. - - - - - - Computes an image descriptor using the set visual vocabulary. - - Image, for which the descriptor is computed. - Keypoints detected in the input image. - Computed output image descriptor. - pointIdxsOfClusters Indices of keypoints that belong to the cluster. - This means that pointIdxsOfClusters[i] are keypoint indices that belong to the i -th cluster(word of vocabulary) returned if it is non-zero. - Descriptors of the image keypoints that are returned if they are non-zero. - - - - Computes an image descriptor using the set visual vocabulary. - - Computed descriptors to match with vocabulary. - Computed output image descriptor. - Indices of keypoints that belong to the cluster. - This means that pointIdxsOfClusters[i] are keypoint indices that belong to the i -th cluster(word of vocabulary) returned if it is non-zero. - - - - Computes an image descriptor using the set visual vocabulary. - - Image, for which the descriptor is computed. - Keypoints detected in the input image. - Computed output image descriptor. - - - - Returns an image descriptor size if the vocabulary is set. Otherwise, it returns 0. - - - - - - Returns an image descriptor type. - - - - - - Brute-force descriptor matcher. - For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. - - - - - The constructor. - - - - - - - - - Releases unmanaged resources - - - - - Clusters train descriptors. - - - - - - Clusters train descriptors. - - Descriptors to cluster. Each row of the descriptors matrix is a descriptor. Descriptors are not added to the inner train descriptor set. - The vocabulary consists of cluster centers. So, this method returns the vocabulary. In the first variant of the method, train descriptors stored in the object - are clustered.In the second variant, input descriptors are clustered. - - - - - Brute-force descriptor matcher. - For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. - - - - - Adds descriptors to a training set. - - descriptors Descriptors to add to a training set. Each row of the descriptors matrix is a descriptor. - The training set is clustered using clustermethod to construct the vocabulary. - - - - Returns a training set of descriptors. - - - - - - Returns the count of all descriptors stored in the training set. - - - - - - - - - - - Clusters train descriptors. - - - - - - Clusters train descriptors. - - Descriptors to cluster. Each row of the descriptors matrix is a descriptor. Descriptors are not added to the inner train descriptor set. - The vocabulary consists of cluster centers. So, this method returns the vocabulary. In the first variant of the method, train descriptors stored in the object - are clustered.In the second variant, input descriptors are clustered. - - - - - BRISK implementation - - - - - - - - - Construct from native cv::Ptr<T>* - - - - - - The BRISK constructor - - AGAST detection threshold score. - detection octaves. Use 0 to do single scale. - apply this scale to the pattern used for sampling the neighbourhood of a keypoint. - - - - The BRISK constructor for a custom pattern - - defines the radii (in pixels) where the samples around a keypoint are taken (for keypoint scale 1). - defines the number of sampling points on the sampling circle. Must be the same size as radiusList.. - threshold for the short pairings used for descriptor formation (in pixels for keypoint scale 1). - threshold for the long pairings used for orientation determination (in pixels for keypoint scale 1). - index remapping of the bits. - - - - - The BRISK constructor for a custom pattern, detection threshold and octaves - - AGAST detection threshold score. - detection octaves. Use 0 to do single scale. - defines the radii (in pixels) where the samples around a keypoint are taken (for keypoint scale 1). - defines the number of sampling points on the sampling circle. Must be the same size as radiusList.. - threshold for the short pairings used for descriptor formation (in pixels for keypoint scale 1). - threshold for the long pairings used for orientation determination (in pixels for keypoint scale 1). - index remapping of the bits. - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - Create descriptor matcher by type name. - - - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Creates instance from raw pointer T* - - - - - - Releases managed resources - - - - - Add descriptors to train descriptor collection. - - Descriptors to add. Each descriptors[i] is a descriptors set from one image. - - - - Get train descriptors collection. - - - - - - Clear train descriptors collection. - - - - - Return true if there are not train descriptors in collection. - - - - - - Return true if the matcher supports mask in match methods. - - - - - - Train matcher (e.g. train flann index). - In all methods to match the method train() is run every time before matching. - Some descriptor matchers (e.g. BruteForceMatcher) have empty implementation - of this method, other matchers really train their inner structures - (e.g. FlannBasedMatcher trains flann::Index). So nonempty implementation - of train() should check the class object state and do traing/retraining - only if the state requires that (e.g. FlannBasedMatcher trains flann::Index - if it has not trained yet or if new descriptors have been added to the train collection). - - - - - Find one best match for each query descriptor (if mask is empty). - - - - - - - - - Find k best matches for each query descriptor (in increasing order of distances). - compactResult is used when mask is not empty. If compactResult is false matches - vector will have the same size as queryDescriptors rows. If compactResult is true - matches vector will not contain matches for fully masked out query descriptors. - - - - - - - - - - - Find best matches for each query descriptor which have distance less than - maxDistance (in increasing order of distances). - - - - - - - - - - - Find one best match for each query descriptor (if mask is empty). - - - - - - - - Find k best matches for each query descriptor (in increasing order of distances). - compactResult is used when mask is not empty. If compactResult is false matches - vector will have the same size as queryDescriptors rows. If compactResult is true - matches vector will not contain matches for fully masked out query descriptors. - - - - - - - - - - Find best matches for each query descriptor which have distance less than - maxDistance (in increasing order of distances). - - - - - - - - - - cv::AKAZE descriptor type - - - - - Upright descriptors, not invariant to rotation - - - - - - - - - - - - - - - Upright descriptors, not invariant to rotation - - - - - - - - - - Output image matrix will be created (Mat::create), - i.e. existing memory of output image may be reused. - Two source image, matches and single keypoints will be drawn. - For each keypoint only the center point will be drawn (without - the circle around keypoint with keypoint size and orientation). - - - - - Output image matrix will not be created (Mat::create). - Matches will be drawn on existing content of output image. - - - - - Single keypoints will not be drawn. - - - - - For each keypoint the circle around keypoint with keypoint size and - orientation will be drawn. - - - - - AGAST type one of the four neighborhoods as defined in the paper - - - - - cv::KAZE diffusivity type - - - - - - - - - - - - - - - - - - - - - - - - - cv::ORB score flags - - - - - - - - - - - - - - - Detects corners using FAST algorithm by E. Rosten - - - - - Constructor - - - - - Constructs FastFeatureDetector - - threshold on difference between intensity of the central pixel and pixels of a circle around this pixel. - if true, non-maximum suppression is applied to detected corners (keypoints). - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - Abstract base class for 2D image feature detectors and descriptor extractors - - - - - - - - - - - - - - - - - - - - - - - Return true if detector object is empty - - - - - - Detect keypoints in an image. - - The image. - Mask specifying where to look for keypoints (optional). - Must be a char matrix with non-zero values in the region of interest. - The detected keypoints. - - - - Detect keypoints in an image. - - The image. - Mask specifying where to look for keypoints (optional). - Must be a char matrix with non-zero values in the region of interest. - The detected keypoints. - - - - Detect keypoints in an image set. - - Image collection. - Masks for image set. masks[i] is a mask for images[i]. - Collection of keypoints detected in an input images. keypoints[i] is a set of keypoints detected in an images[i]. - - - - Compute the descriptors for a set of keypoints in an image. - - The image. - The input keypoints. Keypoints for which a descriptor cannot be computed are removed. - Computed descriptors. Row i is the descriptor for KeyPoint i.param> - - - - Compute the descriptors for a keypoints collection detected in image collection. - - Image collection. - Input keypoints collection. keypoints[i] is keypoints detected in images[i]. - Keypoints for which a descriptor cannot be computed are removed. - Descriptor collection. descriptors[i] are descriptors computed for set keypoints[i]. - - - - Detects keypoints and computes the descriptors - - - - - - - - - - - - - - - - - - - - - - - - - - - - Brute-force descriptor matcher. - For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. - - - - - - - - - - - - Creates instance by cv::Ptr<T> - - - - - Creates instance by raw pointer T* - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - Releases managed resources - - - - - Return true if the matcher supports mask in match methods. - - - - - - Add descriptors to train descriptor collection. - - Descriptors to add. Each descriptors[i] is a descriptors set from one image. - - - - Clear train descriptors collection. - - - - - Train matcher (e.g. train flann index). - In all methods to match the method train() is run every time before matching. - Some descriptor matchers (e.g. BruteForceMatcher) have empty implementation - of this method, other matchers really train their inner structures - (e.g. FlannBasedMatcher trains flann::Index). So nonempty implementation - of train() should check the class object state and do traing/retraining - only if the state requires that (e.g. FlannBasedMatcher trains flann::Index - if it has not trained yet or if new descriptors have been added to the train collection). - - - - - Good Features To Track Detector - - - - - Construct GFTT processor - - - - - - - - - - - Constructor - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Class implementing the KAZE keypoint detector and descriptor extractor - - - - - Constructor - - - - - The KAZE constructor - - Set to enable extraction of extended (128-byte) descriptor. - Set to enable use of upright descriptors (non rotation-invariant). - Detector response threshold to accept point - Maximum octave evolution of the image - Default number of sublevels per scale level - Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or DIFF_CHARBONNIER - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A class filters a vector of keypoints. - - - - - Remove keypoints within borderPixels of an image edge. - - - - - - - - - Remove keypoints of sizes out of range. - - - - - - - - - Remove keypoints from some image by mask for pixels of this image. - - - - - - - - Remove duplicated keypoints. - - - - - - - Remove duplicated keypoints and sort the remaining keypoints - - - - - - - Retain the specified number of the best keypoints (according to the response) - - - - - - - - Maximal Stable Extremal Regions class - - - - - Creates instance by raw pointer cv::MSER* - - - - - Creates MSER parameters - - delta, in the code, it compares (size_{i}-size_{i-delta})/size_{i-delta} - prune the area which smaller than min_area - prune the area which bigger than max_area - prune the area have simliar size to its children - trace back to cut off mser with diversity < min_diversity - for color image, the evolution steps - the area threshold to cause re-initialize - ignore too small margin - the aperture size for edge blur - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - Detect MSER regions - - input image (8UC1, 8UC3 or 8UC4, must be greater or equal than 3x3) - resulting list of point sets - resulting bounding boxes - - - - Class implementing the ORB (*oriented BRIEF*) keypoint detector and descriptor extractor. - - described in @cite RRKB11 . The algorithm uses FAST in pyramids to detect stable keypoints, selects - the strongest features using FAST or Harris response, finds their orientation using first-order - moments and computes the descriptors using BRIEF (where the coordinates of random point pairs (or - k-tuples) are rotated according to the measured orientation). - - - - - - - - - - The ORB constructor - - The maximum number of features to retain. - Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical - pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor - will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor - will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer. - The number of pyramid levels. The smallest level will have linear size equal to - input_image_linear_size/pow(scaleFactor, nlevels - firstLevel). - This is size of the border where the features are not detected. It should - roughly match the patchSize parameter. - The level of pyramid to put source image to. Previous layers are filled - with upscaled source image. - The number of points that produce each element of the oriented BRIEF descriptor. The - default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, - so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 - random points (of course, those point coordinates are random, but they are generated from the - pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel - rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such - output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, - denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each - bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3). - The default HARRIS_SCORE means that Harris algorithm is used to rank features - (the score is written to KeyPoint::score and is used to retain best nfeatures features); - FAST_SCORE is alternative value of the parameter that produces slightly less stable keypoints, - but it is a little faster to compute. - size of the patch used by the oriented BRIEF descriptor. Of course, on smaller - pyramid layers the perceived image area covered by a feature will be larger. - the fast threshold - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SIFT implementation. - - - - - Creates instance by raw pointer cv::SIFT* - - - - - The SIFT constructor. - - The number of best features to retain. - The features are ranked by their scores (measured in SIFT algorithm as the local contrast) - The number of layers in each octave. 3 is the value used in D. Lowe paper. - The number of octaves is computed automatically from the image resolution. - The contrast threshold used to filter out weak features in semi-uniform - (low-contrast) regions. The larger the threshold, the less features are produced by the detector. - The threshold used to filter out edge-like features. Note that the its meaning is - different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are filtered out (more features are retained). - The sigma of the Gaussian applied to the input image at the octave #0. - If your image is captured with a weak camera with soft lenses, you might want to reduce the number. - - - - Releases managed resources - - - - - Class for extracting blobs from an image. - - - - - SimpleBlobDetector parameters - - - - - - - - - - Constructor - - - - - Construct a SimpleBlobDetector instance - - - - - - Releases managed resources - - - - - The algorithm to use for selecting the initial centers when performing a k-means clustering step. - - - - - picks the initial cluster centers randomly - [flann_centers_init_t::CENTERS_RANDOM] - - - - - picks the initial centers using Gonzales’ algorithm - [flann_centers_init_t::CENTERS_GONZALES] - - - - - picks the initial centers using the algorithm suggested in [arthur_kmeanspp_2007] - [flann_centers_init_t::CENTERS_KMEANSPP] - - - - - The FLANN nearest neighbor index class. - - - - - Constructs a nearest neighbor search index for a given dataset. - - features – Matrix of type CV _ 32F containing the features(points) to index. The size of the matrix is num _ features x feature _ dimensionality. - Structure containing the index parameters. The type of index that will be constructed depends on the type of this parameter. - - - - - Releases unmanaged resources - - - - - Performs a K-nearest neighbor search for multiple query points. - - The query points, one per row - Indices of the nearest neighbors found - Distances to the nearest neighbors found - Number of nearest neighbors to search for - Search parameters - - - - Performs a K-nearest neighbor search for multiple query points. - - The query points, one per row - Indices of the nearest neighbors found - Distances to the nearest neighbors found - Number of nearest neighbors to search for - Search parameters - - - - Performs a K-nearest neighbor search for multiple query points. - - The query points, one per row - Indices of the nearest neighbors found - Distances to the nearest neighbors found - Number of nearest neighbors to search for - Search parameters - - - - Performs a radius nearest neighbor search for a given query point. - - The query point - Indices of the nearest neighbors found - Distances to the nearest neighbors found - Number of nearest neighbors to search for - - Search parameters - - - - Performs a radius nearest neighbor search for a given query point. - - The query point - Indices of the nearest neighbors found - Distances to the nearest neighbors found - Number of nearest neighbors to search for - - Search parameters - - - - Performs a radius nearest neighbor search for a given query point. - - The query point - Indices of the nearest neighbors found - Distances to the nearest neighbors found - Number of nearest neighbors to search for - - Search parameters - - - - Saves the index to a file. - - The file to save the index to - - - - hierarchical k-means tree. - - - - - - - Is a number between 0 and 1 specifying the percentage of the approximate nearest-neighbor searches that return the exact nearest-neighbor. - Using a higher value for this parameter gives more accurate results, but the search takes longer. The optimum value usually depends on the application. - Specifies the importance of the index build time raported to the nearest-neighbor search time. - In some applications it’s acceptable for the index build step to take a long time if the subsequent searches in the index can be performed very fast. - In other applications it’s required that the index be build as fast as possible even if that leads to slightly longer search times. - Is used to specify the tradeoff between time (index build time and search time) and memory used by the index. - A value less than 1 gives more importance to the time spent and a value greater than 1 gives more importance to the memory usage. - Is a number between 0 and 1 indicating what fraction of the dataset to use in the automatic parameter configuration algorithm. - Running the algorithm on the full dataset gives the most accurate results, but for very large datasets can take longer than desired. - In such case using just a fraction of the data helps speeding up this algorithm while still giving good approximations of the optimum parameters. - - - - - - - - - When using a parameters object of this type the index created combines the randomized kd-trees and the hierarchical k-means tree. - - - - - - - The number of parallel kd-trees to use. Good values are in the range [1..16] - The branching factor to use for the hierarchical k-means tree - The maximum number of iterations to use in the k-means clustering stage when building the k-means tree. A value of -1 used here means that the k-means clustering should be iterated until convergence - The algorithm to use for selecting the initial centers when performing a k-means clustering step. - This parameter (cluster boundary index) influences the way exploration is performed in the hierarchical kmeans tree. When cb_index is zero the next kmeans domain to be explored is choosen to be the one with the closest center. A value greater then zero also takes into account the size of the domain. - - - - - - - - - - - - - - - - - - - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - When passing an object of this type the index constructed will consist of a set - of randomized kd-trees which will be searched in parallel. - - - - - Constructor - - The number of parallel kd-trees to use. Good values are in the range [1..16] - - - - - - - - - When passing an object of this type the index constructed will be a hierarchical k-means tree. - - - - - Constructor - - The branching factor to use for the hierarchical k-means tree - The maximum number of iterations to use in the k-means clustering stage when building the k-means tree. A value of -1 used here means that the k-means clustering should be iterated until convergence - The algorithm to use for selecting the initial centers when performing a k-means clustering step. - This parameter (cluster boundary index) influences the way exploration is performed in the hierarchical kmeans tree. When cb_index is zero the next kmeans domain to be explored is choosen to be the one with the closest center. A value greater then zero also takes into account the size of the domain. - - - - - - - - - the index will perform a linear, brute-force search. - - - - - Constructor - - - - - - - - - - When using a parameters object of this type the index created uses multi-probe LSH (by Multi-Probe LSH: Efficient Indexing for High-Dimensional Similarity Search by Qin Lv, William Josephson, Zhe Wang, Moses Charikar, Kai Li., Proceedings of the 33rd International Conference on Very Large Data Bases (VLDB). Vienna, Austria. September 2007) - - - - - Constructor - - The number of hash tables to use (between 10 and 30 usually). - The size of the hash key in bits (between 10 and 20 usually). - The number of bits to shift to check for neighboring buckets (0 is regular LSH, 2 is recommended). - - - - - - - - - This object type is used for loading a previously saved index from the disk. - - - - - Constructor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Trackbar that is shown on OpenCV Window - - - - - Name of this trackbar - - - - - Name of parent window - - - - - - - - - - Gets or sets a numeric value that represents the current position of the scroll box on the track bar. - - - - - Result value of cv::createTrackbar - - - - - Constructor (value=0, max=100) - - Trackbar name - Window name - Callback handler - - - - Constructor - - Trackbar name - Window name - Initial slider position - The upper limit of the range this trackbar is working with. - Callback handler - - - - Releases unmanaged resources - - - - - Sets the trackbar maximum position. - The function sets the maximum position of the specified trackbar in the specified window. - - New maximum position. - - - - Sets the trackbar minimum position. - The function sets the minimum position of the specified trackbar in the specified window. - - New minimum position. - - - - Button type flags (cv::createButton) - - - - - The button will be a push button. - - - - - The button will be a checkbox button. - - - - - The button will be a radiobox button. The radiobox on the same buttonbar (same line) are exclusive; one on can be select at the time. - - - - - Mouse Event Flags see cv::MouseCallback - - - - - indicates that the left mouse button is down. - - - - - indicates that the right mouse button is down. - - - - - indicates that the middle mouse button is down. - - - - - indicates that CTRL Key is pressed. - - - - - indicates that SHIFT Key is pressed. - - - - - indicates that ALT Key is pressed. - - - - - Mouse Events - - - - - indicates that the mouse pointer has moved over the window. - - - - - indicates that the left mouse button is pressed. - - - - - indicates that the right mouse button is pressed. - - - - - indicates that the middle mouse button is pressed. - - - - - indicates that left mouse button is released. - - - - - indicates that right mouse button is released. - - - - - indicates that middle mouse button is released. - - - - - indicates that left mouse button is double clicked. - - - - - indicates that right mouse button is double clicked. - - - - - indicates that middle mouse button is double clicked. - - - - - positive and negative values mean forward and backward scrolling, respectively. - - - - - positive and negative values mean right and left scrolling, respectively. - - - - - Flags for cv::namedWindow - - - - - the user can resize the window (no constraint) / - also use to switch a fullscreen window to a normal size - - - - - the user cannot resize the window, the size is constrainted by the image displayed. - - - - - window with opengl support - - - - - change the window to fullscreen - - - - - the image expends as much as it can (no ratio constraint) - - - - - the ratio of the image is respected - - - - - status bar and tool bar - - - - - old fashious way - - - - - Property identifiers for cvGetWindowProperty/cvSetWindowProperty - - - - - fullscreen property (can be WINDOW_NORMAL or WINDOW_FULLSCREEN) - - - - - autosize property (can be WINDOW_NORMAL or WINDOW_AUTOSIZE) - - - - - window's aspect ration (can be set to WINDOW_FREERATIO or WINDOW_KEEPRATIO) - - - - - opengl support - - - - - checks whether the window exists and is visible - - - - - property to toggle normal window being topmost or not - - - - - Delegate to be called every time mouse event occurs in the specified window. - - one of MouseEventTypes - x-coordinates of mouse pointer in image coordinates - y-coordinates of mouse pointer in image coordinates - a combination of MouseEventFlags - - - - - Delegate to be called every time the slider changes the position. - - - - - - - - - - - - - Wrapper of HighGUI window - - - - - Creates a window with a random name - - - - - Creates a window - - Name of the window which is used as window identifier and appears in the window caption. - - - - Creates a window - - Name of the window which is used as window identifier and appears in the window caption. - Flags of the window. Currently the only supported flag is WindowMode.AutoSize. - If it is set, window size is automatically adjusted to fit the displayed image (see cvShowImage), while user can not change the window size manually. - - - - Creates a window - - Name of the window which is used as window identifier and appears in the window caption. - Image to be shown. - - - - Creates a window - - Name of the window which is used as window identifier and appears in the window caption. - Image to be shown. - Flags of the window. Currently the only supported flag is WindowMode.AutoSize. - If it is set, window size is automatically adjusted to fit the displayed image (see cvShowImage), while user can not change the window size manually. - - - - ウィンドウ名が指定されなかったときに、適当な名前を作成して返す. - - - - - - Releases managed resources - - - - - Destroys this window. - - - - - Destroys all the opened HighGUI windows. - - - - - Gets or sets an image to be shown - - - - - Gets window name - - - - - - - - - - Creates the trackbar and attaches it to this window - - Name of created trackbar. - the function to be called every time the slider changes the position. This function should be prototyped as void Foo(int); - - - - - Creates the trackbar and attaches it to this window - - Name of created trackbar. - The position of the slider - Maximal position of the slider. Minimal position is always 0. - the function to be called every time the slider changes the position. This function should be prototyped as void Foo(int); - - - - - Display text on the window's image as an overlay for delay milliseconds. This is not editing the image's data. The text is display on the top of the image. - - Overlay text to write on the window’s image - Delay to display the overlay text. If this function is called before the previous overlay text time out, the timer is restarted and the text updated. - If this value is zero, the text never disappears. - - - - - - Text to write on the window’s statusbar - Delay to display the text. If this function is called before the previous text time out, the timer is restarted and the text updated. If this value is zero, the text never disapers. - - - - Get Property of the window - - Property identifier - Value of the specified property - - - - Sets window position - - New x coordinate of top-left corner - New y coordinate of top-left corner - - - - Sets window size - - New width - New height - - - - Set Property of the window - - Property identifier - New value of the specified property - - - - Shows the image in this window - - Image to be shown. - - - - Shows the image in this window - - Image to be shown. - - - - get native window handle (HWND in case of Win32 and Widget in case of X Window) - - - - - Waits for a pressed key - - Delay in milliseconds. - Key code - - - - Waits for a pressed key. - Similar to #waitKey, but returns full key code. - Key code is implementation specific and depends on used backend: QT/GTK/Win32/etc - - Delay in milliseconds. 0 is the special value that means ”forever” - Returns the code of the pressed key or -1 if no key was pressed before the specified time had elapsed. - - - - - - - - - - - - - - - - - Retrieves a created window by name - - - - - - - Sets the callback function for mouse events occuting within the specified window. - - Reference to the function to be called every time mouse event occurs in the specified window. - - - - - - - - - - - - - - - - - - - - - - - - - Specifies colorness and Depth of the loaded image - - - - - If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). - - - - - If set, always convert image to the single channel grayscale image. - - - - - If set, always convert image to the 3 channel BGR color image. - - - - - If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. - - - - - If set, the image is read in any possible color format. - - - - - If set, use the gdal driver for loading the image. - - - - - If set, always convert image to the single channel grayscale image and the image size reduced 1/2. - - - - - If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2. - - - - - If set, always convert image to the single channel grayscale image and the image size reduced 1/4. - - - - - If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4. - - - - - If set, always convert image to the single channel grayscale image and the image size reduced 1/8. - - - - - If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8. - - - - - If set, do not rotate the image according to EXIF's orientation flag. - - - - - - - - - - store as HALF (FP16) - - - - - store as FP32 (default) - - - - - The format type IDs for cv::imwrite and cv::inencode - - - - - For JPEG, it can be a quality from 0 to 100 (the higher is the better). Default value is 95. - - - - - Enable JPEG features, 0 or 1, default is False. - - - - - Enable JPEG features, 0 or 1, default is False. - - - - - JPEG restart interval, 0 - 65535, default is 0 - no restart. - - - - - Separate luma quality level, 0 - 100, default is 0 - don't use. - - - - - Separate chroma quality level, 0 - 100, default is 0 - don't use. - - - - - For PNG, it can be the compression level from 0 to 9. - A higher value means a smaller size and longer compression time. Default value is 3. - - - - - One of cv::ImwritePNGFlags, default is IMWRITE_PNG_StrategyDEFAULT. - - - - - Binary level PNG, 0 or 1, default is 0. - - - - - For PPM, PGM, or PBM, it can be a binary format flag, 0 or 1. Default value is 1. - - - - - [48] override EXR storage type (FLOAT (FP32) is default) - - - - - For WEBP, it can be a quality from 1 to 100 (the higher is the better). By default (without any parameter) and for quality above 100 the lossless compression is used. - - - - - For PAM, sets the TUPLETYPE field to the corresponding string value that is defined for the format - - - - - For TIFF, use to specify which DPI resolution unit to set; see libtiff documentation for valid values - - - - - For TIFF, use to specify the X direction DPI - - - - - For TIFF, use to specify the Y direction DPI - - - - - For TIFF, use to specify the image compression scheme. - See libtiff for integer constants corresponding to compression formats. - Note, for images whose depth is CV_32F, only libtiff's SGILOG compression scheme is used. - For other supported depths, the compression scheme can be specified by this flag; LZW compression is the default. - - - - - For JPEG2000, use to specify the target compression rate (multiplied by 1000). - The value can be from 0 to 1000. Default is 1000. - - - - - Imwrite PAM specific tupletype flags used to define the 'TUPETYPE' field of a PAM file. - - - - - Imwrite PNG specific flags used to tune the compression algorithm. - - These flags will be modify the way of PNG image compression and will be passed to the underlying zlib processing stage. - The effect of IMWRITE_PNG_StrategyFILTERED is to force more Huffman coding and less string matching; it is somewhat - intermediate between IMWRITE_PNG_StrategyDEFAULT and IMWRITE_PNG_StrategyHUFFMAN_ONLY. - IMWRITE_PNG_StrategyRLE is designed to be almost as fast as IMWRITE_PNG_StrategyHUFFMAN_ONLY, but give better compression for PNG - image data. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even - if it is not set appropriately. IMWRITE_PNG_StrategyFIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - - - - Use this value for normal data. - - - - - Use this value for data produced by a filter (or predictor).Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to compress them better. - - - - - Use this value to force Huffman encoding only (no string match). - - - - - Use this value to limit match distances to one (run-length encoding). - - - - - Using this value prevents the use of dynamic Huffman codes, allowing for a simpler decoder for special applications. - - - - - The format-specific save parameters for cv::imwrite and cv::imencode - - - - - format type ID - - - - - value of parameter - - - - - Constructor - - format type ID - value of parameter - - - - Contrast Limited Adaptive Histogram Equalization - - - - - cv::Ptr<CLAHE> - - - - - - - - - - Creates a predefined CLAHE object - - - - - - - - Releases managed resources - - - - - Equalizes the histogram of a grayscale image using Contrast Limited Adaptive Histogram Equalization. - - Source image of type CV_8UC1 or CV_16UC1. - Destination image. - - - - Gets or sets threshold for contrast limiting. - - - - - Gets or sets size of grid for histogram equalization. Input image will be divided into equally sized rectangular tiles. - - - - - - - - - - connected components that is returned from Cv2.ConnectedComponentsEx - - - - - All blobs - - - - - destination labeled value - - - - - The number of labels -1 - - - - - Constructor - - - - - - - - Filter a image with the specified label value. - - Source image. - Destination image. - Label value. - Filtered image. - - - - Filter a image with the specified label values. - - Source image. - Destination image. - Label values. - Filtered image. - - - - Filter a image with the specified blob object. - - Source image. - Destination image. - Blob value. - Filtered image. - - - - Filter a image with the specified blob objects. - - Source image. - Destination image. - Blob values. - Filtered image. - - - - Draws all blobs to the specified image. - - The target image to be drawn. - - - - Find the largest blob. - - the largest blob - - - - 指定したラベル値のところのみを非0で残したマスク画像を返す - - - - - - - One blob - - - - - Label value - - - - - Floating point centroid (x,y) - - - - - The leftmost (x) coordinate which is the inclusive start of the bounding box in the horizontal direction. - - - - - The topmost (y) coordinate which is the inclusive start of the bounding box in the vertical direction. - - - - - The horizontal size of the bounding box. - - - - - The vertical size of the bounding box. - - - - - The bounding box. - - - - - The total area (in pixels) of the connected component. - - - - - Adaptive thresholding algorithms - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L333 - - - - - It is a mean of block_size × block_size pixel neighborhood, subtracted by param1. - - - - - it is a weighted sum (Gaussian) of block_size × block_size pixel neighborhood, subtracted by param1. - - - - - Color conversion operation for cv::cvtColor - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L528 - - - - - GNU Octave/MATLAB equivalent colormaps - - - - - connected components algorithm - - - - - SAUF algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity - - - - - BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity - - - - - BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity - - - - - Spaghetti @cite Bolelli2019 algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity. - - - - - Same as CCL_WU. It is preferable to use the flag with the name of the algorithm (CCL_SAUF) rather than the one with the name of the first author (CCL_WU). - - - - - Same as CCL_GRANA. It is preferable to use the flag with the name of the algorithm (CCL_BBDT) rather than the one with the name of the first author (CCL_GRANA). - - - - - Same as CCL_BOLELLI. It is preferable to use the flag with the name of the algorithm (CCL_SPAGHETTI) rather than the one with the name of the first author (CCL_BOLELLI). - - - - - components algorithm output formats - - - - - The leftmost (x) coordinate which is the inclusive start of the bounding - box in the horizontal direction. - - - - - The topmost (y) coordinate which is the inclusive start of the bounding - box in the vertical direction. - - - - - The horizontal size of the bounding box - - - - - The vertical size of the bounding box - - - - - The total area (in pixels) of the connected component - - - - - Approximation method (for all the modes, except CV_RETR_RUNS, which uses built-in approximation). - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L431 - - - - - CHAIN_APPROX_NONE - translate all the points from the chain code into points; - - - - - CHAIN_APPROX_SIMPLE - compress horizontal, vertical, and diagonal segments, that is, the function leaves only their ending points; - - - - - CHAIN_APPROX_TC89_L1 - apply one of the flavors of Teh-Chin chain approximation algorithm. - - - - - CHAIN_APPROX_TC89_KCOS - apply one of the flavors of Teh-Chin chain approximation algorithm. - - - - - distanceTransform algorithm flags - - - - - each connected component of zeros in src - (as well as all the non-zero pixels closest to the connected component) - will be assigned the same label - - - - - each zero pixel (and all the non-zero pixels closest to it) gets its own label. - - - - - Mask size for distance transform - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L312 - - - - - 3 - - - - - 5 - - - - - - - - - - Type of distance for cvDistTransform - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L300 - - - - - User defined distance [CV_DIST_USER] - - - - - distance = |x1-x2| + |y1-y2| [CV_DIST_L1] - - - - - the simple euclidean distance [CV_DIST_L2] - - - - - distance = max(|x1-x2|,|y1-y2|) [CV_DIST_C] - - - - - L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) [CV_DIST_L12] - - - - - distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998 [CV_DIST_FAIR] - - - - - distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 [CV_DIST_WELSCH] - - - - - distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345 [CV_DIST_HUBER] - - - - - Specifies how to flip the array - - - - - means flipping around x-axis - - - - - means flipping around y-axis - - - - - means flipping around both axises - - - - - floodFill Operation flags. Lower bits contain a connectivity value, 4 (default) or 8, used within the function. Connectivity determines which neighbors of a pixel are considered. Upper bits can be 0 or a combination of the following flags: - - - - - 4-connected line. - [= 4] - - - - - 8-connected line. - [= 8] - - - - - If set, the difference between the current pixel and seed pixel is considered. Otherwise, the difference between neighbor pixels is considered (that is, the range is floating). - [CV_FLOODFILL_FIXED_RANGE] - - - - - If set, the function does not change the image ( newVal is ignored), but fills the mask. The flag can be used for the second variant only. - [CV_FLOODFILL_MASK_ONLY] - - - - - class of the pixel in GrabCut algorithm - - - - - an obvious background pixels - - - - - an obvious foreground (object) pixel - - - - - a possible background pixel - - - - - a possible foreground pixel - - - - - GrabCut algorithm flags - - - - - The function initializes the state and the mask using the provided rectangle. - After that it runs iterCount iterations of the algorithm. - - - - - The function initializes the state using the provided mask. - Note that GC_INIT_WITH_RECT and GC_INIT_WITH_MASK can be combined. - Then, all the pixels outside of the ROI are automatically initialized with GC_BGD . - - - - - The value means that the algorithm should just resume. - - - - - Comparison methods for cvCompareHist - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L497 - - - - - Correlation [CV_COMP_CORREL] - - - - - Chi-Square [CV_COMP_CHISQR] - - - - - Intersection [CV_COMP_INTERSECT] - - - - - Bhattacharyya distance [CV_COMP_BHATTACHARYYA] - - - - - Synonym for HISTCMP_BHATTACHARYYA - - - - - Alternative Chi-Square - \f[d(H_1,H_2) = 2 * \sum _I \frac{\left(H_1(I)-H_2(I)\right)^2}{H_1(I)+H_2(I)}\f] - This alternative formula is regularly used for texture comparison. See e.g. @cite Puzicha1997 - - - - - Kullback-Leibler divergence - \f[d(H_1,H_2) = \sum _I H_1(I) \log \left(\frac{H_1(I)}{H_2(I)}\right)\f] - - - - - Variants of a Hough transform - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L465 - - - - - classical or standard Hough transform. - Every line is represented by two floating-point numbers \f$(\rho, \theta)\f$ , - where \f$\rho\f$ is a distance between (0,0) point and the line, - and \f$\theta\f$ is the angle between x-axis and the normal to the line. - Thus, the matrix must be (the created sequence will be) of CV_32FC2 type - - - - - probabilistic Hough transform (more efficient in case if the picture contains - a few long linear segments). It returns line segments rather than the whole line. - Each segment is represented by starting and ending points, and the matrix must be - (the created sequence will be) of the CV_32SC4 type. - - - - - multi-scale variant of the classical Hough transform. - The lines are encoded the same way as HOUGH_STANDARD. - - - - - basically *21HT*, described in @cite Yuen90 - - - - - variation of HOUGH_GRADIENT to get better accuracy - - - - - Interpolation algorithm - - - - - Nearest-neighbor interpolation, - - - - - Bilinear interpolation (used by default) - - - - - Bicubic interpolation. - - - - - Resampling using pixel area relation. It is the preferred method for image decimation that gives moire-free results. In case of zooming it is similar to CV_INTER_NN method. - - - - - Lanczos interpolation over 8x8 neighborhood - - - - - Bit exact bilinear interpolation - - - - - mask for interpolation codes - - - - - Fill all the destination image pixels. If some of them correspond to outliers in the source image, they are set to fillval. - - - - - Indicates that matrix is inverse transform from destination image to source and, - thus, can be used directly for pixel interpolation. Otherwise, the function finds the inverse transform from map_matrix. - - - - - Type of the line - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L808 - - - - - 8-connected line. - - - - - 4-connected line. - - - - - Anti-aliased line. - - - - - Possible set of marker types used for the cv::drawMarker function - - - - - A crosshair marker shape - - - - - A 45 degree tilted crosshair marker shape - - - - - A star marker shape, combination of cross and tilted cross - - - - - A diamond marker shape - - - - - A square marker shape - - - - - An upwards pointing triangle marker shape - - - - - A downwards pointing triangle marker shape - - - - - Shape of the structuring element - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L231 - - - - - A rectangular element - - - - - A cross-shaped element - - - - - An elliptic element - - - - - Type of morphological operation - - - - - - - - - - - - - - - an opening operation - - - - - a closing operation - - - - - Morphological gradient - - - - - "Top hat" - - - - - "Black hat" - - - - - "hit and miss" - - - - - PixelConnectivity for LineIterator - - - - - Connectivity 4 (N,S,E,W) - - - - - Connectivity 8 (N,S,E,W,NE,SE,SW,NW) - - - - - types of intersection between rectangles - - - - - No intersection - - - - - There is a partial intersection - - - - - One of the rectangle is fully enclosed in the other - - - - - mode of the contour retrieval algorithm - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L414 - - - - - retrieves only the extreme outer contours. - It sets `hierarchy[i][2]=hierarchy[i][3]=-1` for all the contours. - - - - - retrieves all of the contours without establishing any hierarchical relationships. - - - - - retrieves all of the contours and organizes them into a two-level hierarchy. - At the top level, there are external boundaries of the components. - At the second level, there are boundaries of the holes. If there is another - contour inside a hole of a connected component, it is still put at the top level. - - - - - retrieves all of the contours and reconstructs a full hierarchy - of nested contours. - - - - - - - - - - Comparison methods for cv::matchShapes - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L453 - - - - - \f[I_1(A,B) = \sum _{i=1...7} \left | \frac{1}{m^A_i} - \frac{1}{m^B_i} \right |\f] - - - - - \f[I_2(A,B) = \sum _{i=1...7} \left | m^A_i - m^B_i \right |\f] - - - - - \f[I_3(A,B) = \max _{i=1...7} \frac{ \left| m^A_i - m^B_i \right| }{ \left| m^A_i \right| }\f] - - - - - Specifies the way the template must be compared with image regions - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/imgproc/include/opencv2/imgproc.hpp#L3672 - - - - - \f[R(x,y)= \sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2\f] - - - - - \f[R(x,y)= \frac{\sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}\f] - - - - - \f[R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y'))\f] - - - - - \f[R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}\f] - - - - - \f[R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I'(x+x',y+y'))\f] - where - \f[\begin{array}{l} T'(x',y')=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h) \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array}\f] - - - - - \f[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }\f] - - - - - Thresholding type - - - - - \f[\texttt{dst} (x,y) = \fork{\texttt{maxval}}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{otherwise}\f] - - - - - \f[\texttt{dst} (x,y) = \fork{0}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{maxval}}{otherwise}\f] - - - - - \f[\texttt{dst} (x,y) = \fork{\texttt{threshold}}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{otherwise}\f] - - - - - \f[\texttt{dst} (x,y) = \fork{\texttt{src}(x,y)}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{0}{otherwise}\f] - - - - - \f[\texttt{dst} (x,y) = \fork{0}{if \(\texttt{src}(x,y) > \texttt{thresh}\)}{\texttt{src}(x,y)}{otherwise}\f] - - - - - - - - - - flag, use Otsu algorithm to choose the optimal threshold value - - - - - flag, use Triangle algorithm to choose the optimal threshold value - - - - - Specify the polar mapping mode - - - - - Remaps an image to/from polar space. - - - - - Remaps an image to/from semilog-polar space. - - - - - finds arbitrary template in the grayscale image using Generalized Hough Transform - - - - - Canny low threshold. - - - - - - Canny high threshold. - - - - - - Minimum distance between the centers of the detected objects. - - - - - - Inverse ratio of the accumulator resolution to the image resolution. - - - - - - Maximal size of inner buffers. - - - - - - set template to search - - - - - - - set template to search - - - - - - - - - find template on image - - - - - - - - find template on image - - - - - - - - - - Ballard, D.H. (1981). Generalizing the Hough transform to detect arbitrary shapes. - Pattern Recognition 13 (2): 111-122. - Detects position only without traslation and rotation - - - - - cv::Ptr<T> object - - - - - - - - - - Creates a predefined GeneralizedHoughBallard object - - - - - - Releases managed resources - - - - - R-Table levels. - - - - - - The accumulator threshold for the template centers at the detection stage. - The smaller it is, the more false positions may be detected. - - - - - - Guil, N., González-Linares, J.M. and Zapata, E.L. (1999). - Bidimensional shape detection using an invariant approach. - Pattern Recognition 32 (6): 1025-1038. - Detects position, translation and rotation - - - - - cv::Ptr<T> object - - - - - - - - - - Creates a predefined GeneralizedHoughBallard object - - - - - - Releases managed resources - - - - - Angle difference in degrees between two points in feature. - - - - - - Feature table levels. - - - - - - Maximal difference between angles that treated as equal. - - - - - - Minimal rotation angle to detect in degrees. - - - - - - Maximal rotation angle to detect in degrees. - - - - - - Angle step in degrees. - - - - - - Angle votes threshold. - - - - - - Minimal scale to detect. - - - - - - Maximal scale to detect. - - - - - - Scale step. - - - - - - Scale votes threshold. - - - - - - Position votes threshold. - - - - - - Intelligent Scissors image segmentation - - This class is used to find the path (contour) between two points - which can be used for image segmentation. - - Usage example: - @snippet snippets/imgproc_segmentation.cpp usage_example_intelligent_scissors - - Reference: Intelligent Scissors for Image Composition http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.138.3811&rep=rep1&type=pdf - algorithm designed by Eric N. Mortensen and William A. Barrett, Brigham Young University - @cite Mortensen95intelligentscissors - - - - - Constructor - - - - - Releases unmanaged resources - - - - - Specify weights of feature functions - - Consider keeping weights normalized (sum of weights equals to 1.0) - Discrete dynamic programming (DP) goal is minimization of costs between pixels. - - Specify cost of non-edge pixels (default: 0.43f) - Specify cost of gradient direction function (default: 0.43f) - Specify cost of gradient magnitude function (default: 0.14f) - - - - - Specify gradient magnitude max value threshold - - Zero limit value is used to disable gradient magnitude thresholding (default behavior, as described in original article). - Otherwize pixels with `gradient magnitude >= threshold` have zero cost. - - @note Thresholding should be used for images with irregular regions (to avoid stuck on parameters from high-contract areas, like embedded logos). - - Specify gradient magnitude max value threshold (default: 0, disabled) - - - - - Switch to "Laplacian Zero-Crossing" edge feature extractor and specify its parameters - - This feature extractor is used by default according to article. - - Implementation has additional filtering for regions with low-amplitude noise. - This filtering is enabled through parameter of minimal gradient amplitude (use some small value 4, 8, 16). - - @note Current implementation of this feature extractor is based on processing of grayscale images (color image is converted to grayscale image first). - - @note Canny edge detector is a bit slower, but provides better results (especially on color images): use setEdgeFeatureCannyParameters(). - - Minimal gradient magnitude value for edge pixels (default: 0, check is disabled) - - - - - Switch edge feature extractor to use Canny edge detector - Note: "Laplacian Zero-Crossing" feature extractor is used by default (following to original article) - - - - - - - - - - Specify input image and extract image features - - input image. Type is #CV_8UC1 / #CV_8UC3 - - - - - Specify custom features of imput image - Customized advanced variant of applyImage() call. - - Specify cost of non-edge pixels. Type is CV_8UC1. Expected values are `{0, 1}`. - Specify gradient direction feature. Type is CV_32FC2. Values are expected to be normalized: `x^2 + y^2 == 1` - Specify cost of gradient magnitude function: Type is CV_32FC1. Values should be in range `[0, 1]`. - Optional parameter. Must be specified if subset of features is specified (non-specified features are calculated internally) - - - - - Prepares a map of optimal paths for the given source point on the image - Note: applyImage() / applyImageFeatures() must be called before this call - - The source point used to find the paths - - - - Extracts optimal contour for the given target point on the image - Note: buildMap() must be called before this call - - The target point - contour The list of pixels which contains optimal path between the source and the target points of the image. - Type is CV_32SC2 (compatible with `std::vector<Point>`) - Flag to indicate reverse order of retrived pixels (use "true" value to fetch points from the target to the source point) - - - - Contrast Limited Adaptive Histogram Equalization - - - - - Constructor - - - - - - - - - - - Initializes the iterator - - - - - - Releases unmanaged resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LineIterator pixel data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Constructor - - - - - - - circle structure retrieved from cvHoughCircle - - - - - Center coordinate of the circle - - - - - Radius - - - - - Constructor - - center - radius - - - - Specifies whether this object contains the same members as the specified Object. - - The Object to test. - This method returns true if obj is the same type as this object and has the same members as this object. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - Specifies whether this object contains the same members as the specified Object. - - The Object to test. - This method returns true if obj is the same type as this object and has the same members as this object. - - - - Returns a hash code for this object. - - An integer value that specifies a hash value for this object. - - - - Converts this object to a human readable string. - - A string that represents this object. - - - - Information about the image topology for cv::findContours - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2-dimentional line vector - - - - - The X component of the normalized vector collinear to the line - - - - - The Y component of the normalized vector collinear to the line - - - - - X-coordinate of some point on the line - - - - - Y-coordinate of some point on the line - - - - - Initializes this object - - The X component of the normalized vector collinear to the line - The Y component of the normalized vector collinear to the line - Z-coordinate of some point on the line - Z-coordinate of some point on the line - - - - Initializes by cvFitLine output - - The returned value from cvFitLineparam> - - - - - - - - - - - - - - - - Returns the distance between this line and the specified point - - - - - - Returns the distance between this line and the specified point - - - - - - Returns the distance between this line and the specified point - - - - - - Returns the distance between this line and the specified point - - - - - - - Fits this line to the specified size (for drawing) - - Width of fit size - Height of fit size - 1st edge point of fitted line - 2nd edge point of fitted line - - - - A 3-dimensional line object - - - - - The X component of the normalized vector collinear to the line - - - - - The Y component of the normalized vector collinear to the line - - - - - The Z component of the normalized vector collinear to the line - - - - - X-coordinate of some point on the line - - - - - Y-coordinate of some point on the line - - - - - Z-coordinate of some point on the line - - - - - Initializes this object - - The X component of the normalized vector collinear to the line - The Y component of the normalized vector collinear to the line - The Z component of the normalized vector collinear to the line - Z-coordinate of some point on the line - Z-coordinate of some point on the line - Z-coordinate of some point on the line - - - - Initializes by cvFitLine output - - The returned value from cvFitLineparam> - - - - Perpendicular foot - - - - - - Perpendicular foot - - - - - - Perpendicular foot - - - - - - - - Returns the distance between this line and the specified point - - - - - - Returns the distance between this line and the specified point - - - - - - Returns the distance between this line and the specified point - - - - - - - - ベクトルの外積 - - - - - - - - ベクトルの長さ(原点からの距離) - - - - - - - 2点間(2ベクトル)の距離 - - - - - - - - Line segment structure retrieved from cvHoughLines2 - - - - - 1st Point - - - - - 2nd Point - - - - - Constructor - - 1st Point - 2nd Point - - - - Specifies whether this object contains the same members as the specified Object. - - The Object to test. - This method returns true if obj is the same type as this object and has the same members as this object. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - Specifies whether this object contains the same members as the specified Object. - - The Object to test. - This method returns true if obj is the same type as this object and has the same members as this object. - - - - Returns a hash code for this object. - - An integer value that specifies a hash value for this object. - - - - Converts this object to a human readable string. - - A string that represents this object. - - - - Calculates a intersection of the specified two lines - - - - - - - - Calculates a intersection of the specified two lines - - - - - - - Calculates a intersection of the specified two segments - - - - - - - - Calculates a intersection of the specified two segments - - - - - - - Returns a boolean value indicating whether the specified two segments intersect. - - - - - - - - Returns a boolean value indicating whether the specified two segments intersect. - - - - - - - Returns a boolean value indicating whether a line and a segment intersect. - - Line - Segment - - - - - Calculates a intersection of a line and a segment - - - - - - - - - - - - - - Translates the Point by the specified amount. - - The amount to offset the x-coordinate. - The amount to offset the y-coordinate. - - - - - Translates the Point by the specified amount. - - The Point used offset this CvPoint. - - - - - Polar line segment retrieved from cvHoughLines2 - - - - - Length of the line - - - - - Angle of the line (radian) - - - - - Constructor - - Length of the line - Angle of the line (radian) - - - - Specifies whether this object contains the same members as the specified Object. - - The Object to test. - This method returns true if obj is the same type as this object and has the same members as this object. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are equal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are equal; otherwise, false. - - - - Compares two CvPoint objects. The result specifies whether the members of each object are unequal. - - A Point to compare. - A Point to compare. - This operator returns true if the members of left and right are unequal; otherwise, false. - - - - Specifies whether this object contains the same members as the specified Object. - - The Object to test. - This method returns true if obj is the same type as this object and has the same members as this object. - - - - Returns a hash code for this object. - - An integer value that specifies a hash value for this object. - - - - Converts this object to a human readable string. - - A string that represents this object. - - - - Calculates a intersection of the specified two lines - - - - - - - - Calculates a intersection of the specified two lines - - - - - - - Convert To LineSegmentPoint - - - - - - - Converts to a line segment with the specified x coordinates at both ends - - - - - - - - Converts to a line segment with the specified y coordinates at both ends - - - - - - - - - - - - - - - - - - - - - - Raster image moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - spatial moments - - - - - central moments - - - - - central moments - - - - - central moments - - - - - central moments - - - - - central moments - - - - - central moments - - - - - central moments - - - - - central normalized moments - - - - - central normalized moments - - - - - central normalized moments - - - - - central normalized moments - - - - - central normalized moments - - - - - central normalized moments - - - - - central normalized moments - - - - - Default constructor. - All moment values are set to 0. - - - - - - - - - - - - - - - - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (single-channel, 8-bit or floating-point - 2D array) or an array ( 1xN or Nx1 ) of 2D points ( Point or Point2f ) - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (8-bit) 2D array - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (floating-point) 2D array - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - Array of 2D points - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - Array of 2D points - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - Calculates all of the moments - up to the third order of a polygon or rasterized shape. - - A raster image (single-channel, 8-bit or floating-point - 2D array) or an array ( 1xN or Nx1 ) of 2D points ( Point or Point2f ) - If it is true, then all the non-zero image pixels are treated as 1’s - - - - - - - - - - - - - - - - - - - - computes 7 Hu invariants from the moments - - - - - - Planar Subdivision - - - - - Creates an empty Subdiv2D object. - To create a new empty Delaunay subdivision you need to use the #initDelaunay function. - - - - - Creates an empty Subdiv2D object. - - Rectangle that includes all of the 2D points that are to be added to the subdivision. - - - - Clean up any resources being used. - - - - - Releases unmanaged resources - - - - - Creates a new empty Delaunay subdivision - - Rectangle that includes all of the 2D points that are to be added to the subdivision. - - - - Insert a single point into a Delaunay triangulation. - - Point to insert. - - - - - Insert multiple points into a Delaunay triangulation. - - Points to insert. - - - - Returns the location of a point within a Delaunay triangulation. - - Point to locate. - Output edge that the point belongs to or is located to the right of it. - Optional output vertex the input point coincides with. - an integer which specify one of the following five cases for point location: - - The point falls into some facet. The function returns #PTLOC_INSIDE and edge will contain one of edges of the facet. - - The point falls onto the edge. The function returns #PTLOC_ON_EDGE and edge will contain this edge. - - The point coincides with one of the subdivision vertices. The function returns #PTLOC_VERTEX and vertex will contain a pointer to the vertex. - - The point is outside the subdivision reference rectangle. The function returns #PTLOC_OUTSIDE_RECT and no pointers are filled. - - One of input arguments is invalid. A runtime error is raised or, if silent or "parent" error processing mode is selected, #PTLOC_ERROR is returned. - - - - Finds the subdivision vertex closest to the given point. - - Input point. - Output subdivision vertex point. - vertex ID. - - - - Returns a list of all edges. - - Output vector. - - - - Returns a list of the leading edge ID connected to each triangle. - The function gives one edge ID for each triangle. - - Output vector. - - - - Returns a list of all triangles. - - Output vector. - - - - Returns a list of all Voronoi facets. - - Vector of vertices IDs to consider. For all vertices you can pass empty vector. - Output vector of the Voronoi facets. - Output vector of the Voronoi facets center points. - - - - Returns vertex location from vertex ID. - - vertex ID. - The first edge ID which is connected to the vertex. - vertex (x,y) - - - - Returns one of the edges related to the given edge. - - Subdivision edge ID. - Parameter specifying which of the related edges to return. - The following values are possible: - - NEXT_AROUND_ORG next around the edge origin ( eOnext on the picture below if e is the input edge) - - NEXT_AROUND_DST next around the edge vertex ( eDnext ) - - PREV_AROUND_ORG previous around the edge origin (reversed eRnext ) - - PREV_AROUND_DST previous around the edge destination (reversed eLnext ) - - NEXT_AROUND_LEFT next around the left facet ( eLnext ) - - NEXT_AROUND_RIGHT next around the right facet ( eRnext ) - - PREV_AROUND_LEFT previous around the left facet (reversed eOnext ) - - PREV_AROUND_RIGHT previous around the right facet (reversed eDnext ) - - - - - Subdivision edge ID. - - Subdivision edge ID. - an integer which is next edge ID around the edge origin: eOnext on the picture above if e is the input edge). - - - - Returns another edge of the same quad-edge. - - Subdivision edge ID. - Parameter specifying which of the edges of the same quad-edge as the input - one to return. The following values are possible: - - 0 - the input edge ( e on the picture below if e is the input edge) - - 1 - the rotated edge ( eRot ) - - 2 - the reversed edge (reversed e (in green)) - - 3 - the reversed rotated edge (reversed eRot (in green)) - one of the edges ID of the same quad-edge as the input edge. - - - - - - - - - - - Returns the edge origin. - - Subdivision edge ID. - Output vertex location. - vertex ID. - - - - Returns the edge destination. - - Subdivision edge ID. - Output vertex location. - vertex ID. - - - - Parameter for Subdiv2D.GetEdge() specifying which of the related edges to return. - - - - - next around the edge origin ( eOnext on the picture below if e is the input edge) - - - - - next around the edge vertex ( eDnext ) - - - - - previous around the edge origin (reversed eRnext ) - - - - - previous around the edge destination (reversed eLnext ) - - - - - next around the left facet ( eLnext ) - - - - - next around the right facet ( eRnext ) - - - - - previous around the left facet (reversed eOnext ) - - - - - previous around the right facet (reversed eDnext ) - - - - - - Computes average hash value of the input image. - This is a fast image hashing algorithm, but only work on simple case. For more details, - please refer to @cite lookslikeit - - - - - cv::Ptr<T> - - - - - - - - - - Constructor - - - - - - - Releases managed resources - - - - - - Image hash based on block mean. - - - - - cv::Ptr<T> - - - - - - - - - - Create BlockMeanHash object - - - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - Image hash based on color moments. - - - - - cv::Ptr<T> - - - - - - - - - - Constructor - - - - - - - Releases managed resources - - - - - - Computes color moment hash of the input, the algorithm is come from the paper "Perceptual Hashing for Color Images Using Invariant Moments" - - input image want to compute hash value, type should be CV_8UC4, CV_8UC3 or CV_8UC1. - 42 hash values with type CV_64F(double) - - - - - - - - - - use fewer block and generate 16*16/8 uchar hash value - - - - - use block blocks(step sizes/2), generate 31*31/8 + 1 uchar hash value - - - - - - The base class for image hash algorithms - - - - - Computes hash of the input image - - input image want to compute hash value - hash of the image - - - - - Compare the hash value between inOne and inTwo - - Hash value one - Hash value two - value indicate similarity between inOne and inTwo, the meaning of the value vary from algorithms to algorithms - - - - - Marr-Hildreth Operator Based Hash, slowest but more discriminative. - - - - - cv::Ptr<T> - - - - - - - - - - Create BlockMeanHash object - - int scale factor for marr wavelet (default=2). - int level of scale factor (default = 1) - - - - - - Releases managed resources - - - - - - - int scale factor for marr wavelet (default=2). - int level of scale factor (default = 1) - - - - int scale factor for marr wavelet (default=2). - - - - - int level of scale factor (default = 1) - - - - - - Computes average hash value of the input image - - input image want to compute hash value, type should be CV_8UC4, CV_8UC3, CV_8UC1. - Hash value of input, it will contain 16 hex decimal number, return type is CV_8U - - - - - - pHash: Slower than average_hash, but tolerant of minor modifications. - This algorithm can combat more variation than averageHash, for more details please refer to @cite lookslikeit - - - - - cv::Ptr<T> - - - - - - - - - - Constructor - - - - - - - Releases managed resources - - - - - - Computes pHash value of the input image - - input image want to compute hash value, type should be CV_8UC4, CV_8UC3, CV_8UC1. - Hash value of input, it will contain 8 uchar value - - - - - - Image hash based on Radon transform. - - - - - cv::Ptr<T> - - - - - - - - - - Create BlockMeanHash object - - Gaussian kernel standard deviation - The number of angles to consider - - - - - - Releases managed resources - - - - - Gaussian kernel standard deviation - - - - - The number of angles to consider - - - - - - Computes average hash value of the input image - - input image want to compute hash value, type should be CV_8UC4, CV_8UC3, CV_8UC1. - Hash value of input - - - - - A class to represent a line - - As aformentioned, it is been necessary to design a class that fully stores the information needed to - characterize completely a line and plot it on image it was extracted from, when required. - - *KeyLine* class has been created for such goal; it is mainly inspired to Feature2d's KeyPoint class, - since KeyLine shares some of* KeyPoint*'s fields, even if a part of them assumes a different - meaning, when speaking about lines.In particular: - - - the* class_id* field is used to gather lines extracted from different octaves which refer to - same line inside original image (such lines and the one they represent in original image share - the same* class_id* value) - - the* angle* field represents line's slope with respect to (positive) X axis - - the* pt* field represents line's midpoint - - the* response* field is computed as the ratio between the line's length and maximum between - image's width and height - - the* size* field is the area of the smallest rectangle containing line - - Apart from fields inspired to KeyPoint class, KeyLines stores information about extremes of line in - original image and in octave it was extracted from, about line's length and number of pixels it - covers. - - - - - orientation of the line - - - - - object ID, that can be used to cluster keylines by the line they represent - - - - - octave (pyramid layer), from which the keyline has been extracted - - - - - coordinates of the middlepoint - - - - - the response, by which the strongest keylines have been selected. - It's represented by the ratio between line's length and maximum between - image's width and height - - - - - minimum area containing line - - - - - lines' extremes in original image - - - - - lines' extremes in original image - - - - - lines' extremes in original image - - - - - lines' extremes in original image - - - - - line's extremes in image it was extracted from - - - - - line's extremes in image it was extracted from - - - - - line's extremes in image it was extracted from - - - - - line's extremes in image it was extracted from - - - - - the length of line - - - - - number of pixels covered by the line - - - - - Returns the start point of the line in the original image - - - - - Returns the end point of the line in the original image - - - - - Returns the start point of the line in the octave it was extracted from - - - - - Returns the end point of the line in the octave it was extracted from - - - - - Constructor - - - - - - - - - - - - - - - - - - - - - Artificial Neural Networks - Multi-Layer Perceptrons. - - - - - Creates instance by raw pointer cv::ml::ANN_MLP* - - - - - Creates the empty model. - - - - - - Loads and creates a serialized ANN from a file. - Use ANN::save to serialize and store an ANN to disk. - Load the ANN from this file again, by calling this function with the path to the file. - - path to serialized ANN - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Termination criteria of the training algorithm. - - - - - Strength of the weight gradient term. - The recommended value is about 0.1. Default value is 0.1. - - - - - Strength of the momentum term (the difference between weights on the 2 previous iterations). - This parameter provides some inertia to smooth the random fluctuations of the weights. - It can vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or - so is good enough. Default value is 0.1. - - - - - Initial value Delta_0 of update-values Delta_{ij}. Default value is 0.1. - - - - - Increase factor eta^+. - It must be >1. Default value is 1.2. - - - - - Decrease factor eta^-. - It must be \>1. Default value is 0.5. - - - - - Update-values lower limit Delta_{min}. - It must be positive. Default value is FLT_EPSILON. - - - - - Update-values upper limit Delta_{max}. - It must be >1. Default value is 50. - - - - - Sets training method and common parameters. - - Default value is ANN_MLP::RPROP. See ANN_MLP::TrainingMethods. - passed to setRpropDW0 for ANN_MLP::RPROP and to setBackpropWeightScale for ANN_MLP::BACKPROP and to initialT for ANN_MLP::ANNEAL. - passed to setRpropDWMin for ANN_MLP::RPROP and to setBackpropMomentumScale for ANN_MLP::BACKPROP and to finalT for ANN_MLP::ANNEAL. - - - - Returns current training method - - - - - - Initialize the activation function for each neuron. - Currently the default and the only fully supported activation function is ANN_MLP::SIGMOID_SYM. - - The type of activation function. See ANN_MLP::ActivationFunctions. - The first parameter of the activation function, \f$\alpha\f$. Default value is 0. - The second parameter of the activation function, \f$\beta\f$. Default value is 0. - - - - Integer vector specifying the number of neurons in each layer including the input and output layers. - The very first element specifies the number of elements in the input layer. - The last element - number of elements in the output layer.Default value is empty Mat. - - - - - - Integer vector specifying the number of neurons in each layer including the input and output layers. - The very first element specifies the number of elements in the input layer. - The last element - number of elements in the output layer. - - - - - - possible activation functions - - - - - Identity function: $f(x)=x - - - - - Symmetrical sigmoid: f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x} - - - - - Gaussian function: f(x)=\beta e^{-\alpha x*x} - - - - - Train options - - - - - Update the network weights, rather than compute them from scratch. - In the latter case the weights are initialized using the Nguyen-Widrow algorithm. - - - - - Do not normalize the input vectors. - If this flag is not set, the training algorithm normalizes each input feature - independently, shifting its mean value to 0 and making the standard deviation - equal to 1. If the network is assumed to be updated frequently, the new - training data could be much different from original one. In this case, - you should take care of proper normalization. - - - - - Do not normalize the output vectors. If the flag is not set, - the training algorithm normalizes each output feature independently, - by transforming it to the certain range depending on the used activation function. - - - - - Available training methods - - - - - The back-propagation algorithm. - - - - - The RPROP algorithm. See @cite RPROP93 for details. - - - - - Boosted tree classifier derived from DTrees - - - - - Creates instance by raw pointer cv::ml::Boost* - - - - - Creates the empty model. - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Type of the boosting algorithm. - See Boost::Types. Default value is Boost::REAL. - - - - - The number of weak classifiers. - Default value is 100. - - - - - A threshold between 0 and 1 used to save computational time. - Samples with summary weight \f$\leq 1 - weight_trim_rate - do not participate in the *next* iteration of training. - Set this parameter to 0 to turn off this functionality. Default value is 0.95. - - - - - Boosting type. - Gentle AdaBoost and Real AdaBoost are often the preferable choices. - - - - - Discrete AdaBoost. - - - - - Real AdaBoost. It is a technique that utilizes confidence-rated predictions - and works well with categorical data. - - - - - LogitBoost. It can produce good regression fits. - - - - - Gentle AdaBoost. It puts less weight on outlier data points and for that - reason is often good with regression data. - - - - - Decision tree - - - - - - - - - - Creates instance by raw pointer cv::ml::SVM* - - - - - Creates the empty model. - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Cluster possible values of a categorical variable into - K < =maxCategories clusters to find a suboptimal split. - - - - - The maximum possible depth of the tree. - - - - - If the number of samples in a node is less than this parameter then the - node will not be split. Default value is 10. - - - - - If CVFolds \> 1 then algorithms prunes the built decision tree using K-fold - cross-validation procedure where K is equal to CVFolds. Default value is 10. - - - - - If true then surrogate splits will be built. - These splits allow to work with missing data and compute variable - importance correctly. Default value is false. - - - - - If true then a pruning will be harsher. - This will make a tree more compact and more resistant to the training - data noise but a bit less accurate. Default value is true. - - - - - If true then pruned branches are physically removed from the tree. - Otherwise they are retained and it is possible to get results from the - original unpruned (or pruned less aggressively) tree. Default value is true. - - - - - Termination criteria for regression trees. - If all absolute differences between an estimated value in a node and - values of train samples in this node are less than this parameter - then the node will not be split further. Default value is 0.01f. - - - - - The array of a priori class probabilities, sorted by the class label value. - - - - - Returns indices of root nodes - - - - - - Returns all the nodes. - all the node indices are indices in the returned vector - - - - - Returns all the splits. - all the split indices are indices in the returned vector - - - - - - Returns all the bitsets for categorical splits. - Split::subsetOfs is an offset in the returned vector - - - - - - The class represents a decision tree node. - - - - - Value at the node: a class label in case of classification or estimated - function value in case of regression. - - - - - Class index normalized to 0..class_count-1 range and assigned to the - node. It is used internally in classification trees and tree ensembles. - - - - - Index of the parent node - - - - - Index of the left child node - - - - - Index of right child node - - - - - Default direction where to go (-1: left or +1: right). It helps in the - case of missing values. - - - - - Index of the first split - - - - - The class represents split in a decision tree. - - - - - Index of variable on which the split is created. - - - - - If not 0, then the inverse split rule is used (i.e. left and right - branches are exchanged in the rule expressions below). - - - - - The split quality, a positive number. It is used to choose the best split. - - - - - Index of the next split in the list of splits for the node - - - - - The threshold value in case of split on an ordered variable. - - - - - Offset of the bitset used by the split on a categorical variable. - - - - - Sample types - - - - - each training sample is a row of samples - - - - - each training sample occupies a column of samples - - - - - K nearest neighbors classifier - - - - - Creates instance by raw pointer cv::ml::KNearest* - - - - - Creates the empty model - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Default number of neighbors to use in predict method. - - - - - Whether classification or regression model should be trained. - - - - - Parameter for KDTree implementation - - - - - Algorithm type, one of KNearest::Types. - - - - - Finds the neighbors and predicts responses for input vectors. - - Input samples stored by rows. - It is a single-precision floating-point matrix of `[number_of_samples] * k` size. - Number of used nearest neighbors. Should be greater than 1. - Vector with results of prediction (regression or classification) for each - input sample. It is a single-precision floating-point vector with `[number_of_samples]` elements. - neighborResponses Optional output values for corresponding neighbors. - It is a single-precision floating-point matrix of `[number_of_samples] * k` size. - Optional output distances from the input vectors to the corresponding neighbors. - It is a single-precision floating-point matrix of `[number_of_samples] * k` size. - - - - - Implementations of KNearest algorithm - - - - - Implements Logistic Regression classifier. - - - - - Creates instance by raw pointer cv::ml::LogisticRegression* - - - - - Creates the empty model. - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Learning rate - - - - - Number of iterations. - - - - - Kind of regularization to be applied. See LogisticRegression::RegKinds. - - - - - Kind of training method used. See LogisticRegression::Methods. - - - - - Specifies the number of training samples taken in each step of Mini-Batch Gradient. - Descent. Will only be used if using LogisticRegression::MINI_BATCH training algorithm. - It has to take values less than the total number of training samples. - - - - - Termination criteria of the training algorithm. - - - - - Predicts responses for input samples and returns a float type. - - The input data for the prediction algorithm. Matrix [m x n], - where each row contains variables (features) of one object being classified. - Should have data type CV_32F. - Predicted labels as a column matrix of type CV_32S. - Not used. - - - - - This function returns the trained parameters arranged across rows. - For a two class classification problem, it returns a row matrix. - It returns learnt parameters of the Logistic Regression as a matrix of type CV_32F. - - - - - - Regularization kinds - - - - - Regularization disabled - - - - - L1 norm - - - - - L2 norm - - - - - Training methods - - - - - - - - - - Set MiniBatchSize to a positive integer when using this method. - - - - - Bayes classifier for normally distributed data - - - - - Creates instance by raw pointer cv::ml::NormalBayesClassifier* - - - - - Creates empty model. - Use StatModel::train to train the model after creation. - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Predicts the response for sample(s). - - - - - - - - The method estimates the most probable classes for input vectors. Input vectors (one or more) - are stored as rows of the matrix inputs. In case of multiple input vectors, there should be one - output vector outputs. The predicted class for a single input vector is returned by the method. - The vector outputProbs contains the output probabilities corresponding to each element of result. - - - - - The structure represents the logarithmic grid range of statmodel parameters. - - - - - Minimum value of the statmodel parameter. Default value is 0. - - - - - Maximum value of the statmodel parameter. Default value is 0. - - - - - Logarithmic step for iterating the statmodel parameter. - - - The grid determines the following iteration sequence of the statmodel parameter values: - \f[(minVal, minVal*step, minVal*{step}^2, \dots, minVal*{logStep}^n),\f] - where \f$n\f$ is the maximal index satisfying - \f[\texttt{minVal} * \texttt{logStep} ^n < \texttt{maxVal}\f] - The grid is logarithmic, so logStep must always be greater then 1. Default value is 1. - - - - - Constructor with parameters - - - - - - - - The class implements the random forest predictor. - - - - - Creates instance by raw pointer cv::ml::RTrees* - - - - - Creates the empty model. - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - If true then variable importance will be calculated and then - it can be retrieved by RTrees::getVarImportance. Default value is false. - - - - - The size of the randomly selected subset of features at each tree node - and that are used to find the best split(s). - - - - - The termination criteria that specifies when the training algorithm stops. - - - - - Returns the variable importance array. - The method returns the variable importance vector, computed at the training - stage when CalculateVarImportance is set to true. If this flag was set to false, - the empty matrix is returned. - - - - - - Base class for statistical models in ML - - - - - Returns the number of variables in training samples - - - - - - - - - - - - Returns true if the model is trained - - - - - - Returns true if the model is classifier - - - - - - Trains the statistical model - - training data that can be loaded from file using TrainData::loadFromCSV - or created with TrainData::create. - optional flags, depending on the model. Some of the models can be updated with the - new training samples, not completely overwritten (such as NormalBayesClassifier or ANN_MLP). - - - - - Trains the statistical model - - training samples - SampleTypes value - vector of responses associated with the training samples. - - - - - Computes error on the training or test dataset - - the training data - if true, the error is computed over the test subset of the data, - otherwise it's computed over the training subset of the data. Please note that if you - loaded a completely different dataset to evaluate already trained classifier, you will - probably want not to set the test subset at all with TrainData::setTrainTestSplitRatio - and specify test=false, so that the error is computed for the whole new set. Yes, this - sounds a bit confusing. - the optional output responses. - - - - - Predicts response(s) for the provided sample(s) - - The input samples, floating-point matrix - The optional output matrix of results. - The optional flags, model-dependent. - - - - - Predict options - - - - - makes the method return the raw results (the sum), not the class label - - - - - Support Vector Machines - - - - - Creates instance by raw pointer cv::ml::SVM* - - - - - Creates empty model. - Use StatModel::Train to train the model. - Since %SVM has several parameters, you may want to find the best - parameters for your problem, it can be done with SVM::TrainAuto. - - - - - - Loads and creates a serialized svm from a file. - Use SVM::save to serialize and store an SVM to disk. - Load the SVM from this file again, by calling this function with the path to the file. - - - - - - - Loads algorithm from a String. - - The string variable containing the model you want to load. - - - - - Releases managed resources - - - - - Type of a %SVM formulation. - Default value is SVM::C_SVC. - - - - - Parameter gamma of a kernel function. - For SVM::POLY, SVM::RBF, SVM::SIGMOID or SVM::CHI2. Default value is 1. - - - - - Parameter coef0 of a kernel function. - For SVM::POLY or SVM::SIGMOID. Default value is 0. - - - - - Parameter degree of a kernel function. - For SVM::POLY. Default value is 0. - - - - - Parameter C of a %SVM optimization problem. - For SVM::C_SVC, SVM::EPS_SVR or SVM::NU_SVR. Default value is 0. - - - - - Parameter nu of a %SVM optimization problem. - For SVM::NU_SVC, SVM::ONE_CLASS or SVM::NU_SVR. Default value is 0. - - - - - Parameter epsilon of a %SVM optimization problem. - For SVM::EPS_SVR. Default value is 0. - - - - - Optional weights in the SVM::C_SVC problem, assigned to particular classes. - - - They are multiplied by _C_ so the parameter _C_ of class _i_ becomes `classWeights(i) * C`. - Thus these weights affect the misclassification penalty for different classes. - The larger weight, the larger penalty on misclassification of data from the - corresponding class. Default value is empty Mat. - - - - - Termination criteria of the iterative SVM training procedure - which solves a partial case of constrained quadratic optimization problem. - - - You can specify tolerance and/or the maximum number of iterations. - Default value is `TermCriteria( TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, FLT_EPSILON )`; - - - - - Type of a %SVM kernel. See SVM::KernelTypes. Default value is SVM::RBF. - - - - - Trains an %SVM with optimal parameters. - - the training data that can be constructed using - TrainData::create or TrainData::loadFromCSV. - Cross-validation parameter. The training set is divided into kFold subsets. - One subset is used to test the model, the others form the train set. So, the %SVM algorithm is - executed kFold times. - grid for C - grid for gamma - grid for p - grid for nu - grid for coeff - grid for degree - If true and the problem is 2-class classification then the method creates - more balanced cross-validation subsets that is proportions between classes in subsets are close - to such proportion in the whole train dataset. - - - - - Retrieves all the support vectors - - - - - - Retrieves the decision function - - i the index of the decision function. - If the problem solved is regression, 1-class or 2-class classification, then - there will be just one decision function and the index should always be 0. - Otherwise, in the case of N-class classification, there will be N(N-1)/2 decision functions. - alpha the optional output vector for weights, corresponding to - different support vectors. In the case of linear %SVM all the alpha's will be 1's. - the optional output vector of indices of support vectors - within the matrix of support vectors (which can be retrieved by SVM::getSupportVectors). - In the case of linear %SVM each decision function consists of a single "compressed" support vector. - - - - - Generates a grid for SVM parameters. - - SVM parameters IDs that must be one of the SVM::ParamTypes. - The grid is generated for the parameter with this ID. - - - - - SVM type - - - - - C-Support Vector Classification. n-class classification (n \f$\geq\f$ 2), - allows imperfect separation of classes with penalty multiplier C for outliers. - - - - - nu-Support Vector Classification. n-class classification with possible - imperfect separation. Parameter \f$\nu\f$ (in the range 0..1, the larger - the value, the smoother the decision boundary) is used instead of C. - - - - - Distribution Estimation (One-class %SVM). All the training data are from - the same class, %SVM builds a boundary that separates the class from the - rest of the feature space. - - - - - epsilon-Support Vector Regression. - The distance between feature vectors from the training set and the fitting - hyper-plane must be less than p. For outliers the penalty multiplier C is used. - - - - - nu-Support Vector Regression. \f$\nu\f$ is used instead of p. - See @cite LibSVM for details. - - - - - SVM kernel type - - - - - Returned by SVM::getKernelType in case when custom kernel has been set - - - - - Linear kernel. No mapping is done, linear discrimination (or regression) is - done in the original feature space. It is the fastest option. \f$K(x_i, x_j) = x_i^T x_j\f$. - - - - - Polynomial kernel: - \f$K(x_i, x_j) = (\gamma x_i^T x_j + coef0)^{degree}, \gamma > 0\f$. - - - - - Radial basis function (RBF), a good choice in most cases. - \f$K(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2}, \gamma > 0\f$. - - - - - Sigmoid kernel: - \f$K(x_i, x_j) = \tanh(\gamma x_i^T x_j + coef0)\f$. - - - - - Exponential Chi2 kernel, similar to the RBF kernel: - \f$K(x_i, x_j) = e^{-\gamma \chi^2(x_i,x_j)}, \chi^2(x_i,x_j) = (x_i-x_j)^2/(x_i+x_j), \gamma > 0\f$. - - - - - Histogram intersection kernel. - A fast kernel. \f$K(x_i, x_j) = min(x_i,x_j)\f$. - - - - - SVM params type - - - - - - - - - - - - - - - The class implements the Expectation Maximization algorithm. - - - - - Creates instance by pointer cv::Ptr<EM> - - - - - Creates empty EM model. - - - - - - Loads and creates a serialized model from a file. - - - - - - - Loads algorithm from a String. - - he string variable containing the model you want to load. - - - - - Releases managed resources - - - - - The number of mixture components in the Gaussian mixture model. - Default value of the parameter is EM::DEFAULT_NCLUSTERS=5. - Some of EM implementation could determine the optimal number of mixtures - within a specified value range, but that is not the case in ML yet. - - - - - Constraint on covariance matrices which defines type of matrices. - - - - - The termination criteria of the %EM algorithm. - The EM algorithm can be terminated by the number of iterations - termCrit.maxCount (number of M-steps) or when relative change of likelihood - logarithm is less than termCrit.epsilon. - Default maximum number of iterations is EM::DEFAULT_MAX_ITERS=100. - - - - - Returns weights of the mixtures. - Returns vector with the number of elements equal to the number of mixtures. - - - - - - Returns the cluster centers (means of the Gaussian mixture). - Returns matrix with the number of rows equal to the number of mixtures and - number of columns equal to the space dimensionality. - - - - - - Returns covariation matrices. - Returns vector of covariation matrices. Number of matrices is the number of - gaussian mixtures, each matrix is a square floating-point matrix NxN, where N is the space dimensionality. - - - - - Estimate the Gaussian mixture parameters from a samples set. - - Samples from which the Gaussian mixture model will be estimated. It should be a - one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type - it will be converted to the inner matrix of such type for the further computing. - The optional output matrix that contains a likelihood logarithm value for - each sample. It has \f$nsamples \times 1\f$ size and CV_64FC1 type. - The optional output "class label" for each sample: - \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most probable - mixture component for each sample). It has \f$nsamples \times 1\f$ size and CV_32SC1 type. - The optional output matrix that contains posterior probabilities of each Gaussian - mixture component given the each sample. It has \f$nsamples \times nclusters\f$ size and CV_64FC1 type. - - - - - Estimate the Gaussian mixture parameters from a samples set. - - Samples from which the Gaussian mixture model will be estimated. It should be a - one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type - it will be converted to the inner matrix of such type for the further computing. - Initial means \f$a_k\f$ of mixture components. It is a one-channel matrix of - \f$nclusters \times dims\f$ size. If the matrix does not have CV_64F type it will be - converted to the inner matrix of such type for the further computing. - The vector of initial covariance matrices \f$S_k\f$ of mixture components. Each of - covariance matrices is a one-channel matrix of \f$dims \times dims\f$ size. If the matrices - do not have CV_64F type they will be converted to the inner matrices of such type for the further computing. - Initial weights \f$\pi_k\f$ of mixture components. It should be a one-channel - floating-point matrix with \f$1 \times nclusters\f$ or \f$nclusters \times 1\f$ size. - The optional output matrix that contains a likelihood logarithm value for - each sample. It has \f$nsamples \times 1\f$ size and CV_64FC1 type. - The optional output "class label" for each sample: - \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most probable - mixture component for each sample). It has \f$nsamples \times 1\f$ size and CV_32SC1 type. - The optional output matrix that contains posterior probabilities of each Gaussian - mixture component given the each sample. It has \f$nsamples \times nclusters\f$ size and CV_64FC1 type. - - - - Estimate the Gaussian mixture parameters from a samples set. - - Samples from which the Gaussian mixture model will be estimated. It should be a - one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type - it will be converted to the inner matrix of such type for the further computing. - the probabilities - The optional output matrix that contains a likelihood logarithm value for - each sample. It has \f$nsamples \times 1\f$ size and CV_64FC1 type. - The optional output "class label" for each sample: - \f$\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\f$ (indices of the most probable - mixture component for each sample). It has \f$nsamples \times 1\f$ size and CV_32SC1 type. - The optional output matrix that contains posterior probabilities of each Gaussian - mixture component given the each sample. It has \f$nsamples \times nclusters\f$ size and CV_64FC1 type. - - - - Predicts the response for sample - - A sample for classification. It should be a one-channel matrix of - \f$1 \times dims\f$ or \f$dims \times 1\f$ size. - Optional output matrix that contains posterior probabilities of each component - given the sample. It has \f$1 \times nclusters\f$ size and CV_64FC1 type. - - - - Type of covariation matrices - - - - - A scaled identity matrix \f$\mu_k * I\f$. - There is the only parameter \f$\mu_k\f$ to be estimated for each matrix. - The option may be used in special cases, when the constraint is relevant, - or as a first step in the optimization (for example in case when the data is - preprocessed with PCA). The results of such preliminary estimation may be - passed again to the optimization procedure, this time with covMatType=EM::COV_MAT_DIAGONAL. - - - - - A diagonal matrix with positive diagonal elements. - The number of free parameters is d for each matrix. - This is most commonly used option yielding good estimation results. - - - - - A symmetric positively defined matrix. The number of free parameters in each - matrix is about \f$d^2/2\f$. It is not recommended to use this option, unless - there is pretty accurate initial estimation of the parameters and/or a huge number - of training samples. - - - - - - - - - - The initial step the algorithm starts from - - - - - The algorithm starts with E-step. - At least, the initial values of mean vectors, CvEMParams.Means must be passed. - Optionally, the user may also provide initial values for weights (CvEMParams.Weights) - and/or covariation matrices (CvEMParams.Covs). - [CvEM::START_E_STEP] - - - - - The algorithm starts with M-step. The initial probabilities p_i,k must be provided. - [CvEM::START_M_STEP] - - - - - No values are required from the user, k-means algorithm is used to estimate initial mixtures parameters. - [CvEM::START_AUTO_STEP] - - - - - Cascade classifier class for object detection. - - - - - Default constructor - - - - - Loads a classifier from a file. - - Name of the file from which the classifier is loaded. - - - - Releases unmanaged resources - - - - - Checks whether the classifier has been loaded. - - - - - - Loads a classifier from a file. - - Name of the file from which the classifier is loaded. - The file may contain an old HAAR classifier trained by the haartraining application - or a new cascade classifier trained by the traincascade application. - - - - - Reads a classifier parameters from a file storage - - - - - - Detects objects of different sizes in the input image. The detected objects are returned as a list of rectangles. - - Matrix of the type CV_8U containing an image where objects are detected. - Parameter specifying how much the image size is reduced at each image scale. - Parameter specifying how many neighbors each candidate rectangle should have to retain it. - Parameter with the same meaning for an old cascade as in the function cvHaarDetectObjects. - It is not used for a new cascade. - Minimum possible object size. Objects smaller than that are ignored. - Maximum possible object size. Objects larger than that are ignored. - Vector of rectangles where each rectangle contains the detected object. - - - - Detects objects of different sizes in the input image. The detected objects are returned as a list of rectangles. - - Matrix of the type CV_8U containing an image where objects are detected. - - - Parameter specifying how much the image size is reduced at each image scale. - Parameter specifying how many neighbors each candidate rectangle should have to retain it. - Parameter with the same meaning for an old cascade as in the function cvHaarDetectObjects. - It is not used for a new cascade. - Minimum possible object size. Objects smaller than that are ignored. - Maximum possible object size. Objects larger than that are ignored. - - Vector of rectangles where each rectangle contains the detected object. - - - - - - - - - - - - - - - - - - - - - - Modes of operation for cvHaarDetectObjects - - - - - If it is set, the function uses Canny edge detector to reject some image regions that contain too few or too much edges and thus can not contain the searched object. - The particular threshold values are tuned for face detection and in this case the pruning speeds up the processing. - [CV_HAAR_DO_CANNY_PRUNING] - - - - - For each scale factor used the function will downscale the image rather than "zoom" the feature coordinates in the classifier cascade. - Currently, the option can only be used alone, i.e. the flag can not be set together with the others. - [CV_HAAR_SCALE_IMAGE] - - - - - If it is set, the function finds the largest object (if any) in the image. That is, the output sequence will contain one (or zero) element(s). - [CV_HAAR_FIND_BIGGEST_OBJECT] - - - - - It should be used only when FindBiggestObject is set and min_neighbors > 0. - If the flag is set, the function does not look for candidates of a smaller size - as soon as it has found the object (with enough neighbor candidates) at the current scale. - Typically, when min_neighbors is fixed, the mode yields less accurate (a bit larger) object rectangle - than the regular single-object mode (flags=FindBiggestObject), - but it is much faster, up to an order of magnitude. A greater value of min_neighbors may be specified to improve the accuracy. - [CV_HAAR_DO_ROUGH_SEARCH] - - - - - L2-Hys normalization method - - - - - [HOGDescriptor::L2Hys] - - - - - HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector - - - - - - - - - - - - - - - Returns coefficients of the classifier trained for people detection (for default window size). - - - - - This field returns 1981 SVM coeffs obtained from daimler's base. - To use these coeffs the detection window size should be (48,96) - - - - - Default constructor - - - - - Creates the HOG descriptor and detector. - - Detection window size. Align to block size and block stride. - Block size in pixels. Align to cell size. Only (16,16) is supported for now. - Block stride. It must be a multiple of cell size. - Cell size. Only (8, 8) is supported for now. - Number of bins. Only 9 bins per cell are supported for now. - - Gaussian smoothing window parameter. - - L2-Hys normalization method shrinkage. - Flag to specify whether the gamma correction preprocessing is required or not. - Maximum number of detection window increases. - - - - Construct from a file containing HOGDescriptor properties and coefficients for the linear SVM classifier. - - The file name containing HOGDescriptor properties and coefficients for the linear SVM classifier. - - - - Releases unmanaged resources - - - - - Detection window size. Align to block size and block stride. Default value is Size(64,128). - - - - - Block size in pixels. Align to cell size. Default value is Size(16,16). - - - - - Block stride. It must be a multiple of cell size. Default value is Size(8,8). - - - - - Cell size. Default value is Size(8,8). - - - - - Number of bins used in the calculation of histogram of gradients. Default value is 9. - - - - - - - - - - Gaussian smoothing window parameter. - - - - - HistogramNormType - - - - - L2-Hys normalization method shrinkage. - - - - - Flag to specify whether the gamma correction preprocessing is required or not. - - - - - Maximum number of detection window increases. Default value is 64 - - - - - Indicates signed gradient will be used or not - - - - - Returns coefficients of the classifier trained for people detection (for default window size). - - - - - - This method returns 1981 SVM coeffs obtained from daimler's base. - To use these coeffs the detection window size should be (48,96) - - - - - - Sets coefficients for the linear SVM classifier. - - coefficients for the linear SVM classifier. - - - - loads HOGDescriptor parameters and coefficients for the linear SVM classifier from a file. - - Path of the file to read. - The optional name of the node to read (if empty, the first top-level node will be used). - - - - - saves HOGDescriptor parameters and coefficients for the linear SVM classifier to a file - - File name - Object name - - - - - - - - - - - - - - - - - - - - - - Computes HOG descriptors of given image. - - Matrix of the type CV_8U containing an image where HOG features will be calculated. - Window stride. It must be a multiple of block stride. - Padding - Vector of Point - Matrix of the type CV_32F - - - - Performs object detection without a multi-scale window. - - Source image. CV_8UC1 and CV_8UC4 types are supported for now. - Threshold for the distance between features and SVM classifying plane. - Usually it is 0 and should be specified in the detector coefficients (as the last free coefficient). - But if the free coefficient is omitted (which is allowed), you can specify it manually here. - Window stride. It must be a multiple of block stride. - Mock parameter to keep the CPU interface compatibility. It must be (0,0). - - Left-top corner points of detected objects boundaries. - - - - Performs object detection without a multi-scale window. - - Source image. CV_8UC1 and CV_8UC4 types are supported for now. - - Threshold for the distance between features and SVM classifying plane. - Usually it is 0 and should be specfied in the detector coefficients (as the last free coefficient). - But if the free coefficient is omitted (which is allowed), you can specify it manually here. - Window stride. It must be a multiple of block stride. - Mock parameter to keep the CPU interface compatibility. It must be (0,0). - - Left-top corner points of detected objects boundaries. - - - - Performs object detection with a multi-scale window. - - Source image. CV_8UC1 and CV_8UC4 types are supported for now. - Threshold for the distance between features and SVM classifying plane. - Window stride. It must be a multiple of block stride. - Mock parameter to keep the CPU interface compatibility. It must be (0,0). - Coefficient of the detection window increase. - Coefficient to regulate the similarity threshold. - When detected, some objects can be covered by many rectangles. 0 means not to perform grouping. - Detected objects boundaries. - - - - Performs object detection with a multi-scale window. - - Source image. CV_8UC1 and CV_8UC4 types are supported for now. - - Threshold for the distance between features and SVM classifying plane. - Window stride. It must be a multiple of block stride. - Mock parameter to keep the CPU interface compatibility. It must be (0,0). - Coefficient of the detection window increase. - Coefficient to regulate the similarity threshold. - When detected, some objects can be covered by many rectangles. 0 means not to perform grouping. - Detected objects boundaries. - - - - Computes gradients and quantized gradient orientations. - - Matrix contains the image to be computed - Matrix of type CV_32FC2 contains computed gradients - Matrix of type CV_8UC2 contains quantized gradient orientations - Padding from top-left - Padding from bottom-right - - - - evaluate specified ROI and return confidence value for each location - - Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. - Vector of Point - Vector of Point where each Point is detected object's top-left point. - confidences - Threshold for the distance between features and SVM classifying plane. Usually - it is 0 and should be specified in the detector coefficients (as the last free coefficient). But if - the free coefficient is omitted (which is allowed), you can specify it manually here - winStride - padding - - - - evaluate specified ROI and return confidence value for each location in multiple scales - - Matrix of the type CV_8U or CV_8UC3 containing an image where objects are detected. - Vector of rectangles where each rectangle contains the detected object. - Vector of DetectionROI - Threshold for the distance between features and SVM classifying plane. Usually it is 0 and should be specified - in the detector coefficients (as the last free coefficient). But if the free coefficient is omitted (which is allowed), you can specify it manually here. - Minimum possible number of rectangles minus 1. The threshold is used in a group of rectangles to retain it. - - - - Groups the object candidate rectangles. - - Input/output vector of rectangles. Output vector includes retained and grouped rectangles. (The Python list is not modified in place.) - Input/output vector of weights of rectangles. Output vector includes weights of retained and grouped rectangles. (The Python list is not modified in place.) - Minimum possible number of rectangles minus 1. The threshold is used in a group of rectangles to retain it. - Relative difference between sides of the rectangles to merge them into a group. - - - - struct for detection region of interest (ROI) - - - - - scale(size) of the bounding box - - - - - set of requested locations to be evaluated - - - - - vector that will contain confidence values for each location - - - - - Constructor - - - - - - - - - - - - - - - Releases unmanaged resources - - - - - sets the epsilon used during the horizontal scan of QR code stop marker detection. - - Epsilon neighborhood, which allows you to determine the horizontal pattern - of the scheme 1:1:3:1:1 according to QR code standard. - - - - sets the epsilon used during the vertical scan of QR code stop marker detection. - - Epsilon neighborhood, which allows you to determine the vertical pattern - of the scheme 1:1:3:1:1 according to QR code standard. - - - - Detects QR code in image and returns the quadrangle containing the code. - - grayscale or color (BGR) image containing (or not) QR code. - Output vector of vertices of the minimum-area quadrangle containing the code. - - - - - Decodes QR code in image once it's found by the detect() method. - Returns UTF8-encoded output string or empty string if the code cannot be decoded. - - grayscale or color (BGR) image containing QR code. - Quadrangle vertices found by detect() method (or some other algorithm). - The optional output image containing rectified and binarized QR code - - - - - Both detects and decodes QR code - - grayscale or color (BGR) image containing QR code. - optional output array of vertices of the found QR code quadrangle. Will be empty if not found. - The optional output image containing rectified and binarized QR code - - - - - Detects QR codes in image and returns the quadrangles containing the codes. - - grayscale or color (BGR) image containing (or not) QR code. - Output vector of vertices of the minimum-area quadrangle containing the codes. - - - - - Decodes QR codes in image once it's found by the detect() method. - Returns UTF8-encoded output string or empty string if the code cannot be decoded. - - grayscale or color (BGR) image containing QR code. - Quadrangle vertices found by detect() method (or some other algorithm). - UTF8-encoded output vector of string or empty vector of string if the codes cannot be decoded. - - - - - Decodes QR codes in image once it's found by the detect() method. - Returns UTF8-encoded output string or empty string if the code cannot be decoded. - - grayscale or color (BGR) image containing QR code. - Quadrangle vertices found by detect() method (or some other algorithm). - UTF8-encoded output vector of string or empty vector of string if the codes cannot be decoded. - The optional output image containing rectified and binarized QR code - - - - - Decodes QR codes in image once it's found by the detect() method. - Returns UTF8-encoded output string or empty string if the code cannot be decoded. - - grayscale or color (BGR) image containing QR code. - Quadrangle vertices found by detect() method (or some other algorithm). - UTF8-encoded output vector of string or empty vector of string if the codes cannot be decoded. - The optional output image containing rectified and binarized QR code - to output - - - - - Class for grouping object candidates, detected by Cascade Classifier, HOG etc. - instance of the class is to be passed to cv::partition (see cxoperations.hpp) - - - - - - - - - - - - - - cv::optflow functions - - - - - Updates motion history image using the current silhouette - - Silhouette mask that has non-zero pixels where the motion occurs. - Motion history image that is updated by the function (single-channel, 32-bit floating-point). - Current time in milliseconds or other units. - Maximal duration of the motion track in the same units as timestamp . - - - - Computes the motion gradient orientation image from the motion history image - - Motion history single-channel floating-point image. - Output mask image that has the type CV_8UC1 and the same size as mhi. - Its non-zero elements mark pixels where the motion gradient data is correct. - Output motion gradient orientation image that has the same type and the same size as mhi. - Each pixel of the image is a motion orientation, from 0 to 360 degrees. - Minimal (or maximal) allowed difference between mhi values within a pixel neighborhood. - Maximal (or minimal) allowed difference between mhi values within a pixel neighborhood. - That is, the function finds the minimum ( m(x,y) ) and maximum ( M(x,y) ) mhi values over 3x3 neighborhood of each pixel - and marks the motion orientation at (x, y) as valid only if: - min(delta1, delta2) <= M(x,y)-m(x,y) <= max(delta1, delta2). - - - - - Computes the global orientation of the selected motion history image part - - Motion gradient orientation image calculated by the function CalcMotionGradient() . - Mask image. It may be a conjunction of a valid gradient mask, also calculated by CalcMotionGradient() , - and the mask of a region whose direction needs to be calculated. - Motion history image calculated by UpdateMotionHistory() . - Timestamp passed to UpdateMotionHistory() . - Maximum duration of a motion track in milliseconds, passed to UpdateMotionHistory() . - - - - - Splits a motion history image into a few parts corresponding to separate independent motions - (for example, left hand, right hand). - - Motion history image. - Image where the found mask should be stored, single-channel, 32-bit floating-point. - Vector containing ROIs of motion connected components. - Current time in milliseconds or other units. - Segmentation threshold that is recommended to be equal to the interval between motion history “steps” or greater. - - - - computes dense optical flow using Simple Flow algorithm - - First 8-bit 3-channel image. - Second 8-bit 3-channel image - Estimated flow - Number of layers - Size of block through which we sum up when calculate cost function for pixel - maximal flow that we search at each level - - - - computes dense optical flow using Simple Flow algorithm - - First 8-bit 3-channel image. - Second 8-bit 3-channel image - Estimated flow - Number of layers - Size of block through which we sum up when calculate cost function for pixel - maximal flow that we search at each level - vector smooth spatial sigma parameter - vector smooth color sigma parameter - window size for postprocess cross bilateral filter - spatial sigma for postprocess cross bilateralf filter - color sigma for postprocess cross bilateral filter - threshold for detecting occlusions - window size for bilateral upscale operation - spatial sigma for bilateral upscale operation - color sigma for bilateral upscale operation - threshold to detect point with irregular flow - where flow should be recalculated after upscale - - - - Fast dense optical flow based on PyrLK sparse matches interpolation. - - first 8-bit 3-channel or 1-channel image. - second 8-bit 3-channel or 1-channel image of the same size as from - computed flow image that has the same size as from and CV_32FC2 type - stride used in sparse match computation. Lower values usually - result in higher quality but slow down the algorithm. - number of nearest-neighbor matches considered, when fitting a locally affine - model. Lower values can make the algorithm noticeably faster at the cost of some quality degradation. - parameter defining how fast the weights decrease in the locally-weighted affine - fitting. Higher values can help preserve fine details, lower values can help to get rid of the noise in the output flow. - defines whether the ximgproc::fastGlobalSmootherFilter() is used for post-processing after interpolation - see the respective parameter of the ximgproc::fastGlobalSmootherFilter() - see the respective parameter of the ximgproc::fastGlobalSmootherFilter() - - - - The base class for camera response calibration algorithms. - - - - - Recovers inverse camera response. - - vector of input images - 256x1 matrix with inverse camera response function - vector of exposure time values for each image - - - - CalibrateDebevec object - - - - - Creates instance by raw pointer cv::CalibrateDebevec* - - - - - Creates the empty model. - - number of pixel locations to use - smoothness term weight. Greater values produce smoother results, - but can alter the response. - if true sample pixel locations are chosen at random, - otherwise the form a rectangular grid. - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - CalibrateRobertson object - - - - - Creates instance by raw pointer cv::CalibrateRobertson* - - - - - Creates CalibrateRobertson object - - maximal number of Gauss-Seidel solver iterations. - target difference between results of two successive steps of the minimization. - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - Edge preserving filters - - - - - Recursive Filtering - - - - - Normalized Convolution Filtering - - - - - The inpainting method - - - - - Navier-Stokes based method. - - - - - The method by Alexandru Telea - - - - - The resulting HDR image is calculated as weighted average of the exposures considering exposure - values and camera response. - - For more information see @cite DM97 . - - - - - Creates instance by MergeDebevec* - - - - - Creates the empty model. - - - - - - Releases managed resources - - - - - The base class algorithms that can merge exposure sequence to a single image. - - - - - Merges images. - - vector of input images - result image - vector of exposure time values for each image - 256x1 matrix with inverse camera response function for each pixel value, it should have the same number of channels as images. - - - - Pixels are weighted using contrast, saturation and well-exposedness measures, than images are combined using laplacian pyramids. - - The resulting image weight is constructed as weighted average of contrast, saturation and well-exposedness measures. - - The resulting image doesn't require tonemapping and can be converted to 8-bit image by multiplying by 255, - but it's recommended to apply gamma correction and/or linear tonemapping. - - For more information see @cite MK07 . - - - - - Creates instance by MergeMertens* - - - - - Creates the empty model. - - - - - - Short version of process, that doesn't take extra arguments. - - vector of input images - result image - - - - Releases managed resources - - - - - SeamlessClone method - - - - - The power of the method is fully expressed when inserting objects with - complex outlines into a new background. - - - - - The classic method, color-based selection and alpha masking might be time - consuming and often leaves an undesirable halo. Seamless cloning, even averaged - with the original image, is not effective. Mixed seamless cloning based on a - loose selection proves effective. - - - - - Feature exchange allows the user to easily replace certain features of one - object by alternative features. - - - - - Base class for tonemapping algorithms - tools that are used to map HDR image to 8-bit range. - - - - - Constructor used by Tonemap.Create - - - - - Constructor used by subclasses - - - - - Creates simple linear mapper with gamma correction - - positive value for gamma correction. - Gamma value of 1.0 implies no correction, gamma equal to 2.2f is suitable for most displays. - Generally gamma > 1 brightens the image and gamma < 1 darkens it. - - - - - Releases managed resources - - - - - Tonemaps image - - source image - CV_32FC3 Mat (float 32 bits 3 channels) - destination image - CV_32FC3 Mat with values in [0, 1] range - - - - Gets or sets positive value for gamma correction. Gamma value of 1.0 implies no correction, gamma - equal to 2.2f is suitable for most displays. - Generally gamma > 1 brightens the image and gamma < 1 darkens it. - - - - - Adaptive logarithmic mapping is a fast global tonemapping algorithm that scales the image in logarithmic domain. - - Since it's a global operator the same function is applied to all the pixels, it is controlled by the bias parameter. - Optional saturation enhancement is possible as described in @cite FL02. For more information see @cite DM03. - - - - - Constructor - - - - - Creates TonemapDrago object - - positive value for gamma correction. Gamma value of 1.0 implies no correction, gamma - equal to 2.2f is suitable for most displays. - Generally gamma > 1 brightens the image and gamma < 1 darkens it. - positive saturation enhancement value. 1.0 preserves saturation, values greater - than 1 increase saturation and values less than 1 decrease it. - value for bias function in [0, 1] range. Values from 0.7 to 0.9 usually give best - results, default value is 0.85. - - - - - Releases managed resources - - - - - Gets or sets positive saturation enhancement value. 1.0 preserves saturation, values greater - than 1 increase saturation and values less than 1 decrease it. - - - - - Gets or sets value for bias function in [0, 1] range. Values from 0.7 to 0.9 usually give best - results, default value is 0.85. - - - - - This algorithm transforms image to contrast using gradients on all levels of gaussian pyramid, - transforms contrast values to HVS response and scales the response. After this the image is - reconstructed from new contrast values. - - For more information see @cite MM06. - - - - - Constructor - - - - - Creates TonemapMantiuk object - - positive value for gamma correction. Gamma value of 1.0 implies no correction, gamma - equal to 2.2f is suitable for most displays. - Generally gamma > 1 brightens the image and gamma < 1 darkens it. - contrast scale factor. HVS response is multiplied by this parameter, thus compressing - dynamic range. Values from 0.6 to 0.9 produce best results. - - - - - - Releases managed resources - - - - - Gets or sets contrast scale factor. HVS response is multiplied by this parameter, thus compressing - dynamic range. Values from 0.6 to 0.9 produce best results. - - - - - Gets or sets positive saturation enhancement value. 1.0 preserves saturation, values greater - than 1 increase saturation and values less than 1 decrease it. - - - - - This is a global tonemapping operator that models human visual system. - - Mapping function is controlled by adaptation parameter, that is computed using light adaptation and - color adaptation. For more information see @cite RD05. - - - - - Constructor - - - - - Creates TonemapReinhard object - - positive value for gamma correction. Gamma value of 1.0 implies no correction, gamma - equal to 2.2f is suitable for most displays. - Generally gamma > 1 brightens the image and gamma < 1 darkens it. - result intensity in [-8, 8] range. Greater intensity produces brighter results. - light adaptation in [0, 1] range. If 1 adaptation is based only on pixel - value, if 0 it's global, otherwise it's a weighted mean of this two cases. - chromatic adaptation in [0, 1] range. If 1 channels are treated independently, - if 0 adaptation level is the same for each channel. - - - - - Releases managed resources - - - - - Gets or sets result intensity in [-8, 8] range. Greater intensity produces brighter results. - - - - - Gets or sets light adaptation in [0, 1] range. If 1 adaptation is based only on pixel - value, if 0 it's global, otherwise it's a weighted mean of this two cases. - - - - - Gets or sets chromatic adaptation in [0, 1] range. If 1 channels are treated independently, - if 0 adaptation level is the same for each channel. - - - - - Quality Base Class - - - - - Implements Algorithm::empty() - - - - - - Returns output quality map that was generated during computation, if supported by the algorithm - - - - - - Compute quality score per channel with the per-channel score in each element of the resulting cv::Scalar. - See specific algorithm for interpreting result scores - - comparison image, or image to evaluate for no-reference quality algorithms - - - - Implements Algorithm::clear() - - - - - BRISQUE (Blind/Referenceless Image Spatial Quality Evaluator) is a No Reference Image Quality Assessment (NR-IQA) algorithm. - BRISQUE computes a score based on extracting Natural Scene Statistics(https://en.wikipedia.org/wiki/Scene_statistics) - and calculating feature vectors. See Mittal et al. @cite Mittal2 for original paper and original implementation @cite Mittal2_software. - A trained model is provided in the /samples/ directory and is trained on the LIVE-R2 database @cite Sheikh as in the original implementation. - When evaluated against the TID2008 database @cite Ponomarenko, the SROCC is -0.8424 versus the SROCC of -0.8354 in the original implementation. - C++ code for the BRISQUE LIVE-R2 trainer and TID2008 evaluator are also provided in the /samples/ directory. - - - - - Creates instance by raw pointer - - - - - Create an object which calculates quality - - String which contains a path to the BRISQUE model data, eg. /path/to/brisque_model_live.yml - String which contains a path to the BRISQUE range data, eg. /path/to/brisque_range_live.yml - - - - - Create an object which calculates quality - - cv::ml::SVM* which contains a loaded BRISQUE model - cv::Mat which contains BRISQUE range data - - - - - static method for computing quality - - image for which to compute quality - String which contains a path to the BRISQUE model data, eg. /path/to/brisque_model_live.yml - cv::String which contains a path to the BRISQUE range data, eg. /path/to/brisque_range_live.yml - cv::Scalar with the score in the first element. The score ranges from 0 (best quality) to 100 (worst quality) - - - - static method for computing image features used by the BRISQUE algorithm - - image (BGR(A) or grayscale) for which to compute features - output row vector of features to cv::Mat or cv::UMat - - - - Releases managed resources - - - - - Full reference GMSD algorithm - - - - - Creates instance by raw pointer - - - - - Create an object which calculates quality - - input image to use as the source for comparison - - - - - static method for computing quality - - - - output quality map, or null - cv::Scalar with per-channel quality values. Values range from 0 (worst) to 1 (best) - - - - Releases managed resources - - - - - Full reference mean square error algorithm https://en.wikipedia.org/wiki/Mean_squared_error - - - - - Creates instance by raw pointer - - - - - Create an object which calculates quality - - input image to use as the source for comparison - - - - - static method for computing quality - - - - output quality map, or null - cv::Scalar with per-channel quality values. Values range from 0 (worst) to 1 (best) - - - - Releases managed resources - - - - - Full reference peak signal to noise ratio (PSNR) algorithm https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio - - - - - Creates instance by raw pointer - - - - - get or set the maximum pixel value used for PSNR computation - - - - - - Create an object which calculates quality - - input image to use as the source for comparison - maximum per-channel value for any individual pixel; eg 255 for uint8 image - - - - - static method for computing quality - - - - output quality map, or null - maximum per-channel value for any individual pixel; eg 255 for uint8 image - PSNR value, or double.PositiveInfinity if the MSE between the two images == 0 - - - - Releases managed resources - - - - - Full reference structural similarity algorithm https://en.wikipedia.org/wiki/Structural_similarity - - - - - Creates instance by raw pointer - - - - - Create an object which calculates quality - - input image to use as the source for comparison - - - - - static method for computing quality - - - - output quality map, or null - cv::Scalar with per-channel quality values. Values range from 0 (worst) to 1 (best) - - - - Releases managed resources - - - - - A simple Hausdorff distance measure between shapes defined by contours - - - according to the paper "Comparing Images using the Hausdorff distance." - by D.P. Huttenlocher, G.A. Klanderman, and W.J. Rucklidge. (PAMI 1993). : - - - - - - - - - - Complete constructor - - Flag indicating which norm is used to compute the Hausdorff distance (NORM_L1, NORM_L2). - fractional value (between 0 and 1). - - - - - Releases managed resources - - - - - Flag indicating which norm is used to compute the Hausdorff distance (NORM_L1, NORM_L2). - - - - - fractional value (between 0 and 1). - - - - - Implementation of the Shape Context descriptor and matching algorithm - - - proposed by Belongie et al. in "Shape Matching and Object Recognition Using Shape Contexts" - (PAMI2002). This implementation is packaged in a generic scheme, in order to allow - you the implementation of the common variations of the original pipeline. - - - - - - - - - - Complete constructor - - The number of angular bins in the shape context descriptor. - The number of radial bins in the shape context descriptor. - The value of the inner radius. - The value of the outer radius. - - - - - - Releases managed resources - - - - - The number of angular bins in the shape context descriptor. - - - - - The number of radial bins in the shape context descriptor. - - - - - The value of the inner radius. - - - - - The value of the outer radius. - - - - - - - - - - The weight of the shape context distance in the final distance value. - - - - - The weight of the appearance cost in the final distance value. - - - - - The weight of the Bending Energy in the final distance value. - - - - - - - - - - The value of the standard deviation for the Gaussian window for the image appearance cost. - - - - - Set the images that correspond to each shape. - This images are used in the calculation of the Image Appearance cost. - - Image corresponding to the shape defined by contours1. - Image corresponding to the shape defined by contours2. - - - - Get the images that correspond to each shape. - This images are used in the calculation of the Image Appearance cost. - - Image corresponding to the shape defined by contours1. - Image corresponding to the shape defined by contours2. - - - - Abstract base class for shape distance algorithms. - - - - - Compute the shape distance between two shapes defined by its contours. - - Contour defining first shape. - Contour defining second shape. - - - - - Features matcher similar to cv::detail::BestOf2NearestMatcher which - finds two best matches for each feature and leaves the best one only if the - ratio between descriptor distances is greater than the threshold match_conf. - - Unlike cv::detail::BestOf2NearestMatcher this matcher uses affine - transformation (affine transformation estimate will be placed in matches_info). - - - - - Constructs a "best of 2 nearest" matcher that expects affine transformation between images - - whether to use full affine transformation with 6 degress of freedom - or reduced transformation with 4 degrees of freedom using only rotation, translation and - uniform scaling - Should try to use GPU or not - Match distances ration threshold - Minimum number of matches required for the 2D affine transform - estimation used in the inliers classification step - - - - releases unmanaged resources - - - - - Features matcher which finds two best matches for each feature and leaves the best one only if the - ratio between descriptor distances is greater than the threshold match_conf - - - - - Constructs a "best of 2 nearest" matcher. - - Should try to use GPU or not - Match distances ration threshold - Minimum number of matches required for the 2D projective transform - estimation used in the inliers classification step - Minimum number of matches required for the 2D projective transform - re-estimation on inliers - - - - Constructor - - - - - - releases unmanaged resources - - - - - Frees unused memory allocated before if there is any. - - - - - cv::detail functions - - - - - - - - - - - - - - - - - - - - - Feature matchers base class. - - - - - Constructor - - - - - - Performs images matching. - - First image features - Second image features - Found matches - - - - Performs images matching. - - Features of the source images - Mask indicating which image pairs must be matched - Found pairwise matches - - - - True, if it's possible to use the same matcher instance in parallel, false otherwise - - - - - - Frees unused memory allocated before if there is any. - - - - - Structure containing image keypoints and descriptors. - - - - - Constructor - - - - - - - - - Destructor - - - - - - - - - - - - - Structure containing information about matches between two images. - - It's assumed that there is a transformation between those images. Transformation may be - homography or affine transformation based on selected matcher. - - - - - Images indices (optional) - - - - - Images indices (optional) - - - - - - - - - - Geometrically consistent matches mask - - - - - Number of geometrically consistent matches - - - - - Estimated transformation - - - - - Confidence two images are from the same panorama - - - - - Constructor - - - - - - - - - - - - Copy constructor - - - - - - Dispose H - - - - - High level image stitcher. - It's possible to use this class without being aware of the entire stitching - pipeline. However, to be able to achieve higher stitching stability and - quality of the final images at least being familiar with the theory is recommended - - - - - Status code - - - - - Mode for creating photo panoramas. Expects images under perspective - transformation and projects resulting pano to sphere. - - - - - Mode for composing scans. Expects images under affine transformation does - not compensate exposure by default. - - - - - Constructor - - cv::Stitcher* - - - - Creates a Stitcher configured in one of the stitching modes. - - Scenario for stitcher operation. This is usually determined by source of images - to stitch and their transformation.Default parameters will be chosen for operation in given scenario. - - - - Releases managed resources - - - - - Try to stitch the given images. - - Input images. - Final pano. - Status code. - - - - Try to stitch the given images. - - Input images. - Final pano. - Status code. - - - - Try to stitch the given images. - - Input images. - Region of interest rectangles. - Final pano. - Status code. - - - - Try to stitch the given images. - - Input images. - Region of interest rectangles. - Final pano. - Status code. - - - - - - - - - - - - - - - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Clear all inner buffers. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - Releases managed resources - - - - - - - - - - - - - - - - - - - - Base class for Super Resolution algorithms. - - - - - Constructor - - - - - Creates instance from cv::Ptr<T> . - ptr is disposed when the wrapper disposes. - - - - - - - Releases managed resources - - - - - Create Bilateral TV-L1 Super Resolution. - - - - - - Create Bilateral TV-L1 Super Resolution. - - - - - - Set input frame source for Super Resolution algorithm. - - Input frame source - - - - Process next frame from input and return output result. - - Output result - - - - - - - - Clear all inner buffers. - - - - - - - - - - - - - - - - Scale factor - - - - - Iterations count - - - - - Asymptotic value of steepest descent method - - - - - Weight parameter to balance data term and smoothness term - - - - - Parameter of spacial distribution in Bilateral-TV - - - - - Kernel size of Bilateral-TV filter - - - - - Gaussian blur kernel size - - - - - Gaussian blur sigma - - - - - Radius of the temporal search area - - - - - base class BaseOCR declares a common API that would be used in a typical text recognition scenario - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cv::text functions - - - - - Applies the Stroke Width Transform operator followed by filtering of connected components of similar Stroke Widths to - return letter candidates. It also chain them by proximity and size, saving the result in chainBBs. - - input the input image with 3 channels. - a boolean value signifying whether the text is darker or lighter than the background, - it is observed to reverse the gradient obtained from Scharr operator, and significantly affect the result. - an optional Mat of type CV_8UC3 which visualises the detected letters using bounding boxes. - an optional parameter which chains the letter candidates according to heuristics in the - paper and returns all possible regions where text is likely to occur. - a vector of resulting bounding boxes where probability of finding text is high - - - - Recognize text using the tesseract-ocr API. - - Takes image on input and returns recognized text in the output_text parameter. - Optionallyprovides also the Rects for individual text elements found(e.g.words), - and the list of those text elements with their confidence values. - - - - - Constructor - - - - - - Creates an instance of the OCRTesseract class. Initializes Tesseract. - - datapath the name of the parent directory of tessdata ended with "/", or null to use the system's default directory. - an ISO 639-3 code or NULL will default to "eng". - specifies the list of characters used for recognition. - null defaults to "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ". - tesseract-ocr offers different OCR Engine Modes (OEM), - by deffault tesseract::OEM_DEFAULT is used.See the tesseract-ocr API documentation for other possible values. - tesseract-ocr offers different Page Segmentation Modes (PSM) tesseract::PSM_AUTO (fully automatic layout analysis) is used. - See the tesseract-ocr API documentation for other possible values. - - - - Releases managed resources - - - - - Recognize text using the tesseract-ocr API. - Takes image on input and returns recognized text in the output_text parameter. - Optionally provides also the Rects for individual text elements found(e.g.words), - and the list of those text elements with their confidence values. - - Input image CV_8UC1 or CV_8UC3 - Output text of the tesseract-ocr. - If provided the method will output a list of Rects for the individual - text elements found(e.g.words or text lines). - If provided the method will output a list of text strings for the - recognition of individual text elements found(e.g.words or text lines). - If provided the method will output a list of confidence values - for the recognition of individual text elements found(e.g.words or text lines). - OCR_LEVEL_WORD (by default), or OCR_LEVEL_TEXT_LINE. - - - - Recognize text using the tesseract-ocr API. - Takes image on input and returns recognized text in the output_text parameter. - Optionally provides also the Rects for individual text elements found(e.g.words), - and the list of those text elements with their confidence values. - - Input image CV_8UC1 or CV_8UC3 - - Output text of the tesseract-ocr. - If provided the method will output a list of Rects for the individual - text elements found(e.g.words or text lines). - If provided the method will output a list of text strings for the - recognition of individual text elements found(e.g.words or text lines). - If provided the method will output a list of confidence values - for the recognition of individual text elements found(e.g.words or text lines). - OCR_LEVEL_WORD (by default), or OCR_LEVEL_TEXT_LINE. - - - - - - - - - - An abstract class providing interface for text detection algorithms - - - - - Method that provides a quick and simple interface to detect text inside an image - - an image to process - a vector of Rect that will store the detected word bounding box - a vector of float that will be updated with the confidence the classifier has for the selected bounding box - - - - TextDetectorCNN class provides the functionality of text bounding box detection. - - - This class is representing to find bounding boxes of text words given an input image. - This class uses OpenCV dnn module to load pre-trained model described in @cite LiaoSBWL17. - The original repository with the modified SSD Caffe version: https://github.com/MhLiao/TextBoxes. - Model can be downloaded from[DropBox](https://www.dropbox.com/s/g8pjzv2de9gty8g/TextBoxes_icdar13.caffemodel?dl=0). - Modified.prototxt file with the model description can be found in `opencv_contrib/modules/text/samples/textbox.prototxt`. - - - - - cv::Ptr<T> - - - - - Creates an instance of the TextDetectorCNN class using the provided parameters. - - the relative or absolute path to the prototxt file describing the classifiers architecture. - the relative or absolute path to the file containing the pretrained weights of the model in caffe-binary form. - a list of sizes for multiscale detection. The values`[(300,300),(700,500),(700,300),(700,700),(1600,1600)]` - are recommended in @cite LiaoSBWL17 to achieve the best quality. - - - - - Creates an instance of the TextDetectorCNN class using the provided parameters. - - the relative or absolute path to the prototxt file describing the classifiers architecture. - the relative or absolute path to the file containing the pretrained weights of the model in caffe-binary form. - - - - - Releases managed resources - - - - - Method that provides a quick and simple interface to detect text inside an image - - an image to process - a vector of Rect that will store the detected word bounding box - a vector of float that will be updated with the confidence the classifier has for the selected bounding box - - - - - the CSRT tracker - The implementation is based on @cite Lukezic_IJCV2018 Discriminative Correlation Filter with Channel and Spatial Reliability - - - - - - - - - - Constructor - - - - - - Constructor - - CSRT parameters - - - - - - - - - - - CSRT Params - - - - - Window function: "hann", "cheb", "kaiser" - - - - - we lost the target, if the psr is lower than this. - - - - - - KCF is a novel tracking framework that utilizes properties of circulant matrix to enhance the processing speed. - * This tracking method is an implementation of @cite KCF_ECCV which is extended to KFC with color-names features(@cite KCF_CN). - * The original paper of KCF is available at [http://www.robots.ox.ac.uk/~joao/publications/henriques_tpami2015.pdf] - * as well as the matlab implementation.For more information about KCF with color-names features, please refer to - * [http://www.cvl.isy.liu.se/research/objrec/visualtracking/colvistrack/index.html]. - - - - - - - - - - Constructor - - - - - - Constructor - - KCF parameters TrackerKCF::Params - - - - - - - - - detection confidence threshold - - - - - gaussian kernel bandwidth - - - - - regularization - - - - - linear interpolation factor for adaptation - - - - - spatial bandwidth (proportional to target) - - - - - compression learning rate - - - - - activate the resize feature to improve the processing speed - - - - - split the training coefficients into two matrices - - - - - wrap around the kernel values - - - - - activate the pca method to compress the features - - - - - threshold for the ROI size - - - - - feature size after compression - - - - - compressed descriptors of TrackerKCF::MODE - - - - - non-compressed descriptors of TrackerKCF::MODE - - - - - channel indices for multi-head camera live streams - - - - - Depth values in mm (CV_16UC1) - - - - - XYZ in meters (CV_32FC3) - - - - - Disparity in pixels (CV_8UC1) - - - - - Disparity in pixels (CV_32FC1) - - - - - CV_8UC1 - - - - - Position in relative units - - - - - Start of the file - - - - - End of the file - - - - - Capture type of CvCapture (Camera or AVI file) - - - - - Captures from an AVI file - - - - - Captures from digital camera - - - - - - - - - - Video Acceleration type - Used as value in #CAP_PROP_HW_ACCELERATION and #VIDEOWRITER_PROP_HW_ACCELERATION - note In case of FFmpeg backend, it translated to enum AVHWDeviceType (https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext.h) - - - - - Do not require any specific H/W acceleration, prefer software processing. - Reading of this value means that special H/W accelerated handling is not added or not detected by OpenCV. - - - - - Prefer to use H/W acceleration. If no one supported, then fallback to software processing. - note H/W acceleration may require special configuration of used environment. - note Results in encoding scenario may differ between software and hardware accelerated encoders. - - - - - DirectX 11 - - - - - VAAPI - - - - - libmfx (Intel MediaSDK/oneVPL) - - - - - Camera device types - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/videoio/include/opencv2/videoio.hpp#L89 - - - - - Auto detect == 0 - - - - - V4L/V4L2 capturing support - - - - - Same as CAP_V4L - - - - - IEEE 1394 drivers - - - - - Same value as CAP_FIREWIRE - - - - - Same value as CAP_FIREWIRE - - - - - Same value as CAP_FIREWIRE - - - - - Same value as CAP_FIREWIRE - - - - - DirectShow (via videoInput) - - - - - PvAPI, Prosilica GigE SDK - - - - - OpenNI (for Kinect) - - - - - OpenNI (for Asus Xtion) - - - - - Android - not used - - - - - XIMEA Camera API - - - - - AVFoundation framework for iOS (OS X Lion will have the same API) - - - - - Smartek Giganetix GigEVisionSDK - - - - - Microsoft Media Foundation (via videoInput) - - - - - Microsoft Windows Runtime using Media Foundation - - - - - RealSense (former Intel Perceptual Computing SDK) - - - - - Synonym for CAP_INTELPERC - - - - - OpenNI2 (for Kinect) - - - - - OpenNI2 (for Asus Xtion and Occipital Structure sensors) - - - - - gPhoto2 connection - - - - - GStreamer - - - - - Open and record video file or stream using the FFMPEG library - - - - - OpenCV Image Sequence (e.g. img_%02d.jpg) - - - - - Aravis SDK - - - - - Built-in OpenCV MotionJPEG codec - - - - - Intel MediaSDK - - - - - XINE engine (Linux) - - - - - uEye Camera API - - - - - Parameters of VideoCature for hardware acceleration - Please check the link below for current HW acceleration types support matrix - https://github.com/opencv/opencv/wiki/Video-IO-hardware-acceleration - - - - - Used as value in #CAP_PROP_HW_ACCELERATION and #VIDEOWRITER_PROP_HW_ACCELERATION - note In case of FFmpeg backend, it translated to enum AVHWDeviceType (https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext.h) - - - - - Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. - - - - - Constructor, parameter of VideoCature for hardware acceleration - - - - - Constructor, parameter of VideoCature for hardware acceleration - - Video Acceleration type - Hardware device index - - - - Get parameters of VideoCature for hardware acceleration - - - - - Property identifiers for CvCapture - - - https://github.com/opencv/opencv/blob/d3bc563c6e01c2bc153f23e7393322a95c7d3974/modules/videoio/include/opencv2/videoio.hpp#L133 - - - - - Position in milliseconds from the file beginning - - - - - Position in frames (only for video files) - - - - - Position in relative units (0 - start of the file, 1 - end of the file) - - - - - Width of frames in the video stream (only for cameras) - - - - - Height of frames in the video stream (only for cameras) - - - - - Frame rate (only for cameras) - - - - - 4-character code of codec (only for cameras). - - - - - Number of frames in the video stream - - - - - The format of the Mat objects returned by retrieve() - - - - - A backend-specific value indicating the current capture mode - - - - - Brightness of image (only for cameras) - - - - - contrast of image (only for cameras) - - - - - Saturation of image (only for cameras) - - - - - hue of image (only for cameras) - - - - - Gain of the image (only for cameras) - - - - - Exposure (only for cameras) - - - - - Boolean flags indicating whether images should be converted to RGB - - - - - - - - - - TOWRITE (note: only supported by DC1394 v 2.x backend currently) - - - - - - - - - - - - - - - exposure control done by camera, - user can adjust refernce level using this feature - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pop up video/camera filter dialog (note: only supported by DSHOW backend currently. Property value is ignored) - - - - - - - - - - - - - - - Sample aspect ratio: num/den (num) - - - - - Sample aspect ratio: num/den (den) - - - - - Current backend (enum VideoCaptureAPIs). Read-only property - - - - - Video input or Channel Number (only for those cameras that support) - - - - - enable/ disable auto white-balance - - - - - white-balance color temperature - - - - - (read-only) codec's pixel format. 4-character code - see VideoWriter::fourcc . Subset of [AV_PIX_FMT_*](https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/raw.c) or -1 if unknown - - - - - (read-only) Video bitrate in kbits/s - - - - - (read-only) Frame rotation defined by stream meta (applicable for FFmpeg back-end only) - - - - - if true - rotates output frames of CvCapture considering video file's metadata (applicable for FFmpeg back-end only) (https://github.com/opencv/opencv/issues/15499) - - - - - (open-only) Hardware acceleration type (see VideoAccelerationType). - Setting supported only via params parameter in cv::VideoCapture constructor / .open() method. - Default value is backend-specific. - - - - - (open-only) Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. - - - - - - - - - - in mm - - - - - in mm - - - - - in pixels - - - - - flag that synchronizes the remapping depth map to image map - by changing depth generator's view point (if the flag is "on") or - sets this view point to its normal one (if the flag is "off"). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - default is 1 - - - - - ip for anable multicast master mode. 0 for disable multicast - - - - - Determines how a frame is initiated - - - - - Horizontal sub-sampling of the image - - - - - Vertical sub-sampling of the image - - - - - Horizontal binning factor - - - - - Vertical binning factor - - - - - Pixel format - - - - - Change image resolution by binning or skipping. - - - - - Output data format. - - - - - Horizontal offset from the origin to the area of interest (in pixels). - - - - - Vertical offset from the origin to the area of interest (in pixels). - - - - - Defines source of trigger. - - - - - Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE. - - - - - Selects general purpose input - - - - - Set general purpose input mode - - - - - Get general purpose level - - - - - Selects general purpose output - - - - - Set general purpose output mode - - - - - Selects camera signalling LED - - - - - Define camera signalling LED functionality - - - - - Calculates White Balance(must be called during acquisition) - - - - - Automatic white balance - - - - - Automatic exposure/gain - - - - - Exposure priority (0.5 - exposure 50%, gain 50%). - - - - - Maximum limit of exposure in AEAG procedure - - - - - Maximum limit of gain in AEAG procedure - - - - - Average intensity of output signal AEAG should achieve(in %) - - - - - Image capture timeout in milliseconds - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Capture only preview from liveview mode. - - - - - Readonly, returns (const char *). - - - - - Trigger, only by set. Reload camera settings. - - - - - Reload all settings on set. - - - - - Collect messages with details. - - - - - Readonly, returns (const char *). - - - - - Exposure speed. Can be readonly, depends on camera program. - - - - - Aperture. Can be readonly, depends on camera program. - - - - - Camera exposure program. - - - - - Enter liveview mode. - - - - - Parameters of VideoWriter for hardware acceleration - Please check the link below for current HW acceleration types support matrix - https://github.com/opencv/opencv/wiki/Video-IO-hardware-acceleration - - - - - Used as value in #CAP_PROP_HW_ACCELERATION and #VIDEOWRITER_PROP_HW_ACCELERATION - note In case of FFmpeg backend, it translated to enum AVHWDeviceType (https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/hwcontext.h) - - - - - Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. - - - - - Constructor, parameter of VideoWriter for hardware acceleration - - - - - Constructor, parameter of VideoWriter for hardware acceleration - - Video Acceleration type - Hardware device index - - - - Get parameters of VideoWriter for hardware acceleration - - - - - VideoWriter generic properties identifier. - - - - - Current quality (0..100%) of the encoded video stream. Can be adjusted dynamically in some codecs. - - - - - (Read-only): Size of just encoded video frame. Note that the encoding order may be different from representation order. - - - - - Number of stripes for parallel encoding. -1 for auto detection. - - - - - If it is not zero, the encoder will expect and encode color frames, otherwise it will work with grayscale frames. - - - - - Defaults to CV_8U. - - - - - (open-only) Hardware acceleration type (see VideoAccelerationType). - Setting supported only via params parameter in cv::VideoCapture constructor / .open() method. - Default value is backend-specific. - - - - - (open-only) Hardware device index (select GPU if multiple available). Device enumeration is acceleration type specific. - - - - - 4-character code of codec used to compress the frames. - - - - - int value - - - - - Constructor - - - - - - Create from four characters - - - - - - - - - - Create from string (length == 4) - - - - - - - implicit cast to int - - - - - - cast to int - - - - - - implicit cast from int - - - - - - cast from int - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Video capturing class - - - - - Capture type (File or Camera) - - - - - Initializes empty capture. - To use this, you should call Open. - - - - - - Opens a camera for video capturing - - id of the video capturing device to open. To open default camera using default backend just pass 0. - (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) - preferred Capture API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. - - - - - Opens a camera for video capturing with API Preference and parameters - - id of the video capturing device to open. To open default camera using default backend just pass 0. - (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) - preferred Capture API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. - The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`. - See cv::VideoCaptureProperties - - - - - Opens a camera for video capturing with API Preference and parameters - - id of the video capturing device to open. To open default camera using default backend just pass 0. - (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) - preferred Capture API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. - Parameters of VideoCature for hardware acceleration - - - - - Opens a camera for video capturing - - id of the video capturing device to open. To open default camera using default backend just pass 0. - (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) - preferred Capture API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. - - - - - Opens a video file or a capturing device or an IP video stream for video capturing with API Preference - - it can be: - - name of video file (eg. `video.avi`) - - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) - - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). - Note that each video stream or IP camera feed has its own URL scheme. Please refer to the - documentation of source stream to know the right URL. - apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader - implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. - - - - - Opens a video file or a capturing device or an IP video stream for video capturing with API Preference - - it can be: - - name of video file (eg. `video.avi`) - - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) - - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). - Note that each video stream or IP camera feed has its own URL scheme. Please refer to the - documentation of source stream to know the right URL. - apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader - implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. - The `params` parameter allows to specify extra parameters encoded as pairs `(paramId_1, paramValue_1, paramId_2, paramValue_2, ...)`. - See cv::VideoCaptureProperties - - - - - Opens a video file or a capturing device or an IP video stream for video capturing with API Preference - - it can be: - - name of video file (eg. `video.avi`) - - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) - - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). - Note that each video stream or IP camera feed has its own URL scheme. Please refer to the - documentation of source stream to know the right URL. - apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader - implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. - Parameters of VideoCature for hardware acceleration - - - - - Opens a video file or a capturing device or an IP video stream for video capturing with API Preference - - it can be: - - name of video file (eg. `video.avi`) - - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) - - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). - Note that each video stream or IP camera feed has its own URL scheme. Please refer to the - documentation of source stream to know the right URL. - apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader - implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. - - - - - Initializes from native pointer - - CvCapture* - - - - Releases unmanaged resources - - - - - Gets the capture type (File or Camera) - - - - - Gets or sets film current position in milliseconds or video capture timestamp - - - - - Gets or sets 0-based index of the frame to be decoded/captured next - - - - - Gets or sets relative position of video file - - - - - Gets or sets width of frames in the video stream - - - - - Gets or sets height of frames in the video stream - - - - - Gets or sets frame rate - - - - - Gets or sets 4-character code of codec - - - - - Gets number of frames in video file - - - - - Gets or sets brightness of image (only for cameras) - - - - - Gets or sets contrast of image (only for cameras) - - - - - Gets or sets saturation of image (only for cameras) - - - - - Gets or sets hue of image (only for cameras) - - - - - The format of the Mat objects returned by retrieve() - - - - - A backend-specific value indicating the current capture mode - - - - - Gain of the image (only for cameras) - - - - - Exposure (only for cameras) - - - - - Boolean flags indicating whether images should be converted to RGB - - - - - - - - - - TOWRITE (note: only supported by DC1394 v 2.x backend currently) - - - - - - - - - - - - - - - exposure control done by camera, - user can adjust refernce level using this feature - [CV_CAP_PROP_AUTO_EXPOSURE] - - - - - - - - - - - [CV_CAP_PROP_TEMPERATURE] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [CV_CAP_PROP_OPENNI_OUTPUT_MODE] - - - - - in mm - [CV_CAP_PROP_OPENNI_FRAME_MAX_DEPTH] - - - - - in mm - [CV_CAP_PROP_OPENNI_BASELINE] - - - - - in pixels - [CV_CAP_PROP_OPENNI_FOCAL_LENGTH] - - - - - flag that synchronizes the remapping depth map to image map - by changing depth generator's view point (if the flag is "on") or - sets this view point to its normal one (if the flag is "off"). - [CV_CAP_PROP_OPENNI_REGISTRATION] - - - - - - [CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE] - - - - - - [CV_CAP_OPENNI_DEPTH_GENERATOR_BASELINE] - - - - - - [CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH] - - - - - - [CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON] - - - - - default is 1 - [CV_CAP_GSTREAMER_QUEUE_LENGTH] - - - - - ip for anable multicast master mode. 0 for disable multicast - [CV_CAP_PROP_PVAPI_MULTICASTIP] - - - - - Change image resolution by binning or skipping. - [CV_CAP_PROP_XI_DOWNSAMPLING] - - - - - Output data format. - [CV_CAP_PROP_XI_DATA_FORMAT] - - - - - Horizontal offset from the origin to the area of interest (in pixels). - [CV_CAP_PROP_XI_OFFSET_X] - - - - - Vertical offset from the origin to the area of interest (in pixels). - [CV_CAP_PROP_XI_OFFSET_Y] - - - - - Defines source of trigger. - [CV_CAP_PROP_XI_TRG_SOURCE] - - - - - Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE. - [CV_CAP_PROP_XI_TRG_SOFTWARE] - - - - - Selects general purpose input - [CV_CAP_PROP_XI_GPI_SELECTOR] - - - - - Set general purpose input mode - [CV_CAP_PROP_XI_GPI_MODE] - - - - - Get general purpose level - [CV_CAP_PROP_XI_GPI_LEVEL] - - - - - Selects general purpose output - [CV_CAP_PROP_XI_GPO_SELECTOR] - - - - - Set general purpose output mode - [CV_CAP_PROP_XI_GPO_MODE] - - - - - Selects camera signalling LED - [CV_CAP_PROP_XI_LED_SELECTOR] - - - - - Define camera signalling LED functionality - [CV_CAP_PROP_XI_LED_MODE] - - - - - Calculates White Balance(must be called during acquisition) - [CV_CAP_PROP_XI_MANUAL_WB] - - - - - Automatic white balance - [CV_CAP_PROP_XI_AUTO_WB] - - - - - Automatic exposure/gain - [CV_CAP_PROP_XI_AEAG] - - - - - Exposure priority (0.5 - exposure 50%, gain 50%). - [CV_CAP_PROP_XI_EXP_PRIORITY] - - - - - Maximum limit of exposure in AEAG procedure - [CV_CAP_PROP_XI_AE_MAX_LIMIT] - - - - - Maximum limit of gain in AEAG procedure - [CV_CAP_PROP_XI_AG_MAX_LIMIT] - - - - - default is 1 - [CV_CAP_PROP_XI_AEAG_LEVEL] - - - - - default is 1 - [CV_CAP_PROP_XI_TIMEOUT] - - - - - Opens a video file or a capturing device or an IP video stream for video capturing. - - it can be: - - name of video file (eg. `video.avi`) - - or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`) - - or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`). - Note that each video stream or IP camera feed has its own URL scheme. Please refer to the - documentation of source stream to know the right URL. - apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader - implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW. - `true` if the file has been successfully opened - - - - Opens a camera for video capturing - - id of the video capturing device to open. To open default camera using default backend just pass 0. - (to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY) - preferred Capture API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L. - `true` if the file has been successfully opened - - - - Returns true if video capturing has been initialized already. - - - - - - Closes video file or capturing device. - - - - - - Grabs the next frame from video file or capturing device. - - The method/function grabs the next frame from video file or camera and returns true (non-zero) in the case of success. - - The primary use of the function is in multi-camera environments, especially when the cameras do not - have hardware synchronization. That is, you call VideoCapture::grab() for each camera and after that - call the slower method VideoCapture::retrieve() to decode and get frame from each camera. This way - the overhead on demosaicing or motion jpeg decompression etc. is eliminated and the retrieved frames - from different cameras will be closer in time. - - Also, when a connected camera is multi-head (for example, a stereo camera or a Kinect device), the - correct way of retrieving data from it is to call VideoCapture::grab() first and then call - VideoCapture::retrieve() one or more times with different values of the channel parameter. - - `true` (non-zero) in the case of success. - - - - Decodes and returns the grabbed video frame. - - The method decodes and returns the just grabbed frame. If no frames has been grabbed - (camera has been disconnected, or there are no more frames in video file), the method returns false - and the function returns an empty image (with %cv::Mat, test it with Mat::empty()). - - the video frame is returned here. If no frames has been grabbed the image will be empty. - it could be a frame index or a driver specific flag - - - - - Decodes and returns the grabbed video frame. - - The method decodes and returns the just grabbed frame. If no frames has been grabbed - (camera has been disconnected, or there are no more frames in video file), the method returns false - and the function returns an empty image (with %cv::Mat, test it with Mat::empty()). - - the video frame is returned here. If no frames has been grabbed the image will be empty. - non-zero streamIdx is only valid for multi-head camera live streams - - - - - Decodes and returns the grabbed video frame. - - The method decodes and returns the just grabbed frame. If no frames has been grabbed - (camera has been disconnected, or there are no more frames in video file), the method returns false - and the function returns an empty image (with %cv::Mat, test it with Mat::empty()). - - the video frame is returned here. If no frames has been grabbed the image will be empty. - it could be a frame index or a driver specific flag - - - - - Decodes and returns the grabbed video frame. - - The method decodes and returns the just grabbed frame. If no frames has been grabbed - (camera has been disconnected, or there are no more frames in video file), the method returns false - and the function returns an empty image (with %cv::Mat, test it with Mat::empty()). - - the video frame is returned here. If no frames has been grabbed the image will be empty. - non-zero streamIdx is only valid for multi-head camera live streams - - - - - Decodes and returns the grabbed video frame. - - The method decodes and returns the just grabbed frame. If no frames has been grabbed - (camera has been disconnected, or there are no more frames in video file), the method returns false - and the function returns an empty image (with %cv::Mat, test it with Mat::empty()). - - the video frame is returned here. If no frames has been grabbed the image will be empty. - - - - Grabs, decodes and returns the next video frame. - - The method/function combines VideoCapture::grab() and VideoCapture::retrieve() in one call. This is the - most convenient method for reading video files or capturing data from decode and returns the just - grabbed frame. If no frames has been grabbed (camera has been disconnected, or there are no more - frames in video file), the method returns false and the function returns empty image (with %cv::Mat, test it with Mat::empty()). - - `false` if no frames has been grabbed - - - - Grabs, decodes and returns the next video frame. - - The method/function combines VideoCapture::grab() and VideoCapture::retrieve() in one call. This is the - most convenient method for reading video files or capturing data from decode and returns the just - grabbed frame. If no frames has been grabbed (camera has been disconnected, or there are no more - frames in video file), the method returns false and the function returns empty image (with %cv::Mat, test it with Mat::empty()). - - `false` if no frames has been grabbed - - - - Sets a property in the VideoCapture. - - Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) - or one from @ref videoio_flags_others - Value of the property. - `true` if the property is supported by backend used by the VideoCapture instance. - - - - Sets a property in the VideoCapture. - - Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) - or one from @ref videoio_flags_others - Value of the property. - `true` if the property is supported by backend used by the VideoCapture instance. - - - - Returns the specified VideoCapture property - - Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) - or one from @ref videoio_flags_others - Value for the specified property. Value 0 is returned when querying a property that is not supported by the backend used by the VideoCapture instance. - - - - Returns the specified VideoCapture property - - Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) - or one from @ref videoio_flags_others - Value for the specified property. Value 0 is returned when querying a property that is not supported by the backend used by the VideoCapture instance. - - - - Returns used backend API name. - Note that stream should be opened. - - - - - - Switches exceptions mode. - methods raise exceptions if not successful instead of returning an error code - - - - - - query if exception mode is active - - - - - - Wait for ready frames from VideoCapture. - - The primary use of the function is in multi-camera environments. - The method fills the ready state vector, grabs video frame, if camera is ready. - - After this call use VideoCapture::retrieve() to decode and fetch frame data. - - input video streams - stream indexes with grabbed frames (ready to use .retrieve() to fetch actual frame) - number of nanoseconds (0 - infinite) - Exception %Exception on stream errors (check .isOpened() - to filter out malformed streams) or VideoCapture type is not supported - `true if streamReady is not empty - - - - For accessing each byte of Int32 value - - - - - AVI Video File Writer - - - - - - - - - - Creates video writer structure. - - Name of the output video file. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). - - - - - Creates video writer structure. - - Name of the output video file. - allows to specify API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). - - - - - Creates video writer structure. - - Name of the output video file. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) - see cv::VideoWriterProperties - - - - - Creates video writer structure. - - Name of the output video file. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - Parameters of VideoWriter for hardware acceleration - - - - - Creates video writer structure. - - Name of the output video file. - allows to specify API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - The `params` parameter allows to specify extra encoder parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) - see cv::VideoWriterProperties - - - - - Creates video writer structure. - - Name of the output video file. - allows to specify API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - Parameters of VideoWriter for hardware acceleration - - - - - Initializes from native pointer - - CvVideoWriter* - - - - Releases unmanaged resources - - - - - Get output video file name - - - - - Frames per second of the output video - - - - - Get size of frame image - - - - - Get whether output frames is color or not - - - - - Creates video writer structure. - - Name of the output video file. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). - - - - - Creates video writer structure. - - Name of the output video file. - allows to specify API backends to use. Can be used to enforce a specific reader implementation - if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER. - 4-character code of codec used to compress the frames. For example, "PIM1" is MPEG-1 codec, "MJPG" is motion-jpeg codec etc. - Under Win32 it is possible to pass null in order to choose compression method and additional compression parameters from dialog. - Frame rate of the created video stream. - Size of video frames. - If it is true, the encoder will expect and encode color frames, otherwise it will work with grayscale frames (the flag is currently supported on Windows only). - - - - - Returns true if video writer has been successfully initialized. - - - - - - - - - - - - Writes/appends one frame to video file. - - the written frame. - - - - - Sets a property in the VideoWriter. - - Property identifier from cv::VideoWriterProperties (eg. cv::VIDEOWRITER_PROP_QUALITY) or one of @ref videoio_flags_others - Value of the property. - `true` if the property is supported by the backend used by the VideoWriter instance. - - - - Returns the specified VideoWriter property - - Property identifier from cv::VideoWriterProperties (eg. cv::VIDEOWRITER_PROP_QUALITY) or one of @ref videoio_flags_others - Value for the specified property. Value 0 is returned when querying a property that is not supported by the backend used by the VideoWriter instance. - - - - Concatenates 4 chars to a fourcc code. - This static method constructs the fourcc code of the codec to be used in - the constructor VideoWriter::VideoWriter or VideoWriter::open. - - - - - Concatenates 4 chars to a fourcc code. - This static method constructs the fourcc code of the codec to be used in - the constructor VideoWriter::VideoWriter or VideoWriter::open. - - - - - - - Returns used backend API name. - Note that stream should be opened. - - - - - - The Base Class for Background/Foreground Segmentation. - The class is only used to define the common interface for - the whole family of background/foreground segmentation algorithms. - - - - - the update operator that takes the next video frame and returns the current foreground mask as 8-bit binary image. - - - - - - - - computes a background image - - - - - - K nearest neigbours algorithm - - - - - cv::Ptr<T> - - - - - Creates KNN Background Subtractor - - Length of the history. - Threshold on the squared distance between the pixel and the sample to decide - whether a pixel is close to that sample. This parameter does not affect the background update. - If true, the algorithm will detect shadows and mark them. It decreases the - speed a bit, so if you do not need this feature, set the parameter to false. - - - - - Releases managed resources - - - - - Gets or sets the number of last frames that affect the background model. - - - - - Gets or sets the number of data samples in the background model - - - - - Gets or sets the threshold on the squared distance between the pixel and the sample. - The threshold on the squared distance between the pixel and the sample to decide whether a pixel is close to a data sample. - - - - - Returns the number of neighbours, the k in the kNN. - K is the number of samples that need to be within dist2Threshold in order to decide that that - pixel is matching the kNN background model. - - - - - Returns the shadow detection flag. - If true, the algorithm detects shadows and marks them. See createBackgroundSubtractorKNN for details. - - - - - Gets or sets the shadow value. - Shadow value is the value used to mark shadows in the foreground mask. Default value is 127. - Value 0 in the mask always means background, 255 means foreground. - - - - - Gets or sets the shadow threshold. - A shadow is detected if pixel is a darker version of the background. The shadow threshold (Tau in - the paper) is a threshold defining how much darker the shadow can be. Tau= 0.5 means that if a pixel - is more than twice darker then it is not shadow. See Prati, Mikic, Trivedi and Cucchiara, - *Detecting Moving Shadows...*, IEEE PAMI,2003. - - - - - The Base Class for Background/Foreground Segmentation. - The class is only used to define the common interface for - the whole family of background/foreground segmentation algorithms. - - - - - cv::Ptr<T> - - - - - Creates MOG2 Background Subtractor. - - Length of the history. - Threshold on the squared Mahalanobis distance between the pixel and the model - to decide whether a pixel is well described by the background model. This parameter does not affect the background update. - If true, the algorithm will detect shadows and mark them. It decreases the speed a bit, - so if you do not need this feature, set the parameter to false. - - - - - Releases managed resources - - - - - Gets or sets the number of last frames that affect the background model. - - - - - Gets or sets the number of gaussian components in the background model. - - - - - Gets or sets the "background ratio" parameter of the algorithm. - If a foreground pixel keeps semi-constant value for about backgroundRatio\*history frames, it's - considered background and added to the model as a center of a new component. It corresponds to TB - parameter in the paper. - - - - - Gets or sets the variance threshold for the pixel-model match. - The main threshold on the squared Mahalanobis distance to decide if the sample is well described by - the background model or not. Related to Cthr from the paper. - - - - - Gets or sets the variance threshold for the pixel-model match used for new mixture component generation. - Threshold for the squared Mahalanobis distance that helps decide when a sample is close to the - existing components (corresponds to Tg in the paper). If a pixel is not close to any component, it - is considered foreground or added as a new component. 3 sigma =\> Tg=3\*3=9 is default. A smaller Tg - value generates more components. A higher Tg value may result in a small number of components but they can grow too large. - - - - - Gets or sets the initial variance of each gaussian component. - - - - - - - - - - - - - - - Gets or sets the complexity reduction threshold. - This parameter defines the number of samples needed to accept to prove the component exists. CT=0.05 - is a default value for all the samples. By setting CT=0 you get an algorithm very similar to the standard Stauffer&Grimson algorithm. - - - - - Gets or sets the shadow detection flag. - If true, the algorithm detects shadows and marks them. See createBackgroundSubtractorKNN for details. - - - - - Gets or sets the shadow value. - Shadow value is the value used to mark shadows in the foreground mask. Default value is 127. - Value 0 in the mask always means background, 255 means foreground. - - - - - Gets or sets the shadow threshold. - A shadow is detected if pixel is a darker version of the background. The shadow threshold (Tau in - the paper) is a threshold defining how much darker the shadow can be. Tau= 0.5 means that if a pixel - is more than twice darker then it is not shadow. See Prati, Mikic, Trivedi and Cucchiara, - *Detecting Moving Shadows...*, IEEE PAMI,2003. - - - - - [findTransformECC] specifying the type of motion - - - - - sets a translational motion model; warpMatrix is \f$2\times 3\f$ with - the first \f$2\times 2\f$ part being the unity matrix and the rest two parameters being estimated. - - - - - sets a Euclidean (rigid) transformation as motion model; three parameters are estimated; warpMatrix is \f$2\times 3\f$. - - - - - sets an affine motion model (DEFAULT); six parameters are estimated; warpMatrix is \f$2\times 3\f$. - - - - - sets a homography as a motion model; eight parameters are estimated;\`warpMatrix\` is \f$3\times 3\f$. - - - - - cv::calcOpticalFlowPyrLK flags - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Kalman filter. - The class implements standard Kalman filter \url{http://en.wikipedia.org/wiki/Kalman_filter}. - However, you can modify KalmanFilter::transitionMatrix, KalmanFilter::controlMatrix and - KalmanFilter::measurementMatrix to get the extended Kalman filter functionality. - - - - - the default constructor - - - - - the full constructor taking the dimensionality of the state, of the measurement and of the control vector - - - - - - - - - Releases unmanaged resources - - - - - predicted state (x'(k)): x(k)=A*x(k-1)+B*u(k) - - - - - corrected state (x(k)): x(k)=x'(k)+K(k)*(z(k)-H*x'(k)) - - - - - state transition matrix (A) - - - - - control matrix (B) (not used if there is no control) - - - - - measurement matrix (H) - - - - - process noise covariance matrix (Q) - - - - - measurement noise covariance matrix (R) - - - - - priori error estimate covariance matrix (P'(k)): P'(k)=A*P(k-1)*At + Q)*/ - - - - - Kalman gain matrix (K(k)): K(k)=P'(k)*Ht*inv(H*P'(k)*Ht+R) - - - - - posteriori error estimate covariance matrix (P(k)): P(k)=(I-K(k)*H)*P'(k) - - - - - re-initializes Kalman filter. The previous content is destroyed. - - - - - - - - - computes predicted state - - - - - - - updates the predicted state from the measurement - - - - - - - Base abstract class for the long-term tracker - - - - - - - - - - - Releases managed resources - - - - - Initialize the tracker with a know bounding box that surrounding the target - - The initial frame - The initial bounding box - - - - - Update the tracker, find the new most likely bounding box for the target - - The current frame - The bounding box that represent the new target location, if true was returned, not modified otherwise - True means that target was located and false means that tracker cannot locate target in - current frame.Note, that latter *does not* imply that tracker has failed, maybe target is indeed - missing from the frame (say, out of sight) - - - - - GOTURN (@cite GOTURN) is kind of trackers based on Convolutional Neural Networks (CNN). - - - * While taking all advantages of CNN trackers, GOTURN is much faster due to offline training without online fine-tuning nature. - * GOTURN tracker addresses the problem of single target tracking: given a bounding box label of an object in the first frame of the video, - - * we track that object through the rest of the video.NOTE: Current method of GOTURN does not handle occlusions; however, it is fairly - * robust to viewpoint changes, lighting changes, and deformations. - - * Inputs of GOTURN are two RGB patches representing Target and Search patches resized to 227x227. - * Outputs of GOTURN are predicted bounding box coordinates, relative to Search patch coordinate system, in format X1, Y1, X2, Y2. - * Original paper is here: [http://davheld.github.io/GOTURN/GOTURN.pdf] - * As long as original authors implementation: [https://github.com/davheld/GOTURN#train-the-tracker] - * Implementation of training algorithm is placed in separately here due to 3d-party dependencies: - * [https://github.com/Auron-X/GOTURN_Training_Toolkit] - * GOTURN architecture goturn.prototxt and trained model goturn.caffemodel are accessible on opencv_extra GitHub repository. - - - - - - - - - - Constructor - - - - - - Constructor - - GOTURN parameters - - - - - - - - - - - The MIL algorithm trains a classifier in an online manner to separate the object from the background. - Multiple Instance Learning avoids the drift problem for a robust tracking.The implementation is based on @cite MIL. - Original code can be found here [http://vision.ucsd.edu/~bbabenko/project_miltrack.shtml] - - - - - - - - - - Constructor - - - - - - Constructor - - MIL parameters - - - - - - - - - radius for gathering positive instances during init - - - - - # negative samples to use during init - - - - - size of search window - - - - - radius for gathering positive instances during tracking - - - - - # positive samples to use during tracking - - - - - # negative samples to use during tracking - - - - - # features - - - - - WeChat QRCode includes two CNN-based models: - A object detection model and a super resolution model. - Object detection model is applied to detect QRCode with the bounding box. - super resolution model is applied to zoom in QRCode when it is small. - - - - - Initialize the WeChatQRCode. - It includes two models, which are packaged with caffe format. - Therefore, there are prototxt and caffe models (In total, four paramenters). - - prototxt file path for the detector - caffe model file path for the detector - prototxt file path for the super resolution model - caffe file path for the super resolution model - - - - - - Both detects and decodes QR code. - To simplify the usage, there is a only API: detectAndDecode - - supports grayscale or color(BGR) image. - optional output array of vertices of the found QR code quadrangle.Will be empty if not found. - list of decoded string. - - - - - - - BRIEF Descriptor - - - - - cv::Ptr<T> - - - - - - - - - - Constructor - - - - - - bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes. - - - - - - Releases managed resources - - - - - FREAK implementation - - - - - - - - - - Constructor - - enable orientation normalization - enable scale normalization - scaling of the description pattern - number of octaves covered by the detected keypoints - (optional) user defined selected pairs - - - - Releases managed resources - - - - - LATCH Descriptor. - - latch Class for computing the LATCH descriptor. - If you find this code useful, please add a reference to the following paper in your work: - Gil Levi and Tal Hassner, "LATCH: Learned Arrangements of Three Patch Codes", arXiv preprint arXiv:1501.03719, 15 Jan. 2015. - - Note: a complete example can be found under /samples/cpp/tutorial_code/xfeatures2D/latch_match.cpp - - - - - - - - - - Constructor - - the size of the descriptor - can be 64, 32, 16, 8, 4, 2 or 1 - whether or not the descriptor should compansate for orientation changes. - the size of half of the mini-patches size. For example, if we would like to compare triplets of patches of size 7x7x - then the half_ssd_size should be (7-1)/2 = 3. - sigma value for GaussianBlur smoothing of the source image. Source image will be used without smoothing in case sigma value is 0. - Note: the descriptor can be coupled with any keypoint extractor. The only demand is that if you use set rotationInvariance = True then - you will have to use an extractor which estimates the patch orientation (in degrees). Examples for such extractors are ORB and SIFT. - - - - Releases managed resources - - - - - Class implementing the locally uniform comparison image descriptor, described in @cite LUCID. - - An image descriptor that can be computed very fast, while being - about as robust as, for example, SURF or BRIEF. - @note It requires a color image as input. - - - - - - - - - - Constructor - - kernel for descriptor construction, where 1=3x3, 2=5x5, 3=7x7 and so forth - kernel for blurring image prior to descriptor construction, where 1=3x3, 2=5x5, 3=7x7 and so forth - - - - Releases managed resources - - - - - The "Star" Detector - - - - - - - - - - Constructor - - - - - - - - - - Releases managed resources - - - - - Class for extracting Speeded Up Robust Features from an image. - - - - - Creates instance by raw pointer cv::SURF* - - - - - The SURF constructor. - - Only features with keypoint.hessian larger than that are extracted. - The number of a gaussian pyramid octaves that the detector uses. It is set to 4 by default. - If you want to get very large features, use the larger value. If you want just small features, decrease it. - The number of images within each octave of a gaussian pyramid. It is set to 2 by default. - false means basic descriptors (64 elements each), true means extended descriptors (128 elements each) - false means that detector computes orientation of each feature. - true means that the orientation is not computed (which is much, much faster). - - - - Releases managed resources - - - - - Threshold for the keypoint detector. Only features, whose hessian is larger than hessianThreshold - are retained by the detector. Therefore, the larger the value, the less keypoints you will get. - A good default value could be from 300 to 500, depending from the image contrast. - - - - - The number of a gaussian pyramid octaves that the detector uses. It is set to 4 by default. - If you want to get very large features, use the larger value. If you want just small features, decrease it. - - - - - The number of images within each octave of a gaussian pyramid. It is set to 2 by default. - - - - - false means that the basic descriptors (64 elements each) shall be computed. - true means that the extended descriptors (128 elements each) shall be computed - - - - - false means that detector computes orientation of each feature. - true means that the orientation is not computed (which is much, much faster). - For example, if you match images from a stereo pair, or do image stitching, the matched features - likely have very similar angles, and you can speed up feature extraction by setting upright=true. - - - - - cv::ximgproc functions - - - - - Strategy for the selective search segmentation algorithm. - - - - - Create a new color-based strategy - - - - - - Create a new size-based strategy - - - - - - Create a new size-based strategy - - - - - - Create a new fill-based strategy - - - - - - Create a new multiple strategy - - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - The second strategy - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - The second strategy - The third strategy - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - The second strategy - The third strategy - The forth strategy - - - - - run_length_morphology.hpp - - - - - Applies a fixed-level threshold to each array element. - - input array (single-channel). - resulting run length encoded image. - threshold value. - thresholding type (only cv::THRESH_BINARY and cv::THRESH_BINARY_INV are supported) - - - - Dilates an run-length encoded binary image by using a specific structuring element. - - input image - result - kernel - position of the anchor within the element; default value (0, 0) is usually the element center. - - - - Erodes an run-length encoded binary image by using a specific structuring element. - - input image - result - kernel - indicates whether pixel outside the image boundary are assumed to be on - (True: works in the same way as the default of cv::erode, False: is a little faster) - position of the anchor within the element; default value (0, 0) - is usually the element center. - - - - Returns a run length encoded structuring element of the specified size and shape. - - Element shape that can be one of cv::MorphShapes - Size of the structuring element. - - - - - Paint run length encoded binary image into an image. - - image to paint into (currently only single channel images). - run length encoded image - all foreground pixel of the binary image are set to this value - - - - Check whether a custom made structuring element can be used with run length morphological operations. - (It must consist of a continuous array of single runs per row) - - - - - - - Creates a run-length encoded image from a vector of runs (column begin, column end, row) - - vector of runs - result - image size (to be used if an "on" boundary should be used in erosion, using the default - means that the size is computed from the extension of the input) - - - - Applies a morphological operation to a run-length encoded binary image. - - input image - result - all operations supported by cv::morphologyEx (except cv::MORPH_HITMISS) - kernel - indicates whether pixel outside the image boundary are assumed - to be on for erosion operations (True: works in the same way as the default of cv::erode, False: is a little faster) - position of the anchor within the element; default value (0, 0) is usually the element center. - - - - Applies Niblack thresholding to input image. - - T(x, y)\)}{0}{otherwise}\f] - - ** THRESH_BINARY_INV** - \f[dst(x, y) = \fork{0}{if \(src(x, y) > T(x, y)\)}{\texttt{maxValue}}{otherwise}\f] - where \f$T(x, y)\f$ is a threshold calculated individually for each pixel. - The threshold value \f$T(x, y)\f$ is the mean minus \f$ delta \f$ times standard deviation - of \f$\texttt{blockSize} \times\texttt{blockSize}\f$ neighborhood of \f$(x, y)\f$. - The function can't process the image in-place. - ]]> - Source 8-bit single-channel image. - Destination image of the same size and the same type as src. - Non-zero value assigned to the pixels for which the condition is satisfied, - used with the THRESH_BINARY and THRESH_BINARY_INV thresholding types. - Thresholding type, see cv::ThresholdTypes. - Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. - The user-adjustable parameter used by Niblack and inspired techniques.For Niblack, - this is normally a value between 0 and 1 that is multiplied with the standard deviation and subtracted from the mean. - Binarization method to use. By default, Niblack's technique is used. - Other techniques can be specified, see cv::ximgproc::LocalBinarizationMethods. - The user-adjustable parameter used by Sauvola's technique. This is the dynamic range of standard deviation. - - - - Applies a binary blob thinning operation, to achieve a skeletization of the input image. - The function transforms a binary blob image into a skeletized form using the technique of Zhang-Suen. - - Source 8-bit single-channel image, containing binary blobs, with blobs having 255 pixel values. - Destination image of the same size and the same type as src. The function can work in-place. - Value that defines which thinning algorithm should be used. - - - - Performs anisotropic diffusian on an image. - The function applies Perona-Malik anisotropic diffusion to an image. - - Grayscale Source image. - Destination image of the same size and the same number of channels as src. - The amount of time to step forward by on each iteration (normally, it's between 0 and 1). - sensitivity to the edges - The number of iterations - - - - - - - - - - - - - - creates a quaternion image. - - Source 8-bit, 32-bit or 64-bit image, with 3-channel image. - result CV_64FC4 a quaternion image( 4 chanels zero channel and B,G,R). - - - - calculates conjugate of a quaternion image. - - quaternion image. - conjugate of qimg - - - - divides each element by its modulus. - - quaternion image. - conjugate of qimg - - - - Calculates the per-element quaternion product of two arrays - - quaternion image. - quaternion image. - product dst(I)=src1(I) . src2(I) - - - - Performs a forward or inverse Discrete quaternion Fourier transform of a 2D quaternion array. - - quaternion image. - quaternion image in dual space. - quaternion image in dual space. only DFT_INVERSE flags is supported - true the hypercomplex exponential is to be multiplied on the left (false on the right ). - - - - Compares a color template against overlapped color image regions. - - Image where the search is running. It must be 3 channels image - Searched template. It must be not greater than the source image and have 3 channels - Map of comparison results. It must be single-channel 64-bit floating-point - - - - Applies Y Deriche filter to an image. - - Source 8-bit or 16bit image, 1-channel or 3-channel image. - result CV_32FC image with same number of channel than _op. - double see paper - double see paper - - - - Applies X Deriche filter to an image. - - Source 8-bit or 16bit image, 1-channel or 3-channel image. - result CV_32FC image with same number of channel than _op. - double see paper - double see paper - - - - Creates a EdgeBoxes - - step size of sliding window search. - nms threshold for object proposals. - adaptation rate for nms threshold. - min score of boxes to detect. - max number of boxes to detect. - edge min magnitude. Increase to trade off accuracy for speed. - edge merge threshold. Increase to trade off accuracy for speed. - cluster min magnitude. Increase to trade off accuracy for speed. - max aspect ratio of boxes. - minimum area of boxes. - affinity sensitivity. - scale sensitivity. - - - - - Factory method, create instance of DTFilter and produce initialization routines. - - guided image (used to build transformed distance, which describes edge structure of - guided image). - sigma_H parameter in the original article, it's similar to the sigma in the - coordinate space into bilateralFilter. - sigma_r parameter in the original article, it's similar to the sigma in the - color space into bilateralFilter. - one form three modes DTF_NC, DTF_RF and DTF_IC which corresponds to three modes for - filtering 2D signals in the article. - optional number of iterations used for filtering, 3 is quite enough. - - - - - Simple one-line Domain Transform filter call. If you have multiple images to filter with the same - guided image then use DTFilter interface to avoid extra computations on initialization stage. - - guided image (also called as joint image) with unsigned 8-bit or floating-point 32-bit - depth and up to 4 channels. - filtering image with unsigned 8-bit or floating-point 32-bit depth and up to 4 channels. - destination image - sigma_H parameter in the original article, it's similar to the sigma in the - coordinate space into bilateralFilter. - sigma_r parameter in the original article, it's similar to the sigma in the - color space into bilateralFilter. - one form three modes DTF_NC, DTF_RF and DTF_IC which corresponds to three modes for - filtering 2D signals in the article. - optional number of iterations used for filtering, 3 is quite enough. - - - - Factory method, create instance of GuidedFilter and produce initialization routines. - - guided image (or array of images) with up to 3 channels, if it have more then 3 - channels then only first 3 channels will be used. - radius of Guided Filter. - regularization term of Guided Filter. eps^2 is similar to the sigma in the color - space into bilateralFilter. - - - - - Simple one-line Guided Filter call. - - If you have multiple images to filter with the same guided image then use GuidedFilter interface to - avoid extra computations on initialization stage. - - guided image (or array of images) with up to 3 channels, if it have more then 3 - channels then only first 3 channels will be used. - filtering image with any numbers of channels. - output image. - radius of Guided Filter. - regularization term of Guided Filter. eps^2 is similar to the sigma in the color - space into bilateralFilter. - optional depth of the output image. - - - - Factory method, create instance of AdaptiveManifoldFilter and produce some initialization routines. - - spatial standard deviation. - color space standard deviation, it is similar to the sigma in the color space into - bilateralFilter. - optional, specify perform outliers adjust operation or not, (Eq. 9) in the - original paper. - - - - - Simple one-line Adaptive Manifold Filter call. - - joint (also called as guided) image or array of images with any numbers of channels. - filtering image with any numbers of channels. - output image. - spatial standard deviation. - color space standard deviation, it is similar to the sigma in the color space into - bilateralFilter. - optional, specify perform outliers adjust operation or not, (Eq. 9) in the - original paper. - - - - Applies the joint bilateral filter to an image. - - Joint 8-bit or floating-point, 1-channel or 3-channel image. - Source 8-bit or floating-point, 1-channel or 3-channel image with the same depth as joint image. - Destination image of the same size and type as src. - Diameter of each pixel neighborhood that is used during filtering. If it is non-positive, - it is computed from sigmaSpace. - Filter sigma in the color space. A larger value of the parameter means that - farther colors within the pixel neighborhood(see sigmaSpace) will be mixed together, resulting in - larger areas of semi-equal color. - Filter sigma in the coordinate space. A larger value of the parameter means that - farther pixels will influence each other as long as their colors are close enough(see sigmaColor). - When d\>0 , it specifies the neighborhood size regardless of sigmaSpace.Otherwise, d is - proportional to sigmaSpace. - - - - - Applies the bilateral texture filter to an image. It performs structure-preserving texture filter. - For more details about this filter see @cite Cho2014. - - Source image whose depth is 8-bit UINT or 32-bit FLOAT - Destination image of the same size and type as src. - Radius of kernel to be used for filtering. It should be positive integer - Number of iterations of algorithm, It should be positive integer - Controls the sharpness of the weight transition from edges to smooth/texture regions, where - a bigger value means sharper transition.When the value is negative, it is automatically calculated. - Range blur parameter for texture blurring. Larger value makes result to be more blurred. When the - value is negative, it is automatically calculated as described in the paper. - - - - Applies the rolling guidance filter to an image. - - 8-bit or floating-point, 1-channel or 3-channel image. - Destination image of the same size and type as src. - Diameter of each pixel neighborhood that is used during filtering. If it is non-positive, - it is computed from sigmaSpace. - Filter sigma in the color space. A larger value of the parameter means that - farther colors within the pixel neighborhood(see sigmaSpace) will be mixed together, resulting in - larger areas of semi-equal color. - Filter sigma in the coordinate space. A larger value of the parameter means that - farther pixels will influence each other as long as their colors are close enough(see sigmaColor). - When d\>0 , it specifies the neighborhood size regardless of sigmaSpace.Otherwise, d is - proportional to sigmaSpace. - Number of iterations of joint edge-preserving filtering applied on the source image. - - - - - Simple one-line Fast Bilateral Solver filter call. If you have multiple images to filter with the same - guide then use FastBilateralSolverFilter interface to avoid extra computations. - - image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels. - source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 4 channels. - confidence image with unsigned 8-bit or floating-point 32-bit confidence and 1 channel. - destination image. - parameter, that is similar to spatial space sigma (bandwidth) in bilateralFilter. - parameter, that is similar to luma space sigma (bandwidth) in bilateralFilter. - parameter, that is similar to chroma space sigma (bandwidth) in bilateralFilter. - smoothness strength parameter for solver. - number of iterations used for solver, 25 is usually enough. - convergence tolerance used for solver. - - - - Factory method, create instance of FastGlobalSmootherFilter and execute the initialization routines. - - image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels. - parameter defining the amount of regularization - parameter, that is similar to color space sigma in bilateralFilter. - internal parameter, defining how much lambda decreases after each iteration. Normally, - it should be 0.25. Setting it to 1.0 may lead to streaking artifacts. - number of iterations used for filtering, 3 is usually enough. - - - - - Simple one-line Fast Global Smoother filter call. If you have multiple images to filter with the same - guide then use FastGlobalSmootherFilter interface to avoid extra computations. - - image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels. - source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 4 channels. - destination image. - parameter defining the amount of regularization - parameter, that is similar to color space sigma in bilateralFilter. - internal parameter, defining how much lambda decreases after each iteration. Normally, - it should be 0.25. Setting it to 1.0 may lead to streaking artifacts. - number of iterations used for filtering, 3 is usually enough. - - - - Global image smoothing via L0 gradient minimization. - - source image for filtering with unsigned 8-bit or signed 16-bit or floating-point depth. - destination image. - parameter defining the smooth term weight. - parameter defining the increasing factor of the weight of the gradient data term. - - - - Smoothes an image using the Edge-Preserving filter. - - Source 8-bit 3-channel image. - Destination image of the same size and type as src. - Diameter of each pixel neighborhood that is used during filtering. Must be greater or equal 3. - Threshold, which distinguishes between noise, outliers, and data. - - - - Computes the estimated covariance matrix of an image using the sliding window forumlation. - - - The window size parameters control the accuracy of the estimation. - The sliding window moves over the entire image from the top-left corner - to the bottom right corner.Each location of the window represents a sample. - If the window is the size of the image, then this gives the exact covariance matrix. - For all other cases, the sizes of the window will impact the number of samples - and the number of elements in the estimated covariance matrix. - - The source image. Input image must be of a complex type. - The destination estimated covariance matrix. Output matrix will be size (windowRows*windowCols, windowRows*windowCols). - The number of rows in the window. - The number of cols in the window. - - - - Calculates 2D Fast Hough transform of an image. - - The source (input) image. - The destination image, result of transformation. - The depth of destination image - The part of Hough space to calculate, see cv::AngleRangeOption - The operation to be applied, see cv::HoughOp - Specifies to do or not to do image skewing, see cv::HoughDeskewOption - - - - Calculates coordinates of line segment corresponded by point in Hough space. - - - If rules parameter set to RO_STRICT then returned line cut along the border of source image. - If rules parameter set to RO_WEAK then in case of point, which belongs - the incorrect part of Hough image, returned line will not intersect source image. - - Point in Hough space. - The source (input) image of Hough transform. - The part of Hough space where point is situated, see cv::AngleRangeOption - Specifies to do or not to do image skewing, see cv::HoughDeskewOption - Specifies strictness of line segment calculating, see cv::RulesOption - Coordinates of line segment corresponded by point in Hough space. - - - - Creates a smart pointer to a FastLineDetector object and initializes it - - Segment shorter than this will be discarded - A point placed from a hypothesis line segment farther than - this will be regarded as an outlier - First threshold for hysteresis procedure in Canny() - Second threshold for hysteresis procedure in Canny() - Aperture size for the sobel operator in Canny() - If true, incremental merging of segments will be performed - - - - - Class implementing the LSC (Linear Spectral Clustering) superpixels. - - The function initializes a SuperpixelLSC object for the input image. It sets the parameters of - superpixel algorithm, which are: region_size and ruler.It preallocate some buffers for future - computing iterations over the given image.An example of LSC is illustrated in the following picture. - For enhanced results it is recommended for color images to preprocess image with little gaussian blur - with a small 3 x 3 kernel and additional conversion into CieLAB color space. - - image Image to segment - Chooses an average superpixel size measured in pixels - Chooses the enforcement of superpixel compactness factor of superpixel - - - - - Applies Paillou filter to an image. - - Source CV_8U(S) or CV_16U(S), 1-channel or 3-channels image. - Result CV_32F image with same number of channel than op. - double see paper - double see paper - - - - Applies Paillou filter to an image. - - Source CV_8U(S) or CV_16U(S), 1-channel or 3-channels image. - Result CV_32F image with same number of channel than op. - double see paper - double see paper - - - - Calculates an affine transformation that normalize given image using Pei&Lin Normalization. - - Given transformed image. - Transformation matrix corresponding to inversed image transformation - - - - Calculates an affine transformation that normalize given image using Pei&Lin Normalization. - - Given transformed image. - Inversed image transformation. - - - - Initializes a SuperpixelSEEDS object. - - The function initializes a SuperpixelSEEDS object for the input image. It stores the parameters of - the image: image_width, image_height and image_channels.It also sets the parameters of the SEEDS - superpixel algorithm, which are: num_superpixels, num_levels, use_prior, histogram_bins and - double_step. - - The number of levels in num_levels defines the amount of block levels that the algorithm use in the - optimization.The initialization is a grid, in which the superpixels are equally distributed through - the width and the height of the image.The larger blocks correspond to the superpixel size, and the - levels with smaller blocks are formed by dividing the larger blocks into 2 x 2 blocks of pixels, - recursively until the smaller block level. An example of initialization of 4 block levels is - illustrated in the following figure. - - Image width. - Image height. - Number of channels of the image. - Desired number of superpixels. Note that the actual number may be smaller - due to restrictions(depending on the image size and num_levels). Use getNumberOfSuperpixels() to - get the actual number. - Number of block levels. The more levels, the more accurate is the segmentation, - but needs more memory and CPU time. - enable 3x3 shape smoothing term if \>0. A larger value leads to smoother shapes. prior - must be in the range[0, 5]. - Number of histogram bins. - If true, iterate each block level twice for higher accuracy. - - - - - Creates a RFFeatureGetter - - - - - - Creates a StructuredEdgeDetection - - name of the file where the model is stored - optional object inheriting from RFFeatureGetter. - You need it only if you would like to train your own forest, pass null otherwise - - - - - Applies weighted median filter to an image. - - - For more details about this implementation, please see @cite zhang2014100+ - - Joint 8-bit, 1-channel or 3-channel image. - Source 8-bit or floating-point, 1-channel or 3-channel image. - Destination image. - Radius of filtering kernel, should be a positive integer. - Filter range standard deviation for the joint image. - The type of weight definition, see WMFWeightType - A 0-1 mask that has the same size with I. This mask is used to ignore the effect of some pixels. If the pixel value on mask is 0, - the pixel will be ignored when maintaining the joint-histogram.This is useful for applications like optical flow occlusion handling. - - - - Class implementing EdgeBoxes algorithm from @cite ZitnickECCV14edgeBoxes - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Creates a EdgeBoxes - - step size of sliding window search. - nms threshold for object proposals. - adaptation rate for nms threshold. - min score of boxes to detect. - max number of boxes to detect. - edge min magnitude. Increase to trade off accuracy for speed. - edge merge threshold. Increase to trade off accuracy for speed. - cluster min magnitude. Increase to trade off accuracy for speed. - max aspect ratio of boxes. - minimum area of boxes. - affinity sensitivity. - scale sensitivity. - - - - - Gets or sets the step size of sliding window search. - - - - - Gets or sets the nms threshold for object proposals. - - - - - Gets or sets adaptation rate for nms threshold. - - - - - Gets or sets the min score of boxes to detect. - - - - - Gets or sets the max number of boxes to detect. - - - - - Gets or sets the edge min magnitude. - - - - - Gets or sets the edge merge threshold. - - - - - Gets or sets the cluster min magnitude. - - - - - Gets or sets the max aspect ratio of boxes. - - - - - Gets or sets the minimum area of boxes. - - - - - Gets or sets the affinity sensitivity. - - - - - Gets or sets the scale sensitivity. - - - - - Returns array containing proposal boxes. - - edge image. - orientation map. - proposal boxes. - - - - Interface for Adaptive Manifold Filter realizations. - - Below listed optional parameters which may be set up with Algorithm::set function. - - member double sigma_s = 16.0 - Spatial standard deviation. - - member double sigma_r = 0.2 - Color space standard deviation. - - member int tree_height = -1 - Height of the manifold tree (default = -1 : automatically computed). - - member int num_pca_iterations = 1 - Number of iterations to computed the eigenvector. - - member bool adjust_outliers = false - Specify adjust outliers using Eq. 9 or not. - - member bool use_RNG = true - Specify use random number generator to compute eigenvector or not. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Factory method, create instance of AdaptiveManifoldFilter and produce some initialization routines. - - spatial standard deviation. - color space standard deviation, it is similar to the sigma in the color space into - bilateralFilter. - optional, specify perform outliers adjust operation or not, (Eq. 9) in the - original paper. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Apply high-dimensional filtering using adaptive manifolds. - - filtering image with any numbers of channels. - output image. - optional joint (also called as guided) image with any numbers of channels. - - - - Interface for realizations of Domain Transform filter. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Factory method, create instance of DTFilter and produce initialization routines. - - guided image (used to build transformed distance, which describes edge structure of - guided image). - sigma_H parameter in the original article, it's similar to the sigma in the - coordinate space into bilateralFilter. - sigma_r parameter in the original article, it's similar to the sigma in the - color space into bilateralFilter. - one form three modes DTF_NC, DTF_RF and DTF_IC which corresponds to three modes for - filtering 2D signals in the article. - optional number of iterations used for filtering, 3 is quite enough. - - - - - Simple one-line Domain Transform filter call. If you have multiple images to filter with the same - guided image then use DTFilter interface to avoid extra computations on initialization stage. - - - - - - - - Interface for implementations of Fast Bilateral Solver. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Factory method, create instance of FastBilateralSolverFilter and execute the initialization routines. - - image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels. - parameter, that is similar to spatial space sigma (bandwidth) in bilateralFilter. - parameter, that is similar to luma space sigma (bandwidth) in bilateralFilter. - parameter, that is similar to chroma space sigma (bandwidth) in bilateralFilter. - smoothness strength parameter for solver. - number of iterations used for solver, 25 is usually enough. - convergence tolerance used for solver. - - - - - Apply smoothing operation to the source image. - - source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 3 channels. - confidence image with unsigned 8-bit or floating-point 32-bit confidence and 1 channel. - destination image. - - - - Interface for implementations of Fast Global Smoother filter. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Factory method, create instance of FastGlobalSmootherFilter and execute the initialization routines. - - image serving as guide for filtering. It should have 8-bit depth and either 1 or 3 channels. - parameter defining the amount of regularization - parameter, that is similar to color space sigma in bilateralFilter. - internal parameter, defining how much lambda decreases after each iteration. Normally, - it should be 0.25. Setting it to 1.0 may lead to streaking artifacts. - number of iterations used for filtering, 3 is usually enough. - - - - - Apply smoothing operation to the source image. - - source image for filtering with unsigned 8-bit or signed 16-bit or floating-point 32-bit depth and up to 4 channels. - destination image. - - - - Interface for realizations of Guided Filter. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Factory method, create instance of GuidedFilter and produce initialization routines. - - guided image (or array of images) with up to 3 channels, if it have more then 3 - channels then only first 3 channels will be used. - radius of Guided Filter. - regularization term of Guided Filter. eps^2 is similar to the sigma in the color - space into bilateralFilter. - - - - - Apply Guided Filter to the filtering image. - - filtering image with any numbers of channels. - output image. - optional depth of the output image. dDepth can be set to -1, which will be equivalent to src.depth(). - - - - Specifies the part of Hough space to calculate - - - The enum specifies the part of Hough space to calculate. - Each member specifies primarily direction of lines(horizontal or vertical) - and the direction of angle changes. - Direction of angle changes is from multiples of 90 to odd multiples of 45. - The image considered to be written top-down and left-to-right. - Angles are started from vertical line and go clockwise. - Separate quarters and halves are written in orientation they should be in full Hough space. - - - - - Vertical primarily direction and clockwise angle changes - - - - - Horizontal primarily direction and counterclockwise angle changes - - - - - Horizontal primarily direction and clockwise angle changes - - - - - Vertical primarily direction and counterclockwise angle changes - - - - - Vertical primarily direction - - - - - Horizontal primarily direction - - - - - Full set of directions - - - - - 90 +/- atan(0.5), interval approximately from 64.5 to 116.5 degrees. - It is used for calculating Fast Hough Transform for images skewed by atan(0.5). - - - - - +/- atan(0.5), interval approximately from 333.5(-26.5) to 26.5 degrees - It is used for calculating Fast Hough Transform for images skewed by atan(0.5). - - - - - one form three modes DTF_NC, DTF_RF and DTF_IC which corresponds to three modes for - filtering 2D signals in the article. - - - - - Specifies to do or not to do skewing of Hough transform image - - - The enum specifies to do or not to do skewing of Hough transform image - so it would be no cycling in Hough transform image through borders of image. - - - - - Use raw cyclic image - - - - - Prepare deskewed image - - - - - Specifies binary operations. - - - The enum specifies binary operations, that is such ones which involve - two operands. Formally, a binary operation @f$ f @f$ on a set @f$ S @f$ - is a binary relation that maps elements of the Cartesian product - @f$ S \times S @f$ to @f$ S @f$: - @f[ f: S \times S \to S @f] - - - - - Binary minimum operation. The constant specifies the binary minimum operation - @f$ f @f$ that is defined as follows: @f[ f(x, y) = \min(x, y) @f] - - - - - Binary maximum operation. The constant specifies the binary maximum operation - @f$ f @f$ that is defined as follows: @f[ f(x, y) = \max(x, y) @f] - - - - - Binary addition operation. The constant specifies the binary addition operation - @f$ f @f$ that is defined as follows: @f[ f(x, y) = x + y @f] - - - - - Binary average operation. The constant specifies the binary average operation - @f$ f @f$ that is defined as follows: @f[ f(x, y) = \frac{x + y}{2} @f] - - - - - Specifies the binarization method to use in cv::ximgproc::niBlackThreshold - - - - - Classic Niblack binarization. See @cite Niblack1985 . - - - - - Sauvola's technique. See @cite Sauvola1997 . - - - - - Wolf's technique. See @cite Wolf2004 . - - - - - NICK technique. See @cite Khurshid2009 . - - - - - Specifies the degree of rules validation. - - - The enum specifies the degree of rules validation. This can be used, for example, to choose a proper way of input arguments validation. - - - - - Validate each rule in a proper way. - - - - - Skip validations of image borders. - - - - - The algorithm variant to use for SuperpixelSLIC: - SLIC segments image using a desired region_size, and in addition SLICO will optimize using adaptive compactness factor, - while MSLIC will optimize using manifold methods resulting in more content-sensitive superpixels. - - - - - SLIC(Simple Linear Iterative Clustering) clusters pixels using pixel channels and image plane space - to efficiently generate compact, nearly uniform superpixels.The simplicity of approach makes it - extremely easy to use a lone parameter specifies the number of superpixels and the efficiency of - the algorithm makes it very practical. - - - - - SLICO stands for "Zero parameter SLIC" and it is an optimization of baseline SLIC described in @cite Achanta2012. - - - - - MSLIC stands for "Manifold SLIC" and it is an optimization of baseline SLIC described in @cite Liu_2017_IEEE. - - - - - thinning algorithm - - - - - Thinning technique of Zhang-Suen - - - - - Thinning technique of Guo-Hall - - - - - Specifies weight types of weighted median filter. - - - - - \f$exp(-|I1-I2|^2/(2*sigma^2))\f$ - - - - - \f$(|I1-I2|+sigma)^-1\f$ - - - - - \f$(|I1-I2|^2+sigma^2)^-1\f$ - - - - - \f$dot(I1,I2)/(|I1|*|I2|)\f$ - - - - - \f$(min(r1,r2)+min(g1,g2)+min(b1,b2))/(max(r1,r2)+max(g1,g2)+max(b1,b2))\f$ - - - - - unweighted - - - - - Class implementing the FLD (Fast Line Detector) algorithm described in @cite Lee14. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Creates a smart pointer to a FastLineDetector object and initializes it - - Segment shorter than this will be discarded - A point placed from a hypothesis line segment farther than - this will be regarded as an outlier - First threshold for hysteresis procedure in Canny() - Second threshold for hysteresis procedure in Canny() - Aperturesize for the sobel operator in Canny() - If true, incremental merging of segments will be perfomred - - - - - Finds lines in the input image. - This is the output of the default parameters of the algorithm on the above shown image. - - A grayscale (CV_8UC1) input image. If only a roi needs to be - selected, use: `fld_ptr-\>detect(image(roi), lines, ...); - lines += Scalar(roi.x, roi.y, roi.x, roi.y);` - A vector of Vec4f elements specifying the beginning - and ending point of a line. Where Vec4f is (x1, y1, x2, y2), - point 1 is the start, point 2 - end.Returned lines are directed so that the - brighter side is on their left. - - - - Finds lines in the input image. - This is the output of the default parameters of the algorithm on the above shown image. - - A grayscale (CV_8UC1) input image. If only a roi needs to be - selected, use: `fld_ptr-\>detect(image(roi), lines, ...); - lines += Scalar(roi.x, roi.y, roi.x, roi.y);` - A vector of Vec4f elements specifying the beginning - and ending point of a line. Where Vec4f is (x1, y1, x2, y2), - point 1 is the start, point 2 - end.Returned lines are directed so that the - brighter side is on their left. - - - - Draws the line segments on a given image. - - The image, where the lines will be drawn. Should be bigger or equal to the image, where the lines were found. - A vector of the lines that needed to be drawn. - If true, arrow heads will be drawn. - - - - Draws the line segments on a given image. - - The image, where the lines will be drawn. Should be bigger or equal to the image, where the lines were found. - A vector of the lines that needed to be drawn. - If true, arrow heads will be drawn. - - - - Helper class for training part of [P. Dollar and C. L. Zitnick. Structured Forests for Fast Edge Detection, 2013]. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Creates a RFFeatureGetter - - - - - - Extracts feature channels from src. - Than StructureEdgeDetection uses this feature space to detect edges. - - source image to extract features - output n-channel floating point feature matrix. - gradientNormalizationRadius - gradientSmoothingRadius - shrinkNumber - numberOfOutputChannels - numberOfGradientOrientations - - - - Graph Based Segmentation Algorithm. - The class implements the algorithm described in @cite PFF2004. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Creates a graph based segmentor - - The sigma parameter, used to smooth image - The k parameter of the algorithm - The minimum size of segments - - - - - - - - - - - - - - - - - - - - Segment an image and store output in dst - - The input image. Any number of channel (1 (Eg: Gray), 3 (Eg: RGB), 4 (Eg: RGB-D)) can be provided - The output segmentation. It's a CV_32SC1 Mat with the same number of cols and rows as input image, with an unique, sequential, id for each pixel. - - - - Selective search segmentation algorithm. - The class implements the algorithm described in @cite uijlings2013selective. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Create a new SelectiveSearchSegmentation class. - - - - - - Set a image used by switch* functions to initialize the class - - The image - - - - Initialize the class with the 'Single stragegy' parameters describled in @cite uijlings2013selective. - - The k parameter for the graph segmentation - The sigma parameter for the graph segmentation - - - - Initialize the class with the 'Selective search fast' parameters describled in @cite uijlings2013selective. - - The k parameter for the first graph segmentation - The increment of the k parameter for all graph segmentations - The sigma parameter for the graph segmentation - - - - Initialize the class with the 'Selective search fast' parameters describled in @cite uijlings2013selective. - - The k parameter for the first graph segmentation - The increment of the k parameter for all graph segmentations - The sigma parameter for the graph segmentation - - - - Add a new image in the list of images to process. - - The image - - - - Clear the list of images to process - - - - - Add a new graph segmentation in the list of graph segementations to process. - - The graph segmentation - - - - Clear the list of graph segmentations to process - - - - - Add a new strategy in the list of strategy to process. - - The strategy - - - - Clear the list of strategy to process; - - - - - Based on all images, graph segmentations and stragies, computes all possible rects and return them - - The list of rects. The first ones are more relevents than the lasts ones. - - - - - Strategy for the selective search segmentation algorithm. - The class implements a generic stragery for the algorithm described in @cite uijlings2013selective. - - - - - - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Set a initial image, with a segementation. - - The input image. Any number of channel can be provided - A segementation of the image. The parameter must be the same size of img. - The sizes of different regions - If not set to -1, try to cache pre-computations. If the same set og (img, regions, size) is used, the image_id need to be the same. - - - - Return the score between two regions (between 0 and 1) - - The first region - The second region - - - - Inform the strategy that two regions will be merged - - The first region - The second region - - - - - Color-based strategy for the selective search segmentation algorithm. - The class is implemented from the algorithm described in @cite uijlings2013selective. - - - - - - Creates instance by raw pointer - - - - - Create a new color-based strategy - - - - - - - Size-based strategy for the selective search segmentation algorithm. - The class is implemented from the algorithm described in @cite uijlings2013selective. - - - - - - Creates instance by raw pointer - - - - - Create a new size-based strategy - - - - - - Texture-based strategy for the selective search segmentation algorithm. - The class is implemented from the algorithm described in @cite uijlings2013selective. - - - - - - Creates instance by raw pointer - - - - - Create a new size-based strategy - - - - - - Fill-based strategy for the selective search segmentation algorithm. - The class is implemented from the algorithm described in @cite uijlings2013selective. - - - - - - Creates instance by raw pointer - - - - - Create a new fill-based strategy - - - - - - - Regroup multiple strategies for the selective search segmentation algorithm - - - - - Creates instance by raw pointer - - - - - Set a initial image, with a segementation. - - The input image. Any number of channel can be provided - A segementation of the image. The parameter must be the same size of img. - The sizes of different regions - If not set to -1, try to cache pre-computations. If the same set og (img, regions, size) is used, the image_id need to be the same. - - - - Return the score between two regions (between 0 and 1) - - The first region - The second region - - - - Inform the strategy that two regions will be merged - - The first region - The second region - - - - Create a new multiple strategy - - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - The second strategy - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - The second strategy - The third strategy - - - - - Create a new multiple strategy and set one subtrategy - - The first strategy - The second strategy - The third strategy - The forth strategy - - - - - Class implementing edge detection algorithm from @cite Dollar2013 : - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Creates a StructuredEdgeDetection - - name of the file where the model is stored - optional object inheriting from RFFeatureGetter. - You need it only if you would like to train your own forest, pass null otherwise - - - - - Returns array containing proposal boxes. - - edge image. - orientation map. - proposal boxes. - - - - The function detects edges in src and draw them to dst. - The algorithm underlies this function is much more robust to texture presence, than common approaches, e.g.Sobel - - source image (RGB, float, in [0;1]) to detect edges - destination image (grayscale, float, in [0;1]) where edges are drawn - - - - The function computes orientation from edge image. - - edge image. - orientation image. - - - - The function edgenms in edge image and suppress edges where edge is stronger in orthogonal direction. - - edge image from detectEdges function. - orientation image from computeOrientation function. - suppressed image (grayscale, float, in [0;1]) - radius for NMS suppression. - radius for boundary suppression. - multiplier for conservative suppression. - enables/disables parallel computing. - - - - Class implementing the LSC (Linear Spectral Clustering) superpixels - algorithm described in @cite LiCVPR2015LSC. - - LSC(Linear Spectral Clustering) produces compact and uniform superpixels with low - computational costs.Basically, a normalized cuts formulation of the superpixel - segmentation is adopted based on a similarity metric that measures the color - similarity and space proximity between image pixels.LSC is of linear computational - complexity and high memory efficiency and is able to preserve global properties of images. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Class implementing the LSC (Linear Spectral Clustering) superpixels. - - The function initializes a SuperpixelLSC object for the input image. It sets the parameters of - superpixel algorithm, which are: region_size and ruler.It preallocate some buffers for future - computing iterations over the given image.An example of LSC is illustrated in the following picture. - For enhanced results it is recommended for color images to preprocess image with little gaussian blur - with a small 3 x 3 kernel and additional conversion into CieLAB color space. - - image Image to segment - Chooses an average superpixel size measured in pixels - Chooses the enforcement of superpixel compactness factor of superpixel - - - - - Calculates the actual amount of superpixels on a given segmentation computed and stored in SuperpixelLSC object. - - - - - - Calculates the superpixel segmentation on a given image with the initialized - parameters in the SuperpixelLSC object. - - This function can be called again without the need of initializing the algorithm with - createSuperpixelLSC(). This save the computational cost of allocating memory for all the - structures of the algorithm. - - The function computes the superpixels segmentation of an image with the parameters initialized - with the function createSuperpixelLSC(). The algorithms starts from a grid of superpixels and - then refines the boundaries by proposing updates of edges boundaries. - - Number of iterations. Higher number improves the result. - - - - Returns the segmentation labeling of the image. - Each label represents a superpixel, and each pixel is assigned to one superpixel label. - - The function returns an image with the labels of the superpixel segmentation.The labels are in - the range [0, getNumberOfSuperpixels()]. - - Return: A CV_32SC1 integer array containing the labels of the superpixel - segmentation.The labels are in the range[0, getNumberOfSuperpixels()]. - - - - Returns the mask of the superpixel segmentation stored in SuperpixelLSC object. - The function return the boundaries of the superpixel segmentation. - - Return: CV_8U1 image mask where -1 indicates that the pixel is a superpixel border, and 0 otherwise. - If false, the border is only one pixel wide, otherwise all pixels at the border are masked. - - - - Enforce label connectivity. - The function merge component that is too small, assigning the previously found adjacent label - to this component.Calling this function may change the final number of superpixels. - - The minimum element size in percents that should be absorbed into a bigger - superpixel.Given resulted average superpixel size valid value should be in 0-100 range, 25 means - that less then a quarter sized superpixel should be absorbed, this is default. - - - - Class implementing the SEEDS (Superpixels Extracted via Energy-Driven Sampling) superpixels - algorithm described in @cite VBRV14. - - The algorithm uses an efficient hill-climbing algorithm to optimize the superpixels' energy - function that is based on color histograms and a boundary term, which is optional.The energy - function encourages superpixels to be of the same color, and if the boundary term is activated, the - superpixels have smooth boundaries and are of similar shape. In practice it starts from a regular - grid of superpixels and moves the pixels or blocks of pixels at the boundaries to refine the - solution.The algorithm runs in real-time using a single CPU. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Initializes a SuperpixelSEEDS object. - - The function initializes a SuperpixelSEEDS object for the input image. It stores the parameters of - the image: image_width, image_height and image_channels.It also sets the parameters of the SEEDS - superpixel algorithm, which are: num_superpixels, num_levels, use_prior, histogram_bins and - double_step. - - The number of levels in num_levels defines the amount of block levels that the algorithm use in the - optimization.The initialization is a grid, in which the superpixels are equally distributed through - the width and the height of the image.The larger blocks correspond to the superpixel size, and the - levels with smaller blocks are formed by dividing the larger blocks into 2 x 2 blocks of pixels, - recursively until the smaller block level. An example of initialization of 4 block levels is - illustrated in the following figure. - - Image width. - Image height. - Number of channels of the image. - Desired number of superpixels. Note that the actual number may be smaller - due to restrictions(depending on the image size and num_levels). Use getNumberOfSuperpixels() to - get the actual number. - Number of block levels. The more levels, the more accurate is the segmentation, - but needs more memory and CPU time. - enable 3x3 shape smoothing term if \>0. A larger value leads to smoother shapes. prior - must be in the range[0, 5]. - Number of histogram bins. - If true, iterate each block level twice for higher accuracy. - - - - - Calculates the superpixel segmentation on a given image stored in SuperpixelSEEDS object. - - The function computes the superpixels segmentation of an image with the parameters initialized - with the function createSuperpixelSEEDS(). - - - - - - Input image. Supported formats: CV_8U, CV_16U, CV_32F. Image size & number of - channels must match with the initialized image size & channels with the function - createSuperpixelSEEDS(). It should be in HSV or Lab color space.Lab is a bit better, but also slower. - - Supported formats: CV_8U, CV_16U, CV_32F. Image size & number of - channels must match with the initialized image size & channels with the function - createSuperpixelSEEDS(). It should be in HSV or Lab color space.Lab is a bit better, but also slower. - Number of pixel level iterations. Higher number improves the result. - - - - Returns the segmentation labeling of the image. - Each label represents a superpixel, and each pixel is assigned to one superpixel label. - - The function returns an image with ssthe labels of the superpixel segmentation. The labels are in - the range[0, getNumberOfSuperpixels()]. - - Return: A CV_32UC1 integer array containing the labels of the superpixel - segmentation.The labels are in the range[0, getNumberOfSuperpixels()]. - - - - Returns the mask of the superpixel segmentation stored in SuperpixelSEEDS object. - The function return the boundaries of the superpixel segmentation. - - Return: CV_8U1 image mask where -1 indicates that the pixel is a superpixel border, and 0 otherwise. - If false, the border is only one pixel wide, otherwise all pixels at the border are masked. - - - - Class implementing the SLIC (Simple Linear Iterative Clustering) superpixels - algorithm described in @cite Achanta2012. - - - - - Creates instance by raw pointer - - - - - Releases managed resources - - - - - Initialize a SuperpixelSLIC object. - - The function initializes a SuperpixelSLIC object for the input image. It sets the parameters of chosen - superpixel algorithm, which are: region_size and ruler.It preallocate some buffers for future - computing iterations over the given image.For enanched results it is recommended for color images to - preprocess image with little gaussian blur using a small 3 x 3 kernel and additional conversion into - CieLAB color space.An example of SLIC versus SLICO and MSLIC is ilustrated in the following picture. - - Image to segment - Chooses the algorithm variant to use: - SLIC segments image using a desired region_size, and in addition SLICO will optimize using adaptive compactness factor, - while MSLIC will optimize using manifold methods resulting in more content-sensitive superpixels. - Chooses an average superpixel size measured in pixels - Chooses the enforcement of superpixel smoothness factor of superpixel - - - - - Calculates the actual amount of superpixels on a given segmentation computed - and stored in SuperpixelSLIC object. - - - - - - Calculates the superpixel segmentation on a given image with the initialized - parameters in the SuperpixelSLIC object. - - This function can be called again without the need of initializing the algorithm with - createSuperpixelSLIC(). This save the computational cost of allocating memory for all the - structures of the algorithm. - - The function computes the superpixels segmentation of an image with the parameters initialized - with the function createSuperpixelSLIC(). The algorithms starts from a grid of superpixels and - then refines the boundaries by proposing updates of edges boundaries. - - Number of iterations. Higher number improves the result. - - - - Returns the segmentation labeling of the image. - Each label represents a superpixel, and each pixel is assigned to one superpixel label. - - The function returns an image with the labels of the superpixel segmentation. The labels are in - the range[0, getNumberOfSuperpixels()]. - - - - - - Returns the mask of the superpixel segmentation stored in SuperpixelSLIC object. - The function return the boundaries of the superpixel segmentation. - - Return: CV_8U1 image mask where -1 indicates that the pixel is a superpixel border, and 0 otherwise. - If false, the border is only one pixel wide, otherwise all pixels at the border are masked. - - - - Enforce label connectivity. - - The function merge component that is too small, assigning the previously found adjacent label - to this component.Calling this function may change the final number of superpixels. - - The minimum element size in percents that should be absorbed into a bigger - superpixel.Given resulted average superpixel size valid value should be in 0-100 range, 25 means - that less then a quarter sized superpixel should be absorbed, this is default. - - - - Applies Ridge Detection Filter to an input image. - - Implements Ridge detection similar to the one in [Mathematica](http://reference.wolfram.com/language/ref/RidgeFilter.html) - using the eigen values from the Hessian Matrix of the input image using Sobel Derivatives. - Additional refinement can be done using Skeletonization and Binarization. Adapted from @cite segleafvein and @cite M_RF - - - - - Constructor - - - - - Create pointer to the Ridge detection filter. - - Specifies output image depth. Defualt is CV_32FC1 - Order of derivative x, default is 1 - Order of derivative y, default is 1 - Sobel kernel size , default is 3 - Converted format for output, default is CV_8UC1 - Optional scale value for derivative values, default is 1 - Optional bias added to output, default is 0 - Pixel extrapolation method, default is BORDER_DEFAULT - - - - - Releases managed resources - - - - - Apply Ridge detection filter on input image. - - InputArray as supported by Sobel. img can be 1-Channel or 3-Channels. - OutputAray of structure as RidgeDetectionFilter::ddepth. Output image with ridges. - - - - cv::xphoto functions - - - - - Performs image denoising using the Block-Matching and 3D-filtering algorithm - (http://www.cs.tut.fi/~foi/GCF-BM3D/BM3D_TIP_2007.pdf) with several computational - optimizations.Noise expected to be a gaussian white noise. - - Input 8-bit or 16-bit 1-channel image. - Output image of the first step of BM3D with the same size and type as src. - Output image of the second step of BM3D with the same size and type as src. - Parameter regulating filter strength. Big h value perfectly removes noise but also - removes image details, smaller h value preserves details but also preserves some noise. - Size in pixels of the template patch that is used for block-matching. Should be power of 2. - Size in pixels of the window that is used to perform block-matching. - Affect performance linearly: greater searchWindowsSize - greater denoising time. Must be larger than templateWindowSize. - Block matching threshold for the first step of BM3D (hard thresholding), - i.e.maximum distance for which two blocks are considered similar.Value expressed in euclidean distance. - Block matching threshold for the second step of BM3D (Wiener filtering), - i.e.maximum distance for which two blocks are considered similar. Value expressed in euclidean distance. - Maximum size of the 3D group for collaborative filtering. - Sliding step to process every next reference block. - Kaiser window parameter that affects the sidelobe attenuation of the transform of the - window.Kaiser window is used in order to reduce border effects.To prevent usage of the window, set beta to zero. - Norm used to calculate distance between blocks. L2 is slower than L1 but yields more accurate results. - Step of BM3D to be executed. Allowed are only BM3D_STEP1 and BM3D_STEPALL. - BM3D_STEP2 is not allowed as it requires basic estimate to be present. - Type of the orthogonal transform used in collaborative filtering step. - Currently only Haar transform is supported. - - - - Performs image denoising using the Block-Matching and 3D-filtering algorithm - (http://www.cs.tut.fi/~foi/GCF-BM3D/BM3D_TIP_2007.pdf) with several computational optimizations.Noise expected to be a gaussian white noise. - - Input 8-bit or 16-bit 1-channel image. - Output image with the same size and type as src. - Parameter regulating filter strength. Big h value perfectly removes noise but also - removes image details, smaller h value preserves details but also preserves some noise. - Size in pixels of the template patch that is used for block-matching. Should be power of 2. - Size in pixels of the window that is used to perform block-matching. - Affect performance linearly: greater searchWindowsSize - greater denoising time. Must be larger than templateWindowSize. - Block matching threshold for the first step of BM3D (hard thresholding), - i.e.maximum distance for which two blocks are considered similar.Value expressed in euclidean distance. - Block matching threshold for the second step of BM3D (Wiener filtering), - i.e.maximum distance for which two blocks are considered similar. Value expressed in euclidean distance. - Maximum size of the 3D group for collaborative filtering. - Sliding step to process every next reference block. - Kaiser window parameter that affects the sidelobe attenuation of the transform of the - window.Kaiser window is used in order to reduce border effects.To prevent usage of the window, set beta to zero. - Norm used to calculate distance between blocks. L2 is slower than L1 but yields more accurate results. - Step of BM3D to be executed. Allowed are only BM3D_STEP1 and BM3D_STEPALL. - BM3D_STEP2 is not allowed as it requires basic estimate to be present. - Type of the orthogonal transform used in collaborative filtering step. - Currently only Haar transform is supported. - - - - The function implements simple dct-based denoising - - - http://www.ipol.im/pub/art/2011/ys-dct/ - - source image - destination image - expected noise standard deviation - size of block side where dct is computed - - - - The function implements different single-image inpainting algorithms. - - source image, it could be of any type and any number of channels from 1 to 4. In case of 3- and 4-channels images the function expect them in CIELab colorspace or similar one, where first color component shows intensity, while second and third shows colors. Nonetheless you can try any colorspaces. - mask (CV_8UC1), where non-zero pixels indicate valid image area, while zero pixels indicate area to be inpainted - destination image - see OpenCvSharp.XPhoto.InpaintTypes - - - - oilPainting. - See the book @cite Holzmann1988 for details. - - Input three-channel or one channel image (either CV_8UC3 or CV_8UC1) - Output image of the same size and type as src. - neighbouring size is 2-size+1 - image is divided by dynRatio before histogram processing - color space conversion code(see ColorConversionCodes). Histogram will used only first plane - - - - Implements an efficient fixed-point approximation for applying channel gains, - which is the last step of multiple white balance algorithms. - - Input three-channel image in the BGR color space (either CV_8UC3 or CV_16UC3) - Output image of the same size and type as src. - gain for the B channel - gain for the G channel - gain for the R channel - - - - Creates an instance of GrayworldWB - - - - - - Creates an instance of LearningBasedWB - - Path to a .yml file with the model. If not specified, the default model is used - - - - - Creates an instance of SimpleWB - - - - - - BM3D algorithm steps - - - - - Execute all steps of the algorithm - - - - - Execute only first step of the algorithm - - - - - Execute only second step of the algorithm - - - - - various inpainting algorithms - - - - - This algorithm searches for dominant correspondences(transformations) of image patches - and tries to seamlessly fill-in the area to be inpainted using this transformations inpaint - - - - - Performs Frequency Selective Reconstruction (FSR). - One of the two quality profiles BEST and FAST can be chosen, depending on the time available for reconstruction. - See @cite GenserPCS2018 and @cite SeilerTIP2015 for details. - - The algorithm may be utilized for the following areas of application: - 1. %Error Concealment (Inpainting). - The sampling mask indicates the missing pixels of the distorted input - image to be reconstructed. - 2. Non-Regular Sampling. - For more information on how to choose a good sampling mask, please review - @cite GroscheICIP2018 and @cite GroscheIST2018. - - 1-channel grayscale or 3-channel BGR image are accepted. - - Conventional accepted ranges: - - 0-255 for CV_8U - - 0-65535 for CV_16U - - 0-1 for CV_32F/CV_64F. - - - - - See #INPAINT_FSR_BEST - - - - - BM3D transform types - - - - - Un-normalized Haar transform - - - - - Gray-world white balance algorithm. - - - - - Constructor - - - - - Creates an instance of GrayworldWB - - - - - - - - - Maximum saturation for a pixel to be included in the gray-world assumption. - - - - - Applies white balancing to the input image. - - Input image - White balancing result - - - - More sophisticated learning-based automatic white balance algorithm. - - - - - Constructor - - - - - Creates an instance of LearningBasedWB - - Path to a .yml file with the model. If not specified, the default model is used - - - - - - - - Defines the size of one dimension of a three-dimensional RGB histogram that is used internally by the algorithm. It often makes sense to increase the number of bins for images with higher bit depth (e.g. 256 bins for a 12 bit image). - - - - - Maximum possible value of the input image (e.g. 255 for 8 bit images, 4095 for 12 bit images) - - - - - Threshold that is used to determine saturated pixels, i.e. pixels where at least one of the channels exceeds - - - - - Applies white balancing to the input image. - - Input image - White balancing result - - - - Implements the feature extraction part of the algorithm. - - Input three-channel image (BGR color space is assumed). - An array of four (r,g) chromaticity tuples corresponding to the features listed above. - - - - A simple white balance algorithm that works by independently stretching each of the input image channels to the specified range. For increased robustness it ignores the top and bottom p% of pixel values. - - - - - Constructor - - - - - Creates an instance of SimpleWB - - - - - - Releases managed resources - - - - - Input image range maximum value. - - - - - Input image range minimum value. - - - - - Output image range maximum value. - - - - - Output image range minimum value. - - - - - Percent of top/bottom values to ignore. - - - - - Applies white balancing to the input image. - - Input image - White balancing result - - - - This algorithm decomposes image into two layers: base layer and detail layer using bilateral filter - and compresses contrast of the base layer thus preserving all the details. - - This implementation uses regular bilateral filter from OpenCV. - - Saturation enhancement is possible as in cv::TonemapDrago. - - For more information see @cite DD02 . - - - - - Constructor - - - - - Creates TonemapDurand object - - positive value for gamma correction. Gamma value of 1.0 implies no correction, gamma - equal to 2.2f is suitable for most displays. - Generally gamma > 1 brightens the image and gamma < 1 darkens it. - resulting contrast on logarithmic scale, i. e. log(max / min), where max and min - positive saturation enhancement value. 1.0 preserves saturation, values greater - than 1 increase saturation and values less than 1 decrease it. - bilateral filter sigma in coordinate space - bilateral filter sigma in color space - - - - - Releases managed resources - - - - - Gets or sets positive saturation enhancement value. 1.0 preserves saturation, values greater - than 1 increase saturation and values less than 1 decrease it. - - - - - Gets or sets resulting contrast on logarithmic scale, i. e. log(max / min), where max and min - - - - - Gets or sets bilateral filter sigma in coordinate space - - - - - Gets or sets bilateral filter sigma in color space - - - - - The base class for auto white balance algorithms. - - - - - Applies white balancing to the input image. - - Input image - White balancing result - - - diff --git a/AUTS_AOI/bin/Debug/SharpCompress.dll b/AUTS_AOI/bin/Debug/SharpCompress.dll deleted file mode 100644 index a4322fa..0000000 Binary files a/AUTS_AOI/bin/Debug/SharpCompress.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Buffers.dll b/AUTS_AOI/bin/Debug/System.Buffers.dll deleted file mode 100644 index 9f5d1e3..0000000 Binary files a/AUTS_AOI/bin/Debug/System.Buffers.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Buffers.xml b/AUTS_AOI/bin/Debug/System.Buffers.xml deleted file mode 100644 index fe1f651..0000000 --- a/AUTS_AOI/bin/Debug/System.Buffers.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - System.Buffers - - - - - Provides a resource pool that enables reusing instances of type . - - - - Renting and returning buffers with an can increase performance - in situations where arrays are created and destroyed frequently, resulting in significant - memory pressure on the garbage collector. - - - This class is thread-safe. All members may be used by multiple threads concurrently. - - - - - The lazily-initialized shared pool instance. - - - - Retrieves a shared instance. - - - The shared pool provides a default implementation of - that's intended for general applicability. It maintains arrays of multiple sizes, and - may hand back a larger array than was actually requested, but will never hand back a smaller - array than was requested. Renting a buffer from it with will result in an - existing buffer being taken from the pool if an appropriate buffer is available or in a new - buffer being allocated if one is not available. - - - - Ensures that has been initialized to a pool and returns it. - - - - Creates a new instance using default configuration options. - - A new instance. - - - - Creates a new instance using custom configuration options. - - The maximum length of array instances that may be stored in the pool. - - The maximum number of array instances that may be stored in each bucket in the pool. The pool - groups arrays of similar lengths into buckets for faster access. - - A new instance with the specified configuration options. - - The created pool will group arrays into buckets, with no more than - in each bucket and with those arrays not exceeding in length. - - - - - Retrieves a buffer that is at least the requested length. - - The minimum length of the array needed. - - An that is at least in length. - - - This buffer is loaned to the caller and should be returned to the same pool via - so that it may be reused in subsequent usage of . - It is not a fatal error to not return a rented buffer, but failure to do so may lead to - decreased application performance, as the pool may need to create a new buffer to replace - the one lost. - - - - - Returns to the pool an array that was previously obtained via on the same - instance. - - - The buffer previously obtained from to return to the pool. - - - If true and if the pool will store the buffer to enable subsequent reuse, - will clear of its contents so that a subsequent consumer via - will not see the previous consumer's content. If false or if the pool will release the buffer, - the array's contents are left unchanged. - - - Once a buffer has been returned to the pool, the caller gives up all ownership of the buffer - and must not use it. The reference returned from a given call to must only be - returned via once. The default - may hold onto the returned buffer in order to rent it again, or it may release the returned buffer - if it's determined that the pool already has enough buffers stored. - - - - The reason for a BufferAllocated event. - - - The pool is allocating a buffer to be pooled in a bucket. - - - The requested buffer size was too large to be pooled. - - - The pool has already allocated for pooling as many buffers of a particular size as it's allowed. - - - - Event for when a buffer is rented. This is invoked once for every successful call to Rent, - regardless of whether a buffer is allocated or a buffer is taken from the pool. In a - perfect situation where all rented buffers are returned, we expect to see the number - of BufferRented events exactly match the number of BuferReturned events, with the number - of BufferAllocated events being less than or equal to those numbers (ideally significantly - less than). - - - - - Event for when a buffer is allocated by the pool. In an ideal situation, the number - of BufferAllocated events is significantly smaller than the number of BufferRented and - BufferReturned events. - - - - - Event raised when a buffer is returned to the pool. This event is raised regardless of whether - the returned buffer is stored or dropped. In an ideal situation, the number of BufferReturned - events exactly matches the number of BufferRented events. - - - - The default maximum length of each array in the pool (2^20). - - - The default maximum number of arrays per bucket that are available for rent. - - - Lazily-allocated empty array used when arrays of length 0 are requested. - - - Gets an ID for the pool to use with events. - - - Provides a thread-safe bucket containing buffers that can be Rent'd and Return'd. - - - - Creates the pool with numberOfBuffers arrays where each buffer is of bufferLength length. - - - - Gets an ID for the bucket to use with events. - - - Takes an array from the bucket. If the bucket is empty, returns null. - - - - Attempts to return the buffer to the bucket. If successful, the buffer will be stored - in the bucket and true will be returned; otherwise, the buffer won't be stored, and false - will be returned. - - - - The buffer is not associated with this pool and may not be returned to it. - - - diff --git a/AUTS_AOI/bin/Debug/System.Data.SQLite.dll b/AUTS_AOI/bin/Debug/System.Data.SQLite.dll deleted file mode 100644 index 4f5314c..0000000 Binary files a/AUTS_AOI/bin/Debug/System.Data.SQLite.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Drawing.Common.dll b/AUTS_AOI/bin/Debug/System.Drawing.Common.dll deleted file mode 100644 index 7d75887..0000000 Binary files a/AUTS_AOI/bin/Debug/System.Drawing.Common.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Drawing.Common.xml b/AUTS_AOI/bin/Debug/System.Drawing.Common.xml deleted file mode 100644 index 96a49a1..0000000 --- a/AUTS_AOI/bin/Debug/System.Drawing.Common.xml +++ /dev/null @@ -1,627 +0,0 @@ - - - - System.Drawing.Common - - - - - Indicates that the specified method requires dynamic access to code that is not referenced - statically, for example through . - - - This allows tools to understand which methods are unsafe to call when removing unreferenced - code from an application. - - - - - Initializes a new instance of the class - with the specified message. - - - A message that contains information about the usage of unreferenced code. - - - - - Gets a message that contains information about the usage of unreferenced code. - - - - - Gets or sets an optional URL that contains more information about the method, - why it requries unreferenced code, and what options a consumer has to deal with it. - - - - - Suppresses reporting of a specific rule violation, allowing multiple suppressions on a - single code artifact. - - - is different than - in that it doesn't have a - . So it is always preserved in the compiled assembly. - - - - - Initializes a new instance of the - class, specifying the category of the tool and the identifier for an analysis rule. - - The category for the attribute. - The identifier of the analysis rule the attribute applies to. - - - - Gets the category identifying the classification of the attribute. - - - The property describes the tool or tool analysis category - for which a message suppression attribute applies. - - - - - Gets the identifier of the analysis tool rule to be suppressed. - - - Concatenated together, the and - properties form a unique check identifier. - - - - - Gets or sets the scope of the code that is relevant for the attribute. - - - The Scope property is an optional argument that specifies the metadata scope for which - the attribute is relevant. - - - - - Gets or sets a fully qualified path that represents the target of the attribute. - - - The property is an optional argument identifying the analysis target - of the attribute. An example value is "System.IO.Stream.ctor():System.Void". - Because it is fully qualified, it can be long, particularly for targets such as parameters. - The analysis tool user interface should be capable of automatically formatting the parameter. - - - - - Gets or sets an optional argument expanding on exclusion criteria. - - - The property is an optional argument that specifies additional - exclusion where the literal metadata target is not sufficiently precise. For example, - the cannot be applied within a method, - and it may be desirable to suppress a violation against a statement in the method that will - give a rule violation, but not against all statements in the method. - - - - - Gets or sets the justification for suppressing the code analysis message. - - - - Specifies that null is allowed as an input even if the corresponding type disallows it. - - - Specifies that null is disallowed as an input even if the corresponding type allows it. - - - Specifies that an output may be null even if the corresponding type disallows it. - - - Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns. - - - Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter may be null. - - - - Gets the return value condition. - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that the output will be non-null if the named parameter is non-null. - - - Initializes the attribute with the associated parameter name. - - The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null. - - - - Gets the associated parameter name. - - - Applied to a method that will never return under any circumstance. - - - Specifies that the method will not return if the associated Boolean parameter is passed the specified value. - - - Initializes the attribute with the specified parameter value. - - The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to - the associated parameter matches this value. - - - - Gets the condition parameter value. - - - Specifies that the method or property will ensure that the listed field and property members have not-null values. - - - Initializes the attribute with a field or property member. - - The field or property member that is promised to be not-null. - - - - Initializes the attribute with the list of field and property members. - - The list of field and property members that are promised to be not-null. - - - - Gets field or property member names. - - - Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition. - - - Initializes the attribute with the specified return value condition and a field or property member. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - The field or property member that is promised to be not-null. - - - - Initializes the attribute with the specified return value condition and list of field and property members. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - The list of field and property members that are promised to be not-null. - - - - Gets the return value condition. - - - Gets field or property member names. - - - (printer name protected due to security restrictions) - - - Changes cannot be made to {0} because permissions are not valid. - - - Bitmaps that are icons cannot be made transparent. Icons natively support transparency. Use the Icon constructor to create an icon. - - - The color {0} is not a system color. - - - .NET Component - - - Function was ended. - - - File access is denied. - - - A Graphics object cannot be created from an image that has an indexed pixel format. - - - SetPixel is not supported for images with indexed pixel formats. - - - Destination points define a parallelogram which must have a length of 3. These points will represent the upper-left, upper-right, and lower-left coordinates (defined in that order). - - - Destination points must be an array with a length of 3 or 4. A length of 3 defines a parallelogram with the upper-left, upper-right, and lower-left corners. A length of 4 defines a quadrilateral with the fourth element of the array specifying the lower-rig ... - - - File not found. - - - Font '{0}' cannot be found. - - - Font '{0}' does not support style '{1}'. - - - A generic error occurred in GDI+. - - - Buffer is too small (internal GDI+ error). - - - Parameter is not valid. - - - Rectangle '{0}' cannot have a width or height equal to 0. - - - Operation requires a transformation of the image from GDI+ to GDI. GDI does not support images with a width or height greater than 32767. - - - Out of memory. - - - Not implemented. - - - GDI+ is not properly initialized (internal GDI+ error). - - - Only TrueType fonts are supported. '{0}' is not a TrueType font. - - - Only TrueType fonts are supported. This is not a TrueType font. - - - Object is currently in use elsewhere. - - - Overflow error. - - - Property cannot be found. - - - Property is not supported. - - - Unknown GDI+ error occurred. - - - Image format is unknown. - - - Current version of GDI+ does not support this feature. - - - Bitmap region is already locked. - - - (Global Assembly Cache) - - - BufferedGraphicsContext cannot be disposed of because a buffer operation is currently in progress. - - - Screen-compatible bitmap cannot be created. The screen bitmap format cannot be determined. - - - '{0}' data length expected {1}, read {2} - - - Toolbox item cannot be modified. - - - Property {0} requires an argument of type {1}. - - - Data type {0} is not serializable. Items added to a property dictionary must be serializable. - - - Argument should be a non-empty string. - - - Internal state of the {0} class is invalid. - - - Property must be set to a valid ColorBlend object to use interpolation colors. - - - {0}{1} ColorBlend objects must be constructed with the same number of positions and color values. Positions must be between 0.0 and 1.0, 1.0 indicating the last element in the array. - - - ColorBlend object that was set is not valid. - - - Position's first element must be equal to 0. - - - Position's last element must be equal to 1.0. - - - Array of colors and positions must contain at least two elements. - - - Colors and positions do not have the same number of elements. - - - Value of '{1}' is not valid for '{0}'. - - - Value of '{0}' is not valid for font size unit. - - - Value of '{1}' is not valid for '{0}'. '{0}' should be greater than {2} and less than or equal to {3}. - - - Class name is not valid. - - - Color '{0}' is not valid. - - - DashPattern value is not valid. - - - Value of '{1}' is not valid for '{0}'. '{0}' should be greater than or equal to {2} and less than or equal to {3}. - - - Win32 handle that was passed to {0} is not valid or is the wrong type. - - - Image type is unknown. - - - Value of '{1}' is not valid for '{0}'. '{0}' must be greater than or equal to {2}. - - - Permission level is not valid. - - - Permission state is not valid. - - - Argument '{0}' must be a picture that can be used as a {1}. - - - Settings to access printer '{0}' are not valid. - - - No printers are installed. - - - Handle {0} is not valid. - - - Parameter must be positive and < Width. - - - Parameter must be positive and < Height. - - - Native handle is 0. - - - Default printer is not set. - - - Not implemented. - - - Occurs when the document is about to be printed. - - - The name of the document shown to the user. - - - The page settings of the page currently being printed. - - - Occurs after the document has been printed. - - - Indicates that the graphics origin is located at the user-specified page margins. - - - Retrieves the print controller for this document. - - - Occurs once for each page to be printed. - - - Retrieves the settings for the printer the document is currently being printed to. - - - Occurs before each page is printed. Useful for changing PageSettings for a particular page. - - - System.Drawing is not supported on this platform. - - - System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information. - - - Defines an object that sends output to a printer. - - - XML is not valid. - - - Permission level must be between PrintingPermissionLevel.NoPrinting and PrintingPermissionLevel.AllPrinting. - - - IDictionary parameter contains at least one entry that is not valid. Ensure all values are consistent with the object's properties. - - - PaperSize cannot be changed unless the Kind property is set to Custom. - - - Resource '{1}' cannot be found in class '{0}'. - - - Target does not have permission to print. - - - Text "{0}" cannot be parsed. The expected text format is "{1}". - - - TriState.Default cannot be converted into a Boolean. - - - (Icon) - - - (none) - - - GetObjectType on this dc returned an invalid value. - - - The value of argument '{0}' ({1}) is invalid for Enum type '{2}'. - - - {0} is not a valid value for {1}. - - - Invalid Blend object. It should have at least 2 elements in each of the factors and positions arrays. - - - Invalid Blend object. The positions array must have 0.0 as its first element. - - - Invalid Blend object. The positions array must have 1.0 as its last element. - - - Unable to load DLL '{0}': The specified module could not be found. - - - Unable to find an entry point named '{0}' in DLL '{1}'. - - - {0} only available on WMF files. - - - Cannot create Graphics from an indexed bitmap. - - - Could not open display (X-Server required. Check your DISPLAY environment variable) - - - Couldn't find specified file. - - - Icon instance was disposed. - - - Invalid GraphicsUnit - - - Invalid thumbnail size - - - No codec available for format:{0} - - - Operation not implemented under X11 - - - (none) - - - No valid icon image found - - - Null or empty path. - - - Invalid parameter passed. Number of points and types must be same. - - - Object has been disposed. - - - The value of the {0} property is less than zero. - - - The value of the {0} property is not one of the {1} values - - - The directory {0} of the filename {1} does not exist. - - - System.Drawing.Common is not supported on this platform. - - - - Base type for all platform-specific API attributes. - - - - - Records the platform that the project targeted. - - - - - Records the operating system (and minimum version) that supports an API. Multiple attributes can be - applied to indicate support on multiple operating systems. - - - Callers can apply a - or use guards to prevent calls to APIs on unsupported operating systems. - - A given platform should only be specified once. - - - - - Marks APIs that were removed in a given operating system version. - - - Primarily used by OS bindings to indicate APIs that are only available in - earlier versions. - - - - - Annotates a custom guard field, property or method with a supported platform name and optional version. - Multiple attributes can be applied to indicate guard for multiple supported platforms. - - - Callers can apply a to a field, property or method - and use that field, property or method in a conditional or assert statements in order to safely call platform specific APIs. - - The type of the field or property should be boolean, the method return type should be boolean in order to be used as platform guard. - - - - - Annotates the custom guard field, property or method with an unsupported platform name and optional version. - Multiple attributes can be applied to indicate guard for multiple unsupported platforms. - - - Callers can apply a to a field, property or method - and use that field, property or method in a conditional or assert statements as a guard to safely call APIs unsupported on those platforms. - - The type of the field or property should be boolean, the method return type should be boolean in order to be used as platform guard. - - - - diff --git a/AUTS_AOI/bin/Debug/System.Memory.dll b/AUTS_AOI/bin/Debug/System.Memory.dll deleted file mode 100644 index 4617199..0000000 Binary files a/AUTS_AOI/bin/Debug/System.Memory.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Memory.xml b/AUTS_AOI/bin/Debug/System.Memory.xml deleted file mode 100644 index 4d12fd7..0000000 --- a/AUTS_AOI/bin/Debug/System.Memory.xml +++ /dev/null @@ -1,355 +0,0 @@ - - - System.Memory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_AOI/bin/Debug/System.Numerics.Vectors.dll b/AUTS_AOI/bin/Debug/System.Numerics.Vectors.dll deleted file mode 100644 index 0865972..0000000 Binary files a/AUTS_AOI/bin/Debug/System.Numerics.Vectors.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Numerics.Vectors.xml b/AUTS_AOI/bin/Debug/System.Numerics.Vectors.xml deleted file mode 100644 index da34d39..0000000 --- a/AUTS_AOI/bin/Debug/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2621 +0,0 @@ - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is &quot;up&quot; from the camera&#39;s point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. - -or- - fieldOfView is greater than or equal to . - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane&#39;s normal vector. - The plane&#39;s distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane&#39;s normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. - -or- - The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. - -or- - index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The one&#39;s complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector&#39;s elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/AUTS_AOI/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll b/AUTS_AOI/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll deleted file mode 100644 index c5ba4e4..0000000 Binary files a/AUTS_AOI/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml b/AUTS_AOI/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml deleted file mode 100644 index 9d79492..0000000 --- a/AUTS_AOI/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml +++ /dev/null @@ -1,291 +0,0 @@ - - - - System.Runtime.CompilerServices.Unsafe - - - - Contains generic, low-level functionality for manipulating pointers. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given void pointer. - The void pointer to add the offset to. - The offset to add. - The type of void pointer. - A new void pointer that reflects the addition of offset to the specified pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Determines whether the specified references point to the same location. - The first reference to compare. - The second reference to compare. - The type of reference. - - if and point to the same location; otherwise, . - - - Casts the given object to the specified type. - The object to cast. - The type which the object will be cast to. - The original object, casted to the given type. - - - Reinterprets the given reference as a reference to a value of type . - The reference to reinterpret. - The type of reference to reinterpret. - The desired type of the reference. - A reference to a value of type . - - - Returns a pointer to the given by-ref parameter. - The object whose pointer is obtained. - The type of object. - A pointer to the given value. - - - Reinterprets the given read-only reference as a reference. - The read-only reference to reinterpret. - The type of reference. - A reference to a value of type . - - - Reinterprets the given location as a reference to a value of type . - The location of the value to reference. - The type of the interpreted location. - A reference to a value of type . - - - Determines the byte offset from origin to target from the given references. - The reference to origin. - The reference to target. - The type of reference. - Byte offset from origin to target i.e. - . - - - Copies a value of type to the given location. - The location to copy to. - A pointer to the value to copy. - The type of value to copy. - - - Copies a value of type to the given location. - The location to copy to. - A reference to the value to copy. - The type of value to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Returns a value that indicates whether a specified reference is greater than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is greater than ; otherwise, . - - - Returns a value that indicates whether a specified reference is less than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is less than ; otherwise, . - - - Determines if a given reference to a value of type is a null reference. - The reference to check. - The type of the reference. - - if is a null reference; otherwise, . - - - Returns a reference to a value of type that is a null reference. - The type of the reference. - A reference to a value of type that is a null reference. - - - Reads a value of type from the given location. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Returns the size of an object of the given type parameter. - The type of object whose size is retrieved. - The size of an object of type . - - - Bypasses definite assignment rules for a given value. - The uninitialized object. - The type of the uninitialized object. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subraction of offset from pointer. - - - Subtracts an element offset from the given void pointer. - The void pointer to subtract the offset from. - The offset to subtract. - The type of the void pointer. - A new void pointer that reflects the subtraction of offset from the specified pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of byte offset from pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subraction of byte offset from pointer. - - - Returns a to a boxed value. - The value to unbox. - The type to be unboxed. - - is , and is a non-nullable value type. - - is not a boxed value type. - --or- - - is not a boxed . - - cannot be found. - A to the boxed value . - - - Writes a value of type to the given location. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - \ No newline at end of file diff --git a/AUTS_AOI/bin/Debug/System.ValueTuple.dll b/AUTS_AOI/bin/Debug/System.ValueTuple.dll deleted file mode 100644 index 4ce28fd..0000000 Binary files a/AUTS_AOI/bin/Debug/System.ValueTuple.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/System.ValueTuple.xml b/AUTS_AOI/bin/Debug/System.ValueTuple.xml deleted file mode 100644 index 1151832..0000000 --- a/AUTS_AOI/bin/Debug/System.ValueTuple.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - System.ValueTuple - - - - diff --git a/AUTS_AOI/bin/Debug/TeeChart.dll b/AUTS_AOI/bin/Debug/TeeChart.dll deleted file mode 100644 index f6e9728..0000000 Binary files a/AUTS_AOI/bin/Debug/TeeChart.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/UTS_Core.dll b/AUTS_AOI/bin/Debug/UTS_Core.dll deleted file mode 100644 index 4700a98..0000000 Binary files a/AUTS_AOI/bin/Debug/UTS_Core.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/UTS_Core.dll.config b/AUTS_AOI/bin/Debug/UTS_Core.dll.config deleted file mode 100644 index 9e4ecc2..0000000 --- a/AUTS_AOI/bin/Debug/UTS_Core.dll.config +++ /dev/null @@ -1,68 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - False - - - False - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AUTS_AOI/bin/Debug/UTS_Core.pdb b/AUTS_AOI/bin/Debug/UTS_Core.pdb deleted file mode 100644 index ebf911a..0000000 Binary files a/AUTS_AOI/bin/Debug/UTS_Core.pdb and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/UTS_Core.xml b/AUTS_AOI/bin/Debug/UTS_Core.xml deleted file mode 100644 index 7aa1e04..0000000 --- a/AUTS_AOI/bin/Debug/UTS_Core.xml +++ /dev/null @@ -1,9737 +0,0 @@ - - - - -UTS_Core - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 压缩文件夹到zip文件 - - 需要压缩的文件夹 - 压缩后的zip文件路径 - - - - 压缩文件至Zip文件 - - 被压缩的文件路径 - 压缩文件路径 - - - - 压缩指定文件夹至tar格式文件,不会生成根文件目录 - - 压缩文件名 - 源文件夹 - - - - 压缩指定文件列表到tar格式文件 - - 文件列表 - 压缩文件路径 - 压缩文件所在文件夹路径 - - - - 填充文件表,供压缩文件使用 - - 文件列表 - 需要压缩的文件夹 - 文件前缀 - - - - 解压Tar格式文件夹 - - 文件路径 - 目标文件夹 - - - - Contains the schema of a single DB column. - - - - - 清空数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 复制基础表数据到新表中 - - 表名 - 基础表名 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - Contains the entire database schema - - - - - 判断列名 - - - - - - 判断条件 - - - - - - 判断值 - - - - - - 当前条件与上一个条件的逻辑关系 - - - - - - 将当前条件转换为字符串,不支持将条件逻辑关系同时转换 - - - - - - 查询条件的表名 - - - - - - 当IsSearchAllCols = False时,查询返回列名集合 - - - - - - 查询的条件 - - - - - - 排序方式 - - - - - - 但需要排序时排序列名 - - - - - - 从返回结果提取指定行的内容 - - - - - - Describes a single view schema - - - - - Contains the view name - - - - - Contains the view SQL statement - - - - - 数据库语句助手 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句 - 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用 - - - - - - 查询指定数据表符合条件的所有数据 - - 指定表名 - 查询条件, - - - - - 查询表符合条件的所有指定列的数据 - - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询表符合条件的所有指定列的数据 - - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据表名 - 查询条件 - - - - - 查询指定数据表的信息 - - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量 - - 表名 - - - - - 数据表插入一行数据 - - 表名 - 列名字符串 - 列值字符串 - - - - - 数据表插入一行数据 - - 表名 - 列名与列值键值对 - - - - - 数据表插入一行,通过命令参数方式执行时使用 - - - - - - - - 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 表名 - 字段列表 - - - - - 更新指定表数据 - - 指定表名 - 更新字符串 - - - - - - 更新指定表数据 - - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 指定数据表增加一列数据 - - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 数据表删除一列数据 - - 表名 - 需要删除的列名,仅一列 - - - - - 删除指定表多行数据 - - 表名 - 条件 - - - - - 创建数据表 - - 表名 - 创建表的列信息字符串 - - - - - 创建数据表,如果存在则不创建 - - 表名 - 创建表的列信息字符串 - - - - - 清空数据表,表依旧存在 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的去重数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据库名 - 数据表名 - 查询条件 - - - - - 查询指定数据库中指定数据表符合条件的所有数据 - - - 数据库名 - 数据表名 - 查询条件(可选) - - - - - 查询指定数据库中指定数据表的信息 - - 数据库名 - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量 - - 数据库名 - 表名 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名字符串 - 列值字符串 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名与列值键值对 - - - - - 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 数据库名 - - 需要插入列名的集合 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新字符串 - - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 数据库名 - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 指定数据库中指定数据表增加一列数据 - - 数据库名 - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 指定数据库中数据表删除一列数据 - - 数据库名 - 表名 - 需要删除的列名,仅一列 - - - - - 指定数据库中指定表删除多行数据 - - 数据库名 - 表名 - 条件 - - - - - 指定数据库中创建数据表 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 指定数据库中创建数据表,如果存在则不创建 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 清空指定数据库中数据表,表依旧存在 - - 数据库名 - 数据表名 - - - - - 删除指定数据库中数据表 - - 数据库名 - 数据表名 - - - - - 数据库通用命令执行器 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - - - - 数据库类型,目前支持Mysql与Sqlite - - - - - 打开数据库连接 - - - - - - 关闭数据库连接 - - - - - 创建当前连接的命令执行句柄 - - - - - - 运行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 开启事务 - - - - - - 提交事务 - - - - - 回滚事务 - - - - - 创建数据参数 - - 参数数据类型 - 参数名称 - 参数值 - - - - - 添加数据参数 - - - - - - - - - 清空数据 - - - - - 回收资源 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 是否为唯一值 - - - - - - 查询指定数据表的信息 - - - - - - - 1 byte,小整数值 - - - - - 2 bytes,大整数值 - - - - - 3 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 8 bytes,极大整数值 - - - - - 4 bytes,单精度浮点数值 - - - - - 8 bytes,双精度浮点数值 - - - - - 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值 - - - - - 3 bytes,日期值,YYYY-MM-DD - - - - - 3 bytes,时间值或持续时间,HH:MM:SS - - - - - 1 bytes,年份值,YYYY - - - - - 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS - - - - - 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS - - - - - 0-255 bytes,定长字符串 - - - - - 0-65535 bytes,变长字符串 - - - - - 0-255 bytes,不超过 255 个字符的二进制字符串 - - - - - 0-255 bytes,短文本字符串 - - - - - 0-65 535 bytes,二进制形式的长文本数据 - - - - - 0-65 535 bytes,长文本数据 - - - - - 0-16 777 215 bytes,二进制形式的中等长度文本数据 - - - - - 0-16 777 215 bytes,中等长度文本数据 - - - - - 0-4 294 967 295 bytes,二进制形式的极大文本数据 - - - - - 0-4 294 967 295 bytes,极大文本数据 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 数据类型是否带符号 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 应用程序日志 - - - - 日志文件所在父文件夹路径 - - - 日志文件名前缀 - - - 日志文件所在路径 - - - - 保存日志的文件夹完整路径 - - - - - 日志文件前缀 - - - - - 写入错误信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入警告信息记录日志 - - - - - - 写入错误信息记录日志 - - - - - - 写入数据库信息记录日志 - - - - - - 将信息入到日志 - - 日志类型 - 日志内容 - - - - 写日志 - - - - - 日志类型 - - - - 调试信息 - - - 系统运行信息 - - - 警告信息 - - - 错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息 - - - 致命信息 - - - - 考虑修改为自定义控件 - - - - - 是否在添加内容时先挂起布局 - - - - - - 是否添加记录到控件 - - - - - - 控件记录最大行数 - - - - - - 需要被添加数据记录的控件句柄 - - - - - - 清空内容 - - - - - 显示所有数据,优先度最高 - - - - - - 是否显示系统信息 - - - - - - 是否显示串口信息 - - - - - - 是否显示数据库信息 - - - - - - 是否显示网络信息 - - - - - - 是否显示Ftp信息 - - - - - - 显示信息的集合,对应数据位为1则打印,为0不打印 - - - - - - 是否添加时间前缀 - - - - - - 是否显示与上包显示的间隔 - - - - - - 打印调试信息 - - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印信息的提示前缀 - 需要打印的信息 - - - - 枚举扩展类 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 获取当前枚举所有描述特性值,未填的枚举采用枚举名 - - 枚举类型 - - - - - 字符算数表达式求和 - - - - 精度 - - - - 替换占位符 - - 字符串表达式 - - - - - 替换表达式式中的十六进制占位符为实际内容,例如替换B4为buf中的第4位即buf(4)的值 - - - - - - - - 获取表达式转换后的结果是否为真,0、false、空字符为假,1,true为真, 其余为通过计算不为0判断真假 - - - - - - - 获取double类型运算式字符串后缀表达式 - - 字符串表达式 - - - - - 获取小数类型运算结果 - - 浮点型数1 - 浮点型数2 - 运算符 - - - - - 获取符号的优先级 - - 运算符号 - - - - - 校验字符合法性,0为数字,1为运算符,-1为未使用的运算符 - - 需要校验的字符 - - - - - 校验运算式字符串合法性(todo:待进一步完善检测逻辑) - - 需要校验的字符串 - - - - - 返回表达式的值 'Momo 2022-11-10 增加 、Momo 2023-12-15 错误时抛出错误而不是弹窗 - - - - - - 将图像格式转换为二进制数组,以jpeg的格式 - - - - - - - 将图像格式转换为二进制数组 - - 图像 - 图像格式 - - - - - 将二进制数组转换为图像格式 - - - - - - - 将图片变更为String格式,默认PNG格式保存 - - - - - - - 将图片变更为String格式 - - - 保存格式 - - - - - 将图片string还原为图片格式 - - - - - - - 压缩图像到指定的高度与宽度 - - 图像 - 指定的宽度 - 指定的高度 - - - - - 压缩图像,根据宽度比 - - 图像 - 指定的宽度 - - - - - 压缩图像,根据高度比 - - 图像 - 指定的高度 - - - - - 按指定比例有损的压缩图像 - - - - - - - - - 获取图片的代码器信息 - - - - - - 截取整个电脑屏幕 - - - - - - 截取整个电脑屏幕,并指定文件路径下生成jpg格式文件。 - - - - 服务器密钥 - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 获取字符串的MD5值 - - 需要求MD5的原文字符串 - - - - - 获取文件的MD5值 - - 文件路径 - - - - - 将类对象序列化为xml文件 - - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - - 运行一条需要记录在撤销栈的命令 - - - - - 重做命令 - - - - - 撤销命令 - - - - - 运行命令,并将命令添加至撤销堆栈 - - - - - - 将命令添加至撤销堆栈 - - - - - 清空撤销命令堆栈 - - - - - 清空重做命令堆栈 - - - - - 清空撤销与重做命令堆栈 - - - - - 执行撤销命令 - - - - - 执行重做命令 - - - - - 测试数据入库类 - - - - - 是否能够连接远程网络 - - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - 项目索引 - 工艺站索引 - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - - 测试记录表名 - - - - 获取指定表中未存在的数据列集合 - - 数据库执行器 - 需要查询的数据库名 - 需要查询的数据表名 - 需要查询的字段名集合 - - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 在指定数据表中添加指定字段集合 - - 数据库执行器 - 需要查询的数据表名 - 添加字段的键值对,键为字段名,值为列的修饰 - 是否将执行命令保存到缓存表中 - - - - 过滤数据库名,当前sqlite数据库不需要指定库名 - - - - - - - - 保存执行语句到缓存表中 - - 数据库执行器 - Sql语句 - - - - 保存执行语句到缓存表中 - - Sql语句 - - - - 查询对应产品名的对应产品索引,指定执行器方式 - - - - - - - - - 根据判断条件获取数据库是否存在数据,若存在则更新该数据,不存在则插入一条数据 - - 数据库名,账号操作多库时必填 - 数据表名 - 需要更新或插入的数据 - 判断条件,如 `Sn` = '1001' - - - - 获取匹配的用户信息 - - 用户账号 - 用户密码 - - - - - 保存指定字段得测试记录至指定表格中。 - 直接执行保存操作,未检测表格是否存在。 - 保存失败则会抛出异常。 - - 数据表名 - 字段内容 - - - - 新增SN至云端总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - - - - 新增SN至本地总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - 是否将结果保存至本地缓存表 - - - - 更新Sn总表内容至远端数据库 - - DB执行器 - 数据库名 - 当前站位信息 - 当前测试结果 - - - - 更新本地SN总表的测试记录(用于处理组播写入Sn总表操作) - - 测试条码 - 对应总表站位顺序 - 测试时间 - 测试结果 - A1站对应条码 - - - - 更新远程订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - - - - 更新本地订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - 是否将执行命令保存到缓存表中 - - - - 更新本地数据库测试记录,若存在相同条码号的记录则删除后添加 - - - - - - - - - - 更新本地数据库测试记录 - - - - - - - - - - 保存测试记录至云端数据库 - - - - - - - - - - 保存唯一测试日志至云端数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存测试记录至本地数据库 - - - - - - - - - - 保存唯一测试记录至本地数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存唯一测试记录至数据库,若存在相同条码号的记录则覆盖 - - - - - - - - 保存测试记录至数据库。 - - - - - - - - 更新组装站所有条码中与主条码产品相同的条码的测试信息(除主条码) - - - - - - - - 添加指定字段到测试记录表中 - - 测试记录表明 - 字段键值对,键为字段名,值为字段描述 - - - - 从数据表中查询对应客户订单号的内部订单信息 - - 客户订单索引 - - - - - 从数据表中查询对应客户订单号的客户订单信息 - - 客户订单索引 - - - - - 通过项目(产品)索引与条码查询客户订单号 - - - - - - - - 查询所有MO的名称与索引,优先云端,其次本地 - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询所有的错误代码,返回数据表 - - - - - - 查询所有的产品类相关,返回数据表 - - - - - - 获取当前的测试记录数据表 - - 项目索引 - 站位索引 - - - - - 获取当前的条码指定站位的测试记录数据 - - 项目索引 - 站位索引 - - - - - 从远程条码总表中获取条码信息 - - - - - - - 从本地条码总表中获取条码信息 - - - - - - - 更新数据库服务表中的信息 - - 服务索引 - 更新字段值及内容 - - - - 更新缓存 - - - - - - - 生产流程签名表,待删除 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 流程签名 - - - - - Sn关联信息表 - - - - - 索引 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 录入时间 - - - - - 更新时间,用于同步下载 - - - - - 建表语句 - - 建表语句 - - - - 用户操作记录总表 - - - - - 操作者 - - - - - 操作时间 - - - - - 操作内容说明 - - - - - 建表语句 - - 建表语句 - - - - 内部订单索引 - - - - - 订单ID - - - - - 内部单号 - - - - - 订单所属公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 创建时间 - - - - - 修改日期 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 订单状态 - - - - - 交货时间 - - - - - 适用站位 - - - - - 条码范围 - - - - - 建表语句 - - 建表语句 - - - - 客户订单表 - - - - - 订单索引 - - - - - 公司索引 - - - - - 订单生产产品索引 - - - - - 订单号 - - - - - 生产数量 - - - - - 交货日期 - - - - - 订单生成日期 - - - - - 修改日期 - - - - - 成本单价 - - - - - 销售单价 - - - - - 订单状态 - - - - - 建表语句 - - 建表语句 - - - - 产线索引 - - - - - 产线名称 - - - - - 产线描述 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 生产计划索引 - - - - - 订单索引 - - - - - 内部订单 - - - - - 站位索引 - - - - - 产线索引 - - - - - 生产时间 - - - - - 修改日期 - - - - - 已完成产量 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 项目总表 - - - - - 项目唯一标识 - - - - - 项目类型索引 - - - - - 项目名称 - - - - - 项目描述 - - - - - 创建人 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 预览图 - - - - - 预览图 - - - - - 单价 - - - - - 单价单位 - - - - - 当前项目是否有效 - - - - - 最后有效日期 - - - - - 录入条码总表类型,0无订单,1有订单 - - - - - 建表语句 - - 建表语句 - - - - 产品类型 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 不良代码类型表 - - - - - 索引 - - - - - 所属维修分类索引 - - - - - 名称 - - - - - 创建日期 - - - - - 更新时间 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修日志索引 - - - - - 维修产品索引 - - - - - 所属站位索引 - - - - - 所属订单索引 - - - - - 维修所属测试日志索引 - - - - - 维修产品条码 - - - - - 测试日志所属测试流程名称 - - - - - 产品测试日志失败步骤名 - - - - - 产品测试日志失败信息 - - - - - 产品测试日志错误代码 - - - - - 维修产品日期 - - - - - 当条记录更新时间 - - - - - 维修原因类型 - - - - - 维修原因 - - - - - 维修来源 - - - - - 维修来源订单号 - - - - - 维修人工注释 - - - - - 维修产品结果索引 - - - - - 产品图像文件名1 - - - - - 产品图像文件名2 - - - - - 产品图像文件名3 - - - - - 产品图像文件名4 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 索引 - - - - - 所属维修分类索引 - - - - - 名称 - - - - - 创建日期 - - - - - 更新时间 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 索引 - - - - - 报修人员 - - - - - 报修单号 - - - - - 产品类型 - - - - - 产品条码 - - - - - 产品图像 - - - - - 不良品来源 - - - - - 不良代码 - - - - - 不良说明 - - - - - 创建日期 - - - - - 更新时间 - - - - - 维修进度 - - - - - 维修结果 - - - - - 维修记录索引 - - - - - 维修人员 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 维修结果名称 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修来源索引 - - - - - 维修来源名称 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 维修类型索引 - - - - - 维修类型说明 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 订单ID - - - - - 内部单ID - - - - - 机型ID - - - - - 条码 - - - - - 创建时间 - - - - - 更新时间 - - - - - 条码生成类型 - - - - - 参与组装条码 - - - - - 被组装的时间 - - - - - 第1站测试时间 - - - - - 第2站测试时间 - - - - - 第3站测试时间 - - - - - 第4站测试时间 - - - - - 第5站测试时间 - - - - - 第6站测试时间 - - - - - 第7站测试时间 - - - - - 第8站测试时间 - - - - - 第9站测试时间 - - - - - 第10站测试时间 - - - - - 第11站测试时间 - - - - - 第12站测试时间 - - - - - 第1站测试结果 - - - - - 第2站测试结果 - - - - - 第3站测试结果 - - - - - 第4站测试结果 - - - - - 第5站测试结果 - - - - - 第6站测试结果 - - - - - 第7站测试结果 - - - - - 第8站测试结果 - - - - - 第9站测试结果 - - - - - 第10站测试结果 - - - - - 第11站测试结果 - - - - - 第12站测试结果 - - - - - 建表语句 - - 建表语句 - - - - 产品需要索引客户订单号表 - - - - - 索引,暂无作用 - - - - - 客户订单索引 - - - - - 内部订单号 - - - - - 产品索引 - - - - - 工作站索引集合以,分割 - - - - - 创建时间 - - - - - SN前缀 - - - - - SN起始号 - - - - - SN结束号 - - - - - 产品工艺站总表 - - - - - 工艺站索引 - - - - - 项目索引 - - - - - 工艺站名称 - - - - - 工艺站类型 - - - - - 工艺站序号,从1开始 - - - - - Sn总表序号 - - - - - 工艺站描述 - - - - - 最后更新日期(重复字段等待删除) - - - - - 修改日期 - - - - - 测试记录表名 - - - - - 预览图片 - - - - - 备注 - - - - - 最新测试包名 - - - - - 最新包MD5 - - - - - 当前站位是否有效 - - - - - 站位条码生成规则,1系统生成,2客户录入 - - - - - 编辑密码 - - - - - 发布密码 - - - - - 建表语句 - - 建表语句 - - - - 工艺站包索引 - - - - - 项目索引 - - - - - 站位索引 - - - - - 创建时间 - - - - - 更新时间 - - - - - 当前包名 - - - - - 当前包MD5值 - - - - - 记录本版本更改内容 - - - - - 当前包是否有效 - - - - - 登录用户索引 - - - - - 登录用户名称 - - - - - 发布电脑的公网IP - - - - - 发布电脑用户名 - - - - - 发布电脑的SID - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 用户数据库同步总表 - - - - - 需要同步的数据表名 - - - - - 数据表版本编号 - - - - - 最近同步的本地时间 - - - - - 同步类型,如全表下载(all),或是增量下载(new) - - - - - 同步时需要更新的数据列 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - - 添加需要同步的数据表名至同步表中 - - 数据库名 - 需要同步的数据表名 - 同步类型,all为全表下载,new为增量下载 - 同步时下载的字段,默认为*全字段下载 - - - - - 数据库连接涉及多库操作时,新增数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,删除后更新触发器 - - 数据库名 - 数据表名 - - - - - 测试记录表,不同项目不同站表名不同 - - - - - 用户唯一标识 - - - - - 设备唯一索引 - - - - - 生产线索引 - - - - - 内部订单索引 - - - - - 应用程序名 - - - - - 测试流程名 - - - - - 产品SN唯一索引 - - - - - 测试起始时间 - - - - - 测试耗时 - - - - - 测试结果 - - - - - 错误代码 - - - - - 失败步骤集合 - - - - - 失败步骤集合 - - - - - 自定义字段,由实际使用中添加字段 - - - - - 数据表名 - - 项目索引 - 工艺站索引 - - - - - 建表语句 - - 建表语句 - - - - 产商的客户总表 - - - - - 修改日期 - - - - - 建表语句 - - 建表语句 - - - - 本地未上传记录缓存表 - - - - 数据库操作记录表枚举值 - - - 序列号 - - - 用户名 - - - 日期时间 - - - 数据库语句 - - - 是否已经同步到远程数据库 - - - 同步出错编码 - - - 同步出错提示 - - - 备注 - - - - Sqlite数据库建表语句 - - 建表语句 - - - -索引 - - - - - 数据服务索引 - - - - - 软件名 - - - - - 软件版本 - - - - - 注册日期与时间 - - - - - 最后活动日期与时间 - - - - - 最后活动信息 - - - - - 备注 - - - - - 索引 - - - - - 数据服务索引 - - - - - 软件名称 - - - - - App版本 - - - - - 测试项目名 - - - - - 测试站名 - - - - - 测试流程名 - - - - - 生成日期 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 客户总表 - - - - - 客户唯一标识 - - - - - 客户公司名 - - - - - 创建日期 - - - - - 修改日期 - - - - - 服务索引唯一值 - - - - - 鉴权文件索引 - - - - - 鉴权文件有效日期 - - - - - 公司名 - - - - - 服务终端内核 - - - - - 服务终端类型 - - - - - 服务终端名称 - - - - - 服务自定义标识名称 - - - - - 服务MAC地址 - - - - - CPU序列号 - - - - - 服务版本 - - - - - 服务注册日期 - - - - -服务最后活动日期 - - - - - 服务是否有效,注册默认有效 - - - - - 数据服务在线 - - - - - 数据服务在线时间 - - - - - 数据服务需要人工处理错误信息 - - - - - 更新服务版本 - - - - - 更新服务是否在线 - - - - - 更新服务需要人工处理错误信息 - - - - - 子网名称 - - - - - 设备角色 - - - - - 与子网服务连接状态 - - - - - 缓存表数量 - - - - - 网上邻居 - - - - - 索引 - - - - - 数据服务索引 - - - - - 数据服务版本 - - - - - 更新服务版本 - - - - - 厂商名称 - - - - - 生成日期与时间 - - - - - 公网IP - - - - - 私网IP - - - - - Mac地址 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 数据库总表 - - - - - 数据库唯一标识 - - - - - 所属公司索引 - - - - - 数据库名 - - - - - 数据库用户名 - - - - - 数据库密码 - - - - - 数据库说明 - - - - - 修改日期 - - - - - 设备总表 - - - - - 设备唯一索引 - - - - - 设备名称 - - - - - 设备类型 - - - - - 设备MAC地址 - - - - - 首次登陆时间 - - - - - 末次在线时间 - - - - - 修改日期 - - - - - 设备在线状态 - - - - - 是被是否有效 - - - - - 设备日志总表 - - - - - 设备唯一标识 - - - - - 操作时间 - - - - - 公网IP - - - - - 内网IP - - - - - License文件名 - - - - - 产生日志的APP名 - - - - - App版本号 - - - - - 测试配置文件名称 - - - - - 用户唯一标识 - - - - - 操作内容 - - - - - 错误代码总表 - - - - - 错误代码唯一标识 - - - - - 错误提示信息 - - - - - 统计图中提示颜色 - - - - - 修改日期 - - - - - 索引 - - - - - 公司名称 - - - - - 发布日期 - - - - - 有效日期 - - - - - 备注 - - - - - 操作日志表,对公共库的操作记录 - - - - - 索引,无作用 - - - - - 用户唯一标识 - - - - - 操作时间 - - - - - 具体操作内容 - - - - - 功能模块总表 - - - - - 功能模块唯一索引 - - - - - 功能模块名称 - - - - - 功能模块详细说明 - - - - - 操作级别,读为0,写为1 - - - - - 修改日期 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 发布版本号 - - - - - 发布日期 - - - - - 发布用户索引 - - - - - 发布说明 - - - - - 程序更新软件表 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 最新版本号 - - - - - 发布日期 - - - - - 二进制文件 - - - - - MD5校验码 - - - - - FTP包名 - - - - - 需要同步下载表名总表 - - - - - 表名 - - - - - 表版本编号 - - - - - 同步类型 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - 数据库操作记录表枚举值 - - - 日志索引 - - - 厂商名称 - - - 应用名称 - - - 应用版本 - - - 日志生成日期与时间 - - - 设备公网IP - - - 设备内网IP地址 - - - 设备MAC - - - 设备系统版本 - - - 设备名称 - - - 设备用户名 - - - 设备网络状态 - - - 日志类型 - - - 日志内容 - - - - Sqlite数据库建表语句 - - 建表语句 - - - - 测试计划编辑信息提示 - - - - - 列名 - - - - - 列类型 - - - - - 列描述 - - - - - 列默认值 - - - - - 修改日期 - - - - - 用户操作功能权限总表 - - - - - 用户唯一标识 - - - - - 数据库唯一标识 - - - - - 拥有完整权限的功能唯一标识,用,分割 - - - - - 拥有读写权限的功能唯一标识,用,分割 - - - - - 拥有只读权限的功能唯一标识,用,分割 - - - - - 用户测试命令总表 - - - - - 修改日期 - - - - - 建表语句 - - 建表语句 - - - - 用户总表 - - - - - 用户ID唯一索引 - - - - - 用户登陆账号 - - - - - 用户密码 - - - - - 公司索引ID - - - - - 创建日期 - - - - - 修改日期 - - - - - 手机号码 - - - - - 微信号 - - - - - 邮箱地址 - - - - - 是否有效 - - - - - Ftp服务器地址 - - - - - - Ftp是否能正常连接,连接正常返回True,连接失败则产生异常 - - - - - - 文件是否存在 - - - - - - - 文件上传 - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - License文件字段枚举 - - - 索引 - - - 客户名 - - - 注册日期 - - - 截止日期 - - - 管理员账号 - - - 管理员密码 - - - 远程数据库URL或IP - - - 远程数据库连接端口 - - - 远程数据库账号 - - - 远程数据库密码 - - - 远程数据库私有操作库 - - - 远程数据库共有操作库 - - - 本地数据库存放文件夹 - - - 本地数据库文件名 - - - 本地数据库密码 - - - Ftp服务器 - - - Ftp通讯端口 - - - Ftp通讯账号 - - - Ftp通讯密码 - - - 客户MAC地址,锁定|MAC时使用 - - - 备注 - - - UTS版本号 - - - 签名 - - - License文件校验返回枚举值 - - - 未找到License - - - 无法打开License - - - 无效的License - - - 校验通过 - - - License校验结果 - - - 校验通过 - - - 无效的客户 - - - 无效的注册日期 - - - 无效的截止日期 - - - 无效的用户 - - - 无效的用户密码 - - - 无效的MAC地址 - - - 无效的UTS版本 - - - 无效的签名 - - - 无效的数据库地址 - - - 无效的数据库名 - - - 无效的数据库用户 - - - 无效的数据库密码 - - - 无效的数据库端口号 - - - 无效的数据库名(sqlite) - - - 无效的数据库文件夹名(sqlite) - - - 存储License签名校验值 - - - License密钥 - - - - 索引 - - 索引 - - - - 获取客户名 - - 客户名 - - - - 获取注册日期 - - 注册日期 - - - - 获取截止日期 - - 截止日期 - - - - 获取管理员账号 - - 管理员账号 - - - - 获取管理员密码 - - 管理员密码 - - - - 远程数据库URL或IP(待删除字段) - - 远程数据库URL或IP - - - - 远程数据库连接端口 - - 远程数据库连接端口 - - - - 远程数据库账号 - - 远程数据库账号 - - - - 远程数据库密码 - - 远程数据库密码 - - - - 远程数据库操作库 - - 远程数据库操作库 - - - - 远程数据库公开库 - - - - - - 本地数据库存放文件夹 - - 本地数据库存放文件夹 - - - - 本地数据库文件名 - - 本地数据库文件名 - - - - 本地数据库密码 - - 本地数据库密码 - - - - Ftp服务器地址(待删除字段) - - Ftp服务器地址 - - - - Ftp服务器端口 - - Ftp服务器端口 - - - - Ftp服务器用户 - - Ftp服务器用户 - - - - Ftp服务器密码 - - Ftp服务器密码 - - - - 获取客户MAC地址 - - 客户MAC地址 - - - - 获取备注 - - 备注 - - - - 获取UTS版本号 - - UTS版本号 - - - - 获取签名 - - 签名 - - - - 读取License文件所有内容,并进行解密,将解密后的内容存入License字典中 - - License文件完整路径(含文件名) - - - - 类的作用:获取服务器信息 - 创建人员:ML - Log编号:1 - 修改描述:创建 - 修改日期:2019-10-15 - 修改人员:ML - - - - Server文件字段枚举 - - - 客户名 - - - 数据库服务器地址 - - - 数据库服务器端口 - - - 数据库名 - - - 数据库用户名 - - - 数据库用户密码 - - - Ftp地址 - - - Ftp端口 - - - Ftp用户名 - - - Ftp用户密码 - - - Server文件校验返回枚举值 - - - 未找到Server - - - 无法打开Server - - - 无效的Server - - - 校验通过 - - - 存储Server校验返回值 - - - 存储Server所有信息 - - - 服务器密钥 - - -Server所有可用字段 - - - - 获取客户名 - - 客户名 - - - - 获取服务器名 - - 服务器名 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中 - - Server文件完整路径(含文件名) - 读取Server文件的状态 - - - - 校验Server - - Server文件完整路径(含文件名) - 校验是否通过 - - - 是否记住密码 - - - 是否自动登录 - - - 是否正在登录中 - - - 校验文件信息 - - - 用户登录信息 - - - 修改窗体标题 - - - 读取Setting中的缓存量 - - - 保存Setting中的缓存量 - - - - 初始化账号控件显示 - - - - - 密码获取与保存机制以后会修改,或加密 - - - - 记住密码复选框状态修改触发事件 - - - 自动登录复选框状态修改触发事件 - - - - 使用账号密码登录 - - - - 是否需要显示登陆页面,方便以后编译时,生成不登陆工具 - - - 是否记住密码 - - - 是否自动登录 - - - - 用户信息类 - - - - 账号索引 - - - 公司索引 - - - 获取或设置用户账号 - - - 获取或设置用户密码 - - - 获取或设置用户注册日期 - - - 获取或设置用户电话号码 - - - 获取或设置用户微信号 - - - 获取或设置用户电子邮箱 - - - 获取或设置用户是否有效 - - - - 已下单待转内部单 - - - - - 已转M/O待制条码 - - - - - 已制SN待制计划 - - - - - 已制计划待生产 - - - - - 生产中 - - - - - 完成生产 - - - - - 已完成 - - - - - 取消 - - - - - 暂停中 - - - - - 客户订单信息 - - - - - 订单索引 - - - - - 订单条码序号字符串 - - - - - 订单状态 - - - - - 订单总量 - - - - - 订单产品 - - - - - 订单所属客户索引 - - - - - 订单交期 - - - - - 订单创建时间 - - - - - 成本单价 - - - - - 销售单价 - - - - 错误代码管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 提取错误代码与错误消息字符串中的错误代码 - - - - - - 内部订单信息 - - - - - 内部订单索引 - - - - - 客户订单索引 - - - - - 内部订单号字符串 - - - - - 公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 内部订单创建时间 - - - - - 订单交期 - - - - - 目标产能 - - - - - 当前总产能 - - - - - 内部订单状态 - - - - 内部订单管理器 - - - 初始化测试器线程锁 - - - - 创建内部订单管理器单例 - - - - - - 初始化指定内部订单索引的订单详情 - - - - - 产线管理器,全局唯一 - - - 初始化管理器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 获取所有产线的名字 - - - - - 产品类型管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 从数据库中获取所有的产品类型 - - - - 测试命令管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 初始化版主信息 - - - - - - 初始化流程站帮助信息 - 从本地数据库中读取 - - 数据库类型 - 数据库连接字符串 - - - 测试流程列管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 检测用户对项目的修改是否输入合法 - 不合法时会抛出异常 - - - - - 初始化项目模式 - - - - - 从云端数据库加载项目信息 - - - - - 从本地Xml文件加载项目信息 - - - - - 从本地数据库加载项目信息 - - - - - 新建项目信息 - - - - - 当前项目初始化方式 - - - - - - 项目索引,创建项目时生成 - - - - - - 项目类型索引 - - - - - - 项目名称 - - - - - - 项目图像在FTP中的文件名 - - - - - - 项目描述 - - - - - - 项目有效日期 - - - - - - 项目是否有效 - - - - - - 1有订单模式,0无订单模式,暂无作用 - - - - - - 项目备注 - - - - - - 单价 - - - - - - 项目站集合 - - - - - - 被删除测试站集合 - - - - - - 项目信息是否被修改 - - - - - - 预览图被修改 - - - - - - 项目当前操作人员索引 - - - - - - 项目当前操作人名称 - - - - - - 项目原图 - - - - - - 项目预览图 - - - - - - 初始化项目 - - 项目名称 - 加载模式 - - - - 初始化项目 - - 项目索引 - 加载模式 - - - - 加载本地项目 - - 项目名称 - - - - 加载项目所有站 - - - - - - 加载测试站信息 - - Xml节点 - - - - 通过数据表更新项目站信息 - - - - - - 通过数据表更新项目信息 - - - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引从远程数据库初始化项目信息 - - 项目索引 - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 项目索引 - - - - 获取当前站位所有站包 - - - - - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 项目索引 - - - - 通过项目索引从本地数据库初始化项目信息 - - 项目索引 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 数据库名 - 项目名称 - - - - 通过项目名称从远程数据库初始化项目信息 - - 项目名称 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 项目名称 - - - - 通过项目名称从本地数据库初始化项目信息 - - 项目名称 - - - - 加载本地项目列表 - - - - - - - 从数据表中提取项目名称列表 - - - - - - - 从远程数据库加载项目名列表 - - - - - - 从本地数据库加载项目名列表 - - - - - - 加载项目列表 - - 加载模式 - - - - - 保存项目所有站信息 - - - - - - 保存项目至本地文件 - - - - - - 将项目信息保存至本Xml文件 - - - - - 查询项目是否存在 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - - 项目表修改原有项目信息 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 项目表添加新项目 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 更新项目索引 - - - - - 更新上传项目信息 - - - - - - - 更新工艺站索引 - - - - - 发布项目,将项目保存至本地,然后发布项目 - - - - - 删除项目在云端所有相关信息 - - - - - 工艺站序号 - - - - - 工艺站名称 - - - - - 工艺站类型,下拉选择 - - - - - 工艺站预览图,按键加载 - - - - - 工艺站描述 - - - - - 条码生成方式,1.系统生成,2.用户录入 - - - - - 允许测试设备类型 - - - - - 允许测试软件名称 - - - - - 工艺站包名,按键加载 - - - - - 初始化测试站表格 - - 表格控件 - - - - 当前App所属服务索引 - - - - - - 当前App名称 - - - - - - 当前App版本 - - - - - - 当前App运行信息 - - - - - - 当前App状态,默认0为空闲 - - - - - - 调试信息 - - - - - 流程信息 - - - - - 警告信息 - - - - - 错误信息 - - - - - 致命信息 - - - - - 定期更新APP的活动时间,调用则会定期基于本地调用存储过程至缓存表 - - - - - 添加日志内容至缓存的日志队列中 - 调用SaveLogQueueToDb将队列中的数据写入到数据库 - - Tip:缓存队列仅记录每条日志不同的内容,例如写入时间,日志类型,日志内容等 - - - - - - - 网络发送Json字符串,字符串以回车换行结尾 - - - - - - 超时接收回复信息,以回车换行结尾 - - 超时时间,单位毫秒 - 接收到的字符串,超时返回空字符串 - - - - 服务任务类型枚举集合 - - - - - 数据库同步 - - - - - 监听Json文件 - - - - - 服务任务状态枚举值 - - - - - 启动状态 - - - - - 停止状态 - - - - - 服务任务类型 - - - - - - 服务任务名,服务任务的唯一索引 - - - - - - 服务任务的状态 - - - - - - 任务开启 - - - - - 任务停止 - - - - - 任务重启 - - - - - 任务参数集合设置 - - 任务参数键值对 - - - - 任务参数集合获取 - - - - - - 任务类型接口,每个任务必须实现的功能 - - - - - 任务开始 - - - - - 任务退出 - - - - - 重启任务 - - - - - 设置任务参数 - - - - - - 获取任务参数 - - - - - - 应用程序与服务通讯协议类,可将此类序列化为Json字符串或反序列化Json字符串为此类 - - 更改须知: - 当需要增加不参与序列化的共有字段时, - 在变量名上一行,参照JsonFilter字段增加JsonIgnore特性. - - 当需要增加命令名称类型时, - 首先在CmdNamesEnum中增加枚举字段, - 之后在FilterFiled函数中,增加指定命令名称中需要序列话的字段名数组. - - 2021-03-26 - 增加软件与设备通讯命令,用于注册软件 InitApp - - - - - - 发送控制命令时,通信的用户账号 - - - - - 发送控制命令时,执行程序名 - - - - - 通讯时使用的命令名称 - - - - - 用户存储服务中任务信息 - - - - - 指定需要控制的任务名称集合 - - - - - 回复命令时,指示命令执行的状态 - - - - - 回复命令时,指定命令执行后的提示信息 - - - - - 回复命令时,获取当前服务的版本号 - - - - - 发送与恢复时,软件信息 - - - - - 是否为回复数据 - - - - - 是否启用筛选功能,默认为启用筛选功能 - 此字段不参与Json序列化 - - - - - Json序列化时的显示格式,分行对齐显示或是单行无格式显示,默认单行显示 - 此字段不参与Json序列化 - - - - 任务命令执行状态列表 - - - 任务命令列表 - - - 添加任务 - - - 设置任务 - - - 获取任务 - - - 获取所有任务 - - - 删除任务 - - - 删除所有任务 - - - 开启任务 - - - 开启所有任务 - - - 暂停任务 - - - 暂停所有任务 - - - 重启任务 - - - 重启所有任务 - - - 获取DataService版本信息 - - - 初始化APP,从服务端获取APP运行参数 - - - App上报状态至服务 - - - 服务下发通知App - - - - App上报时包含的类型 - - - - - APP已启动 - - - - - APP已关闭 - - - - - APP站位切换 - - - - - APP心跳包 - - - - - Sn总表发生变化 - - - - - 服务下发时包含的类型 - - - - - 序列化类中字段为Json字符串 - - - - - - 反序列Json字符串填充当前类中 - - - - - - 根据任务名称,设置参与序列化的字段名称 - 增加任务名称时,需要更新该函数 - - - - - - - 针对服务任务的Json设置 - 当前作用:筛选指定类中字段参与Json序列化 - - - - - 需要操作的字段名 - 与_retain参数结合使用,实现指定类中某些字段的Json序列化 - - - - - 是否显示指定字段 - 为真时,仅显示指定的字段名 - 为假时,仅不显示指定的字段名 - - - - - 校验条码未测试后处理方式 - - - - - - 校验条码已参与包装后处理方式 - - - - - - 校验条码不属于指定MO后处理方式 - - - - - - 保存图像的数量 - - - - - - 解锁密码 - - - - - - 条码类型 - - - - - - 缺失条码数量后的处理方式 - - - - - - 缺失条码数量后的解锁密码 - - - - - - 是否自动打印 - - - - - - 发生错误后报警文件 - - - - - - 模板文件名 - - - - - - 箱号编辑密码 - - - - - - 公司Logo文件 - - - - - - 公司名称 - - - - - - 箱号规则 - - - - - - 箱号条码 - - - - - - 前置站位 - - - - - - 后置站位 - - - - - - 软件版本 - - - - - - 读取测试站属性 - - - - - - 校验条码失败后处理方式 - - - - - 不处理 - - - - - 校验失败 - - - - - 程序锁定,需要管理员密码解锁,并写入注册表 - - - - - 忽略错误继续录入 - - - - - 条码总数缺少的处理方式 - - - - - 允许录入 - - - - - 不允许录入 - - - - - 需要输入密码解锁 - - - - - 条码单元格的类型 - - - - - 以模板内容为准 - - - - - CODE39支持的字符:空格, 数字, 大写字母, $, %, *, +, -, ., / - - - - - CODE128A支持的字符:空格, 数字, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, / - - - - - CODE128B支持的字符:空格, 数字, 小写字母, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /, ~ - - - - - CODE128C只能包含数字 - - - - - EAN128只能包含数字 - - - - - EAN13是商品编码,必须是13位数字,第13位是根据前面12位运算后得到的 - - - - - Interleaved2of5只能包含数字,数字的长度必须为偶数 - - - - - 修改后的节点 - - - - - 测试流程所关联的项目站包信息 - - - 处于更新表格状态中,不触发表格单元格修改事件 - - - 多个参数间的分割符号 - - - 当前活动节点 - - - 节点选择改变事件 - - - 节点文本被修改事件 - - - 测试命令管理器 - - - 错误代码管理器 - - - - 屏蔽表格引发自定义事件,避免行节点内容修改,todo:暂未完成 - - - - - - 对第二行的Action执行一遍操作,以触发更新事件 - - - - - 光标离开grd表格时,黄色底色切换到选中行 - - - - - 光标进入grd表格时,原底色切换到选中行 - - - - - 根据CmdType 和 isAction 返回该行字体颜色 - - - - - - 鼠标移动到节点位置时所有子节点背景着色 - - - - - FixModule节点Action变化时子节点字体重新着色 - - - - - - FixModule节点Action变化时子节点字体重新着色 - - - - - 根据总表状态对单元格字体重新着色 - - - - - 遍历表格,并更新到全局数组 - - - - - - 节点状态变更,修改节点行颜色 - - - - - - 节点状态变更,修改节点行颜色 - - - - - - 选定行使能或清除Action选项 - - - - - 更新表格内容到缓存,但是并不重新着色 - - - - - 更新ActionEn信息 - - - - - 光标移动时,所在行底色高亮 - - - - - 获取指定行的NodeIndex - - - - - - 获取指定行的NodeLever - - - - - - 获取指定行的NodeIndex - - - - - - 获取指定行的RowType - - - - - - 折叠的列号 - - - - - - 折叠的起始行号 - - - - - - 初始化测试站表格 - - - - - 展开行节点 - - - - - - 节点升级 - - - - - 节点降级 - - - - - 反显节点所在行 - - - - - - 步骤,固定 - - - - - 断点执行,固定列 - - - - - 是否运行 - - - - - 调试结果 - - - - - 节点下限 - - - - - 节点上限 - - - - - 节点测试耗时 - - - - - 模块名称 - - - - - 节点解析 - - - - - 节点控制执行类型 - - - - - 命令类型 - - - - - 命令关键字 - - - - - 执行命令参数 - - - - - 失败重试次数 - - - - - 重试间隔 - - - - - 当前返回值是否记录入库 - - - - - 返回值变量名 - - - - - 错误代码 - - - - - 错误提示 - - - - - 产线变化 - - - - 修改窗体标题 - - - - 显示窗体 - - - - - - 产线变化 - - - - - 测试站修改时处理函数 - - - - - 初始化行节点的风格 - - - - - 快捷键操作 - - - - - - - 读取XML,加载树状视图 - - - - - 读取XML,加载树状视图 - - - - - 将树状视图导出为Xml - - - - - 调试模式 - - - - - 未知类型 - - - - - 扫码目检站 - - - - - 测试站 - - - - - 条码关联站 - - - - - 成品录入站 - - - - - 抽检站 - - - - - 包装站位 - - - - - 唯一条码测试站 - - - - - 包装测试站,2023-05-09添加,参考uts-win的方式做包装站 - - - - - 无序列号 - - - - - 系统生成 - - - - - 测试时录入 - - - - - 用户录入 - - - - - 当前站位类型 - - - - - 项目站索引,项目站唯一索引,新建站时自动生成,生成后不能修改 - - - - - - 项目站名称 - - - - - - 项目站序号,表示该站在项目站总流程中测试顺序 - 例如1,表示当前为第一站 - - - - - - 项目站内容描述 - - - - - - 工艺站预览图 - - - - - - 使用测试站的设备类型,待删除 - - - - - - 使用测试站的设备软件名,待删除 - - - - - - 项目站当前操作人员,为当前登录人员账号 - - - - - - 生成测试站时的顺序,从1开始 - - - - - - 当前站位是否有效 - - - - - - 条码生成规则,1系统生成,2客户录入 - - - - - - 项目站关联的项目站包信息 - - - - - - 项目站所属项目信息 - - - - - - 工艺站信息已被修改 - - - - - - 工艺站类型已被修改 - - - - - - 工艺站预览图已被修改 - - - - - 测试包文件名称,不含.uts后缀 - - - 测试包文件名称,含.uts后缀 - - - - 当前站包所属站位类型 - - - - - 测试站包MD5值 - - - 测试站包版本 - - - 修改项目流程时所需密码 - - - 发布项目流程时所需密码 - - - 测试站包有效日期 - - - 测试站包创建时间 - - - 测试站包修改时间 - - - 发布测试站包的应用程序版本 - - - 发布测试站包的图片 - - - - 项目站包历史发布说明 - - - - - - 当前版本发布说明 - - - - - 站位流程,不同的站位流程类型不同 - - - 测试站包所在的测试站信息 - - - - 创建项目站包 - - - - - 加载项目站包信息文件 - - - - - - 加载项目站包时,校验路径 - - - - - - 加载项目站包时,解压项目文件到指定路径 - - - - - - 加载测试站包时,加载项目站包信息 - - - - - - 加载测试站包内容 - - - - - 保存项目站历史版本说明 - - - - - - 保存项目站信息节点内容 - - - - - - 保存项目站包信息文件 - - - - - - 发布项目时,校验路径合法性 - - - - - 发布项目时,将原项目包文件夹名重命名为预发布项目包文件夹名 - - 预发布项目站包名 - - - - 发布项目时,将缓存信息保存到本地文件中 - - 预发布项目站包名 - - - - 发布项目时,压缩项目文件夹至发布路径 - - 预发布项目站包名 - 预发布项目站包文件名 - - - - 发布项目成功后,更新数据库数据 - - - - - - 发布站包时,更新站位表信息 - - - - - - - 发布站包时,更新站包发布记录表信息 - - - - - - - 发布项目成功后,更新项目包信息 - - - - - 发布项目站包 - - - - - 模块名称 - - - - - - 控制命令类型 - - - - - - 当前流程步骤的解释 - - - - - - 调试模式下运行到当前节点后,暂停运行 - - - - - - 当前流程步骤是否允许执行 - - - - - - 当前流程步骤是否会被执行 - - - - - - 当前流程步骤执行结果是否保存至数据库,FALSE则为临时变量 - - - - - - 行的类型 - - - - - - 行节点关联的站流程 - - - - - - 行节点执行结果信息 - - - - - - 节点树的所有节点集合 - - - - - - 节点所属节点数组的位置,从0开始,即头结点的的索引 - - - - - - 节点的级别,可见节点级别从0开始 - - - - - - 节点在父节点中的索引,可见节点级别从0开始 - - - - - - 记录总使用的说明内容 - - - - - - 子节点总数 - - - - - - 所有子节点总数 - - - - - - 行下包含的子行集合 - - - - - - 当前节点的同级上一节点,若当前节点为首节点则返回nothing - - - - - - 当前节点的同级下一节点,若当前节点为尾节点则返回nothing - - - - - - 当前节点的父节点 - - - - - - 当前节点树的起始节点 - - - - - - 内部缓存子节点 - - - - - 处于展开状态 - - - - - - 是否允许删除当前节点 - - - - - - 是否允许添加子节点 - - - - - - 允许操作当前节点内容 - - - - - - 允许移动节点改变节点的级别 - - - - - - 当前节点是否处于重试状态 - - - - - - 展开节点 - - - - - 折叠节点 - - - - - 展开或折叠节点 - - - - - 增加子节点 - - - - - 插入子节点 - - - - - 移除本身节点 - - - - - 清空节点所有子节点 - - - - - 节点上移 - - - - - 节点下移 - - - - - 节点左移 - - - - - 节点右移 - - - - - 节点深复制,创建一个完全相同信息的节点 - - - - - - 固定模块 - - - - - 模块,可以当作跳转入口 - - - - - 控制 - - - - - 流程 - - - - - 默认的初始化节点风格 - - - - - 从本地文件中初始化节点风格 - - - - - - 导出为XML文件 - - 文件路径 - - - - 加载行节点 - - - - - - - 更新节点的所有子节点的流程站指向 - - - - - - 更新节点的上一节点指向 - - 需要更新的节点 - - - - 更新节点的下一节点指向 - - 需要更新的节点 - - - - 新增节点后,更新父节点的所有子节点计数 - - 新增的节点 - - - - 删除节点后,更新父节点的所有子节点计数 - - 被删除的节点 - 包含当前节点 - - - - 插入节点后,更新节点下方节点的索引 - - 需要更新下方节点索引的节点 - - - - 删除节点后,更新节点下方节点的索引 - - - - - - 获取新添加的节点的链状目录索引 - - - - - - - 更新节点的所有子节点的链式结合的指向 - - - - - - - 删除节点后,更新链状列表 - - - 包含当前节点 - - - - 插入节点后,更新链状目录中受影响节点的索引 - - - - - - 删除节点后,更新链状目录中受影响节点的索引 - - 删除的节点 - 是否保存该节点 - - - - 移除指定节点 - - - - - - 清空节点 - - - - - 行节点表,当前选择行 - - - - - 行节点表,下拉框选择行 - - - - - 行节点表,下拉框所在列 - - - - - 详细信息表格内容变更类型 - - - - - 初始化测试站表格 - - - - - 单行信息表格命令修改后,同步刷新本身信息 - - - - - 下拉框选择对象事件 - - - - - - - 表格下拉框出现时触发事件 - - - - - - - 更新流程列名提示 - - - - - - 更新流程命令提示 - - - - - - - - - 单行信息表格更新当前行 - - - - - - 主表格选中单元格时触发事件 - - - - - - - - 根据CmdType 和 isAction 返回该行字体颜色 - - - - - - 详细信息表格内容变更类型枚举值 - - - - - 未变更 - - - - - 加载流程时时引起的变更 - - - - - 行节点信息修改引起的变更 - - - - - 切换选择节点引起的变更 - - - - - 关联节点内容变更 - - - - - 节点字体 - - - - - - 节点字体颜色 - - - - - - 节点图标 - - - - - - 节点图标索引 - - - - - - 节点背景颜色 - - - - - - 项目站包文件名 - - - - - - 项目站包创建者 - - - - - - 项目站包版本说明 - - - - - 测试流程是否已锁定 - - - - 头节点 - - - - - - 节点树状集合 - - - - - - 节点树的所有节点集合 - - - - - - 节点总数 - - - - - - '创建固定模块节点 - - - - - - - - 创建新的测试流程 - - - - - 保存为Xml文件 - - - - - - 读取测试站属性 - - - - - - 从Xml文件加载 - - - - - - 测试流程固定模块 - - - - - 空模块,无测试时默认值 - - - - - 主模块,测试起始模块 - - - - - 测试通过执行模块 - - - - - 测试失败执行模块 - - - - - 测试卸载执行模块 - - - - - 测试设置执行模块 - - - - - 自定义模块 - - - - - 模板文件名 - - - - - - 公司Logo文件 - - - - - - 串口名 - - - - - - 串口别名 - - - - - - 默认接收超时时间,通讯时超时设置为0时使用该值 - - - - - - 串口接受单字节间隔接受超时 - - - - - 当前串口是否已经打开 - - - - - - 清空接受缓冲区内容 - - - - 字符串发送 - - - 字符串发送,添加回车换行 - - - 十六进制字符串发送 - - - - 根据串口名,查询对应串口 - - - - - - - - 运行CMD命令并获取返回值 2022-10-25 1.6.2 版本 - - 执行文件路径 - 执行参数 - 超时时间 - 获取输出流内容 - 目标字符串,为空则错误输出流有内容则判定失败 - - - - - - 对数据库进行执行操作,用于查询单个字段内容 - - - - 显示提示的控件 - - - 提示文本 - - - 背景颜色 - - - 字体颜色 - - - 字体名称 - - - 字体大小 - - - 字体加粗 - - - 显示模式 - - - 模式参数 - - - - 显示提示图像执行器 - 耦合了 - - - - - UTS串口通讯返回值比较函数静态类 - - - - - 仅一个参数字符串比较,忽略大小写 - - 测试命令返回集合 - - - - - 判断目标字符串是否是上限或下限字符串中的某一个,忽略大小写,符合上下线中的任何一个则返回True - - - Momo 2022-09-19 添加命令,等于上下限其中的一个就返回true - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串,包含则返回False,不包含则返回True - - - Momo 2022-09-15 添加命令,包含指定字符则返回false,否则返回true - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串 - - - - - - 仅一个参数字符串是否包含关系,忽略大小写,返回数据包含上下限中任意一个字符串即算ok - - - - - - 仅一个参数字符串比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 确认字符串长度 - - 当前值 - 下限 - 上限 - - - - - 确认字符串中每个字符的格式 - - 当前值 - 字符校验模式 - - - - - 多参数字符串列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 浮点型比较方式 - - - - - - - 仅一个参数浮点型比较 - - 当前值 - 下限 - 上限 - - - - - 多参数浮点型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 整数型比较方式 - - - - - - - 仅一个参数整数比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 多参数整数型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 测试命令类型 - - - - - - 测试命令名称 - - - - - - 测试命令参数 - - - - - - 创建命令执行器 - - - - - - - 将参数中的相对路径替换为绝对路径 - - - - - - 字符串处理 - - - 字符串处理,以回车换行结尾 - - - 字符串处理,包含关系 - - - 十六进制字符串处理 - - - 整形字符串处理 - - - 小数型字符串处理 - - - 十六进制处理 - - - - 下限 - - - - - - 上限 - - - - - - 下限_2 - - - - - - 上限_2 - - - - - - 执行结果 - - - - - - 记录值 - - - - - - 执行结果提示信息 - - - - - - 执行耗时,包含重试耗时 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 当前串口对象 - - - - - UTS串口波特率,默认115200 - - - - - 接收等待最长毫秒数,默认100ms - - - - - 串口通讯写入失败计数,通讯成功置零,通讯失败则加1 - - - - - 串口通讯写入失败最大上限,默认5次 - - - - - 状态机执行间隔,默认10ms - - - - - 发送同步命令的间隔,默认1000ms - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 当前可以访问的串口名集合 - - - - 按键串口控制器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建按键串口控制器,若按键串口控制器已经创建则返回句柄 - - - - - - 开启任务 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令接收等待最长时间 - - - - - J_Controller状态机 - - - - - 退出状态机 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送心跳包 - - - - - 等待回复 - - - - - 发送控制通道命令 - - - - - 键值回复 - - - - - 连接成功 - - - - - 连接失败 - - - - 通讯串口 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - 接收起始时间 - - - - 打开串口 - - - - - - 通讯字符串的分隔符 - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 将参数字符串处理成参数列表 - - - - - - 输入框值 - - - - - - 密码模式 - - - - - - 当前百分比 - - - - -测试开始事件 - - -测试暂停事件 - - -测试成功事件 - - -测试失败事件 - - -测试结束事件 - - -测试状态变更事件 - - -测试计数变更事件 - - -测试节点变更事件 - - -测试节点完成事件 - - -测试节点结果变化事件 - - -测试时间变更事件 - - - 当前测试节点 - - - 当前测试固定模块 - - - 测试耗时计时器 - - - 单步执行耗时计时器 - - - 程序运行后,测试通过总数 - - - 程序运行后,测试失败总数 - - - 是否已执行设置模块 - - - 是否处于调试断点 - - - 是否退出调试断点 - - - 是否下一节点调试断点 - - - 内置模块入口集合 - - - 自定义模块下函数入口集合 - - - 测试结果内容 - - - 是否退出测试 - - - 测试时间线程 - - - 测试过程中,产生的变量存储 - - - 测试过程中,全局变量存储 - - - 测试过程中,使用的测试站位 - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建测试器,若测试器已经创建则返回句柄 - - - - - 测试状态 - - - - 判定测试失败的模式 - - - - - - 测试时,重新执行Setup模块 - - - - - 获取指定名称的模块节点 - - - - - - - 开始测试,此函数为正式测试调用 - - - - - 开始调试测试,此函数为正式测试调用 - - - - - 流程修改后保存,更新模块索引 - - - - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 执行内置模块函数 - - - - - - - 获取用户退出测试的执行返回结果 - - - - - - 获取不运行的节点的执行返回结果 - - - - - - 获取未知的行节点类型的执行返回结果 - - 当前行节点 - - - - - 执行模块流程 - - - - - - - 执行控制流程 - - - 测试结果 - - - - 执行控制结构的条件部分 - - - - - - - 执行类型为普通流程的行节点 - - - - - - - - 获取指定变量名的变量值 - - 变量名 - 调用模块时传入的局部变量 - - - - - 替换字符串中使用的变量,返回替换后的字符串 - - 原字符串 - 调用模块时传入的局部变量 - 替换后的字符串 - - - - 替换测试命令参数中的变量(变量格式:{var}),待删除 - - - - - - - 退出执行,测试结果为失败 - - - - - 测试主函数,测试Main模块,根据测试结果测试Pass/Fail模块 - - - - - 调试测试当前节点及其子节点 - - 节点对象 - - - - 从当前节点调试测试,直到测试完当前顶级模块 - - 节点对象 - - - - 测试单节点及之后的所有节点 - - - - - - 调试测试节点数组 - - - - - - 调试测试节点数组,包含其子节点 - - - - - - 调试测试子节点集合 - - - - - - 调试测试节点集合,及其子节点 - - - - - - 单步测试失败后退出测试,判定测试失败 - - - - - 单步测试失败后继续测试,执行所有测试流程后,判定测试失败 - - - - - 仅测试当前节点及其子节点 - - - - - 从节点开始往下测试 - - - - - PC机地址 - - - - - UtsHW03设备地址 - - - - - UTS通讯中,本机地址 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在数据库同步状态更改时发生 - - - - - 数据库同步状态 - - - - - - 项目站未修改 - - - - - 项目站信息已修改 - - - - - 项目站信息修改已保存 - - - - - 在测试状态更改时发生 - - - - - 测试站编辑状态 - - - - - - 无需发送 - - - - - 等待发送 - - - - - 发送失败 - - - - - 发送成功后,等待接收 - - - - - 接收超时 - - - - - 接收完成 - - - - - 测试命令状态 - - - - - - 控制命令状态 - - - - - - 待机测试 - - - - - 正在测试中 - - - - - 测试通过 - - - - - 测试失败 - - - - - 设备异常 - - - - - 在测试状态更改时发生 - - - - - 测试状态 - - 测试状态 - - - - 按键按下枚举值 - - - - - 没有按键按下 - - - - - 开始键按下 - - - - - YES 键按下 - - - - - NO 键按下 - - - - - 开始键长按 - - - - - YES 键长按 - - - - - NO 键长按 - - - - - 开始键松开 - - - - - Yes 键松开 - - - - - NO 键松开 - - - - - UTS测试架按键按下 - - - - - UTS测试架按键键值 - - - - - 内置模块入口集合 - - - 自定义模块下函数入口集合 - - - - 测试记录所关联的控件 - - - - - - 测试记录所关联的测试流程 - - - - - - 获取指定变量名的变量值 - - 变量名 - 调用模块时传入的局部变量 - - - - - 替换字符串中使用的变量,返回替换后的字符串 - - 原字符串 - 调用模块时传入的局部变量 - 替换后的字符串 - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 获取固定模块节点 - - 固定模块名 - - - - - 获取模块节点 - - 模块名 - - - - - 初始化记录表格 - - 测试流程 - - - - 获取当前节点所在的记录行,0代表未找到对应节点 - - 当前测试节点 - - - - - 反显当前测试节点所在的记录行 - - 当前测试节点 - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 显示所有行 - - - - - 屏蔽非记录行 - - - - - 测试结果枚举集合 - - - - - 当前用户索引,登陆后填充 - - - - - - 当前服务索引,登陆后获取 - - - - - - 所属产线索引,用户选择后获取 - - - - - - 所属订单索引,用户提供条码,系统自动填充 - - - - - - 测试程序的名称,登陆后填充 - - - - - - 测试流程名,切换项目流程站后获取 - - - - - - 测试产品的索引序号,测试时获取,(使用大写,8字符) - - - - - - 测试开始日期与时间,测试时获取 - - - - - - 测试耗时,测试时获取 - - - - - - 测试结果,测试时获取 - - - - - - 错误代码,测试时获取 - - - - - - 失败步骤集合,测试时获取 - - - - - - 自定义记录数据,测试时获取 - - - - - - 切换测试站后,初始话测试结果信息 - - - - - 开启新一轮测试时,重置测试结果信息 - - - - - 添加自定义需要记录的测试信息 - - 记录列名 - 记录值 - - - - 将当前测试信息转换为字符键值对 - - - - - 通讯串口 - - - 接收起始时间 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - - 获取所有串口名 - - - - - - 打开串口 - - - - - - - 接收分析后的数据 - - - - - 测试错误代码管理器 - - - 测试线程 - - - 测试站信息 - - - 测试记录表格 - - - - 产线变化 - - - - - 站位变化 - - - - - 存储单笔测试记录至CSV文件 - - - - 当前绘制图形宽度 - - - 当前绘制图形坐标点X - - - 当前绘制图形坐标点Y - - - 当前绘制图形单行最大上限 - - - - 添加绘制测试结果 - - - - - - 校验测试流程有效日期 - - - - - - 开始测试 - - - - - 终止测试 - - - - - 存储单笔测试记录至数据库 - - - - - 根据测试状态,更新界面UI显示 - - - - - - 更新测试时间 - - - - - - 发送方地址 - - - - - - 接收方地址 - - - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 测试命令常用初始化方式 - - - - - - - - 发送后台通讯命令常用初始化方式 - - - - - - - - 重置当前对象的信息 - - - - - 深度拷贝数据, 创建当前对象的克隆 - - - - - - 将参数字符串处理成参数列表 - - - - - - 将必须通讯参数转换为uts通讯字符串 - - 发送方地址 - 接收发地址 - 命令字 - 命令参数 - 组合命令分隔符 - - - - - 将字符串按格式转换为通讯格式数据对象 - - uts通讯字符串 - 组合命令分隔符 - - - - - 解析uts通讯字符串,初始化内部数据 - - - - - - 将本地数据内容,转换为uts通讯字符串 - - - - - - 测试命令接收等待最长时间 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令仅发送,不需要接受 - - - - - 提供发送测试命令统一接口 - - - - - 提供测试命令接收完成统一接口 - - 超时接收时间 - 接收到的数据 - - - - - 串口状态枚举 - - - - - 未开启或已退出 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送同步命令 - - - - - 等待回复 - - - - - 键值回复 - - - - - 发送测试命令 - - - - - 连接成功 - - - - - 连接失败 - - - - - 串口任务状态,根据状态不同进行不同的串口操作 - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 发送同步命令的间隔时间(ms) - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 状态机执行间隔,默认10ms - - - - - 当前可以访问的串口名集合 - - - - - 当前串口对象 - - - - - UTS串口波特率 - - - - - 接收等待最长时间 - - - - - 串口通讯写入失败计数 - - - - - 串口通讯写入失败最大上限 - - - - - 处理高优先级接收数据 - 当前包含按键键值与测试状态回复包等数据 - - - - - UTS串口任务状态机 - - - - - 串口任务,包含索引串口,发送数据,接收数据 - - - - -UTS系列App与UtsCore交互为避免重复书写产生的中间类 - - - - 本地服务索引 - - - 本地服务角色,0客户端,1服务器 - - - 本地服务别名 - - - 本地服务组名(子网名) - - - 软件名称 - - - 软件版本 - - - 测试记录表名 - - - 登录用户信息 - - - 鉴权文件信息 - - - 当前选择站位信息 - - - 测试结果内容 - - - 软件注册器 - - - 服务通讯TCP客户端 - - - 是否释放当前类 - - - 站位观察者集合 - - - 当前软件所属站位类型,None则无类型 - - - UTS软件单例对象 - - - UTS软件单例对象初始化锁 - - - - 创建单例对象 - - - - - - 添加站位修改观察者,唯一添加 - - - - - - 移除站位修改观察者 - - - - - - 清空站位修改观察者 - - - - - 初始化完成 - - - - - - 用户账号信息 - - - - - - 服务索引 - - - - - - 服务角色,0客户端,1服务器 - - - - - - 服务别名 - - - - - - 服务所属分组 - - - - - - 鉴权文件信息 - - - - - - 工厂产线信息 - - - - - - 测试站信息 - - - - - - 测试站信息 - - - - - - APP注册机 - - - - - - 测试记录表名 - - - - - - 未查询到数据库订单号时是否显示提示 - - - - - - 允许保存未查询到订单号的记录入库,显示提示时,此字段不生效。 - - - - - - 初始化信息,唯一初始化 - - 软件选择站位时,可以选择的站位类型,默认显示测试站位 - - - - 测试状态改变处理事件 - - - - - - - 连接数据服务,异步执行 - - - - - 保持与数据服务的Tcp连接存活 - - - - - - 定期发送App心跳包 - - - - - - 主动向服务发送变化数据 - - 变化类型 - 字段内容 - - - - 发送App上报信息 - - - - - - - 发送数据 - - - - - - - APP接收服务器数据 - - - - - - 处理数据,并返回回复数据 - - 需要处理的数据参数 - 需要回复的数据 - - - - 显示登陆页面 - - - - - 注册APP - - - - - 初始化测试结果字段信息 - - - - - 填充测试结果订单信息字段 - - - - - 根据序号分配给测试记录的订单号,并将测试记录写入到数据库中,提交成功后会重置测试记录。 - - - - - 根据项目名与站位名称,加载项目站信息 - - - - - - - 显示切换项目站信息页面,供用户修改测试站 - - - - - 用户选择测试站后回调函数 - - - - - - - 定期更新APP存活时间 - - - - - - 保存软件运行日志至数据库 - - - - - - 保存软件运行日志至数据库 - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 创建文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 文件上传 - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - - 从注册表中获取UTS软件运行所需的变量值 - - 注意: - 使用时避免反复读写注册表,应将获取的字段值保存至变量中; - 获取字段失败时会程序异,使用时做好异常保护; - 只读的变量是从注册表中获取的字段根据规则拼接而成的; - - - - 数据服务 - - - 更新服务 - - - 鉴权文件 - - - 数据库文件夹 - - - 产品相关 - - - - 注册表存放根路径配置信息 - - - - - 获取注册表是否存在 - - - - - - 获取和设置UTS软件存放位置的根文件路径,如C:/AUTS - - - - - - 获取和设置UTS软件Ftp所在地址 - - - - - - 获取和设置数据库URL所在地址 - - - - - - 子网名称,用于过滤多播时非相同子网名称数据包 - - - - - - 设备在子网中的角色,0为普通设备,1为服务器设备 - - - - - - 获取和设置License文件名 - - - - - - 获取和设置DataService名称 - - - - - - 获取和设置DataService版本信息 - - - - - - 获取或设置服务的索引,默认值为-1 - - - - - - 获取或设置服务的通讯端口,默认端口55533 - - - - - - 服务注册时使用的自定义标识名 - - - - - - 存放数据服务文件夹,不包含版本文件夹 - - - - - - 数据服务版本文件夹 - - - - - - 获取数据服务执行文件的路径 - - - - - - 获取和设置UpdateService名称 - - - - - - 获取和设置UpdateService版本信息 - - - - - - 获取和设置UpdateService文件夹路径,不包含版本文件夹 - - - - - - 获取和设置UpdateService当前版本文件夹路径 - - - - - - 获取数据服务执行文件的路径 - - - - - - 本地数据库文件夹 - - - - - - 本地产品图像文件夹 - - - - - - UTS使用的数据库连接参数 - - - - - 远程数据库地址修改 - - - - - 远程数据库类型 - - - - - 远程数据库连接字符串 - - - - - 远程私有库名 - - - - - 远程公共库名 - - - - - 本地数据库类型 - - - - - 本地数据库连接字符串 - - - - 系统文件夹枚举值 - - - 错误记录文件夹 - - - 设置文件夹 - - - 用户临时操作文件夹 - - - - Temp文件夹下文件夹 - - - - 创建项目时使用文件夹 - - - 设计时使用文件夹 - - - 测试时使用文件夹 - - - - Temp文件夹下文件夹 - - - - 产品原图文件夹名 - - - 产品预览图文件夹名 - - - - 本地缓存数据路径 - - - - - - 厂商名 - - - - - 校验程序所需的所有文件夹是否存在,不存在则创建 - - - - - 用户设置文件夹完整路径 - - - - - - 行节点风格存储文件完整路径 - - - - - - 用户日志文件夹完整路径 - - - - - - 项目站发布文件夹路径,与项目测试站包发布路径区分,可修改 - - - - - - 项目站包远程存储路径 - - 产品索引 - 产品工艺站索引 - 产品测试站包名 - - - - - 产品原图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品原图本地存储文件夹路径 - - - - - - 产品预览图远程存储文件夹路径 - - - - - - 产品原图本地存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 项目站发布文件夹指定项目名路径 - - 产品索引 - - - - - 项目站包发布路径 - - 产品名称 - 站位索引 - - - - - 项目站包文件路径 - - 产品索引 - 站位索引 - 包名待.uts后缀 - - - - - 项目临时编辑文件夹路径 - - - - - - 临时项目设计文件夹路径 - - - - - - 临时项目文件路径 - - - - - - - 项目站设计文件夹路径 - - - - - - 项目站包信息文件名 - - - - - 获取指定包名的项目站包文件夹路径 - - - - - - 获取指定包名的项目站包信息文件路径 - - - - - - - 获取指定包名的项目站包资源文件夹 - - - - - - - 获取指定包名的项目站包测试流程文件夹 - - - - - - - 项目站包文件夹路径 - - - - - - 项目站包信息文件路径 - - - - - - 项目站包资源文件夹 - - - - - - 项目站包资源文件夹 - - - - - - 解析模式,并且确定有关参数 - - - - - 常驻线程,执行各种Mode - - - - diff --git a/AUTS_AOI/bin/Debug/Ubiety.Dns.Core.dll b/AUTS_AOI/bin/Debug/Ubiety.Dns.Core.dll deleted file mode 100644 index b10ecf2..0000000 Binary files a/AUTS_AOI/bin/Debug/Ubiety.Dns.Core.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/Zstandard.Net.dll b/AUTS_AOI/bin/Debug/Zstandard.Net.dll deleted file mode 100644 index 83934d1..0000000 Binary files a/AUTS_AOI/bin/Debug/Zstandard.Net.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/dll/x64/OpenCvSharpExtern.dll b/AUTS_AOI/bin/Debug/dll/x64/OpenCvSharpExtern.dll deleted file mode 100644 index f491f61..0000000 Binary files a/AUTS_AOI/bin/Debug/dll/x64/OpenCvSharpExtern.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/dll/x64/opencv_videoio_ffmpeg455_64.dll b/AUTS_AOI/bin/Debug/dll/x64/opencv_videoio_ffmpeg455_64.dll deleted file mode 100644 index 19ae39a..0000000 Binary files a/AUTS_AOI/bin/Debug/dll/x64/opencv_videoio_ffmpeg455_64.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/dll/x86/OpenCvSharpExtern.dll b/AUTS_AOI/bin/Debug/dll/x86/OpenCvSharpExtern.dll deleted file mode 100644 index 478332c..0000000 Binary files a/AUTS_AOI/bin/Debug/dll/x86/OpenCvSharpExtern.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/dll/x86/opencv_videoio_ffmpeg455.dll b/AUTS_AOI/bin/Debug/dll/x86/opencv_videoio_ffmpeg455.dll deleted file mode 100644 index 98c2f2d..0000000 Binary files a/AUTS_AOI/bin/Debug/dll/x86/opencv_videoio_ffmpeg455.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/x64/SQLite.Interop.dll b/AUTS_AOI/bin/Debug/x64/SQLite.Interop.dll deleted file mode 100644 index 1a86bfd..0000000 Binary files a/AUTS_AOI/bin/Debug/x64/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_AOI/bin/Debug/x86/SQLite.Interop.dll b/AUTS_AOI/bin/Debug/x86/SQLite.Interop.dll deleted file mode 100644 index 1e4490d..0000000 Binary files a/AUTS_AOI/bin/Debug/x86/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_AOI/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_AOI/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI-冲突-方鹏洋_Win10.pdb b/AUTS_AOI/obj/Debug/AUTS_AOI-冲突-方鹏洋_Win10.pdb deleted file mode 100644 index 865f847..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI-冲突-方鹏洋_Win10.pdb and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.FrmMain.resources b/AUTS_AOI/obj/Debug/AUTS_AOI.FrmMain.resources deleted file mode 100644 index 30601e3..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.FrmMain.resources and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.Resources.resources b/AUTS_AOI/obj/Debug/AUTS_AOI.Resources.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.Resources.resources and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.exe b/AUTS_AOI/obj/Debug/AUTS_AOI.exe deleted file mode 100644 index 53686a0..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.exe and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.pdb b/AUTS_AOI/obj/Debug/AUTS_AOI.pdb deleted file mode 100644 index b0f5295..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.pdb and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.AssemblyReference.cache b/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.AssemblyReference.cache deleted file mode 100644 index 7d85b05..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.CopyComplete b/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.CoreCompileInputs.cache b/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.CoreCompileInputs.cache deleted file mode 100644 index e24d19d..0000000 --- a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -940c758a769e202ec9929ecc6c5b427aac8ede9d50b3d3e1cdb782d030235fe1 diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.FileListAbsolute-冲突-方鹏洋_Win10.txt b/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.FileListAbsolute-冲突-方鹏洋_Win10.txt deleted file mode 100644 index 55ba759..0000000 --- a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.FileListAbsolute-冲突-方鹏洋_Win10.txt +++ /dev/null @@ -1,116 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x86\opencv_videoio_ffmpeg452.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x64\opencv_videoio_ffmpeg452_64.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.Extensions.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.Extensions.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.exe.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg452.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg452_64.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\TeeChart.dll diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.FileListAbsolute.txt b/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.FileListAbsolute.txt deleted file mode 100644 index 31fa047..0000000 --- a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,419 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x86\opencv_videoio_ffmpeg452.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x64\opencv_videoio_ffmpeg452_64.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.Extensions.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.Extensions.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.exe.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg452.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg452_64.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg455.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg455_64.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.ValueTuple.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Drawing.Common.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.ValueTuple.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg455.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg455_64.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.ValueTuple.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\FlexCell.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Drawing.Common.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.ValueTuple.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg455.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg455_64.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\AUTS_AOI.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.ValueTuple.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\FlexCell.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Drawing.Common.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.ValueTuple.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -E:\Git\AUTS\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg455.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg455_64.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -E:\Git\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.exe -E:\Git\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -E:\Git\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.ValueTuple.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\FlexCell.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_AOI\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_AOI\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Drawing.Common.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.ValueTuple.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_AOI\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CopyComplete -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.exe -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.xml -E:\Git\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\dll\x86\OpenCvSharpExtern.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\dll\x86\opencv_videoio_ffmpeg455.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\dll\x64\OpenCvSharpExtern.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\dll\x64\opencv_videoio_ffmpeg455_64.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.exe.config -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.exe -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.pdb -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\AUTS_AOI.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Drawing.Common.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.ValueTuple.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\OpenCvSharp.Extensions.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Drawing.Common.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.ValueTuple.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.FrmMain.resources -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.Resources.resources -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.vbproj.Up2Date -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.exe -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.xml -D:\ML\Wen\AUTS\AUTS_AOI\obj\Debug\AUTS_AOI.pdb -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_AOI\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.GenerateResource.cache b/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.GenerateResource.cache deleted file mode 100644 index 4d244fb..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.vbprojAssemblyReference.cache b/AUTS_AOI/obj/Debug/AUTS_AOI.vbprojAssemblyReference.cache deleted file mode 100644 index 0b989e6..0000000 Binary files a/AUTS_AOI/obj/Debug/AUTS_AOI.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/AUTS_AOI.xml b/AUTS_AOI/obj/Debug/AUTS_AOI.xml deleted file mode 100644 index b7f4e68..0000000 --- a/AUTS_AOI/obj/Debug/AUTS_AOI.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - -AUTS_AOI - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 填充测试记录内容,每个应用程序这个部分有所差异 - - - - - 添加提示信息 - - 校验结果 - 提示信息 - - - - 打开摄像头显示图像 - - - - - 生产统计类(当前类线程仅限同步中使用) - - - - - 校验总数,包含有效校验与无效检验 - - - - - 检验有效总数中无效总数 - - - - - 检验总数中有效总数 - - - - - 检验有效总数中失败总数 - - - - - 检验有效总数中通过总数 - - - - - 产品运行时良品率,通过总数除以有效总数 - - - - diff --git a/AUTS_AOI/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_AOI/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index fb3a056..0000000 Binary files a/AUTS_AOI/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_AOI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 0085649..0000000 Binary files a/AUTS_AOI/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/QualityCheck.exe.config b/AUTS_AOI/obj/Debug/QualityCheck.exe.config deleted file mode 100644 index a561d16..0000000 --- a/AUTS_AOI/obj/Debug/QualityCheck.exe.config +++ /dev/null @@ -1,44 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - True - - - 4 - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.AssemblyReference.cache b/AUTS_AOI/obj/Debug/QualityCheck.vbproj.AssemblyReference.cache deleted file mode 100644 index f5e894a..0000000 Binary files a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.CopyComplete b/AUTS_AOI/obj/Debug/QualityCheck.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.CoreCompileInputs.cache b/AUTS_AOI/obj/Debug/QualityCheck.vbproj.CoreCompileInputs.cache deleted file mode 100644 index a69ee8c..0000000 --- a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -2222899c8d16ffc9a20e1486e682fa354b196249 diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.FileListAbsolute.txt b/AUTS_AOI/obj/Debug/QualityCheck.vbproj.FileListAbsolute.txt deleted file mode 100644 index 7177bec..0000000 --- a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,54 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x86\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x86\opencv_videoio_ffmpeg452.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x64\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\dll\x64\opencv_videoio_ffmpeg452_64.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\QualityCheck.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.Extensions.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\Renci.SshNet.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.exe.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\QualityCheck.exe.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\QualityCheck.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\QualityCheck.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\OpenCvSharp.Extensions.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Debug\TeeChart.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Debug\QualityCheck.pdb diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.GenerateResource.cache b/AUTS_AOI/obj/Debug/QualityCheck.vbproj.GenerateResource.cache deleted file mode 100644 index 4b1743e..0000000 Binary files a/AUTS_AOI/obj/Debug/QualityCheck.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbprojAssemblyReference-冲突-齐增标_Win10.cache b/AUTS_AOI/obj/Debug/QualityCheck.vbprojAssemblyReference-冲突-齐增标_Win10.cache deleted file mode 100644 index 88eb6cb..0000000 Binary files a/AUTS_AOI/obj/Debug/QualityCheck.vbprojAssemblyReference-冲突-齐增标_Win10.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/QualityCheck.vbprojAssemblyReference.cache b/AUTS_AOI/obj/Debug/QualityCheck.vbprojAssemblyReference.cache deleted file mode 100644 index 0938f60..0000000 Binary files a/AUTS_AOI/obj/Debug/QualityCheck.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_AOI/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 3247f95..0000000 Binary files a/AUTS_AOI/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_AOI/obj/Release/AUTS_AOI.vbproj.AssemblyReference.cache b/AUTS_AOI/obj/Release/AUTS_AOI.vbproj.AssemblyReference.cache deleted file mode 100644 index 0399afd..0000000 Binary files a/AUTS_AOI/obj/Release/AUTS_AOI.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Release/AUTS_AOI.vbproj.FileListAbsolute.txt b/AUTS_AOI/obj/Release/AUTS_AOI.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/obj/Release/QualityCheck.FrmMain.resources b/AUTS_AOI/obj/Release/QualityCheck.FrmMain.resources deleted file mode 100644 index 30601e3..0000000 Binary files a/AUTS_AOI/obj/Release/QualityCheck.FrmMain.resources and /dev/null differ diff --git a/AUTS_AOI/obj/Release/QualityCheck.Resources.resources b/AUTS_AOI/obj/Release/QualityCheck.Resources.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_AOI/obj/Release/QualityCheck.Resources.resources and /dev/null differ diff --git a/AUTS_AOI/obj/Release/QualityCheck.exe b/AUTS_AOI/obj/Release/QualityCheck.exe deleted file mode 100644 index 74d581a..0000000 Binary files a/AUTS_AOI/obj/Release/QualityCheck.exe and /dev/null differ diff --git a/AUTS_AOI/obj/Release/QualityCheck.exe.config b/AUTS_AOI/obj/Release/QualityCheck.exe.config deleted file mode 100644 index f6f5dd9..0000000 --- a/AUTS_AOI/obj/Release/QualityCheck.exe.config +++ /dev/null @@ -1,38 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_AOI/obj/Release/QualityCheck.pdb b/AUTS_AOI/obj/Release/QualityCheck.pdb deleted file mode 100644 index c415ba3..0000000 Binary files a/AUTS_AOI/obj/Release/QualityCheck.pdb and /dev/null differ diff --git a/AUTS_AOI/obj/Release/QualityCheck.vbproj.CopyComplete b/AUTS_AOI/obj/Release/QualityCheck.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_AOI/obj/Release/QualityCheck.vbproj.CoreCompileInputs.cache b/AUTS_AOI/obj/Release/QualityCheck.vbproj.CoreCompileInputs.cache deleted file mode 100644 index cd46f4f..0000000 --- a/AUTS_AOI/obj/Release/QualityCheck.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -22caf44d9cee5d150e9456ff630584e95ece7ccb diff --git a/AUTS_AOI/obj/Release/QualityCheck.vbproj.FileListAbsolute.txt b/AUTS_AOI/obj/Release/QualityCheck.vbproj.FileListAbsolute.txt deleted file mode 100644 index d90539d..0000000 --- a/AUTS_AOI/obj/Release/QualityCheck.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,52 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\dll\x86\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\dll\x86\opencv_videoio_ffmpeg452.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\dll\x64\OpenCvSharpExtern.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\dll\x64\opencv_videoio_ffmpeg452_64.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\QualityCheck.exe.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\QualityCheck.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\QualityCheck.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\QualityCheck.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\OpenCvSharp.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\OpenCvSharp.Extensions.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\Renci.SshNet.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\OpenCvSharp.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\OpenCvSharp.Extensions.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\bin\Release\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.vbprojAssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.exe.config -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.exe -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.xml -E:\Sync\UTS\SW\UTS_Studio\QualityCheck\obj\Release\QualityCheck.pdb diff --git a/AUTS_AOI/obj/Release/QualityCheck.vbproj.GenerateResource.cache b/AUTS_AOI/obj/Release/QualityCheck.vbproj.GenerateResource.cache deleted file mode 100644 index 9dd67d3..0000000 Binary files a/AUTS_AOI/obj/Release/QualityCheck.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Release/QualityCheck.vbprojAssemblyReference.cache b/AUTS_AOI/obj/Release/QualityCheck.vbprojAssemblyReference.cache deleted file mode 100644 index 16835d9..0000000 Binary files a/AUTS_AOI/obj/Release/QualityCheck.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_AOI/obj/Release/QualityCheck.xml b/AUTS_AOI/obj/Release/QualityCheck.xml deleted file mode 100644 index f2228cb..0000000 --- a/AUTS_AOI/obj/Release/QualityCheck.xml +++ /dev/null @@ -1,228 +0,0 @@ - - - - -QualityCheck - - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - 填充测试记录内容,每个应用程序这个部分有所差异 - - - - - 添加提示信息 - - 校验结果 - 提示信息 - - - 摄像头 - - - - 打开摄像头显示图像 - - - - - 文件上传,覆盖式上传,文件夹不存在则回创建文件夹 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - - 获取当前倒叙排序的结果信息 - - - - - - 生产统计类(当前类线程仅限同步中使用) - - - - - 校验总数,包含有效校验与无效检验 - - - - - 检验有效总数中无效总数 - - - - - 检验总数中有效总数 - - - - - 检验有效总数中失败总数 - - - - - 检验有效总数中通过总数 - - - - - 产品运行时良品率,通过总数除以有效总数 - - - - -UTS系列App与UtsCore交互为避免重复书写产生的中间类 - - - - 当前序号规则 - - - 客户订单信号 - - - 内部订单信息 - - - - 用户账号信息 - - - - - - 鉴权文件信息 - - - - - - 工厂产线信息 - - - - - - 根据名称返回产线信息 - - - - - - - 从数据库中读取产线信息并更新 - - - - - 测试站信息 - - - - - - 测试站信息 - - - - - - 序号规则 - - - - - - APP注册机 - - - - - - 测试记录表名 - - - - - - 初始化信息 - - - - - 显示登陆页面 - - - - - 注册APP - - - - - 填充测试记录的订单索引 - - - - - - 根据订单号,填充订单信息 - - - - - - 根据序号分配给测试记录的订单号,并将测试记录写入到数据库中,提交成功后会重置测试记录。 - - - - - 根据项目名与站位名称,加载项目站信息 - - - - - - - 显示切换项目站信息页面,供用户修改测试站 - - - - - 用户选择测试站后回调函数 - - - - - - 定期更新APP存活时间 - - - - - diff --git a/AUTS_AOI/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_AOI/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 3d2bb00..0000000 Binary files a/AUTS_AOI/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_Assembly/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_Assembly/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbproj.CopyComplete b/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbproj.FileListAbsolute.txt b/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbproj.FileListAbsolute.txt deleted file mode 100644 index f77fe21..0000000 --- a/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,344 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\AUTS_Assembly.exe.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\AUTS_Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\AUTS_Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\AUTS_Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\AUTS_Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\AUTS_Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\AUTS_Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FluentFTP.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FlexCell.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FluentFTP.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\AUTS_Assembly.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FlexCell.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\FluentFTP.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Assembly\obj\Debug\AUTS_Assembly.pdb -E:\Git\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe.config -E:\Git\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe -E:\Git\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.pdb -E:\Git\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\FlexCell.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_Assembly\bin\Debug\FluentFTP.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_Assembly\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.Resources.resources -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CopyComplete -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.exe -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.xml -E:\Git\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.pdb -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe.config -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.exe -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.pdb -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\AUTS_Assembly.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\FluentFTP.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.FrmMain.resources -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.Resources.resources -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Ass.C8842254.Up2Date -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.exe -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.xml -D:\ML\Wen\AUTS\AUTS_Assembly\obj\Debug\AUTS_Assembly.pdb -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_Assembly\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbprojAssemblyReference.cache b/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbprojAssemblyReference.cache deleted file mode 100644 index 0242921..0000000 Binary files a/AUTS_Assembly/obj/Debug/AUTS_Assembly.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly-冲突-齐增标_Win10.exe b/AUTS_Assembly/obj/Debug/Assembly-冲突-齐增标_Win10.exe deleted file mode 100644 index 7abffd6..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly-冲突-齐增标_Win10.exe and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly-冲突-齐增标_Win10.pdb b/AUTS_Assembly/obj/Debug/Assembly-冲突-齐增标_Win10.pdb deleted file mode 100644 index 4fbe684..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly-冲突-齐增标_Win10.pdb and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly.exe.config b/AUTS_Assembly/obj/Debug/Assembly.exe.config deleted file mode 100644 index 1ef293a..0000000 --- a/AUTS_Assembly/obj/Debug/Assembly.exe.config +++ /dev/null @@ -1,35 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - True - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.AssemblyReference.cache b/AUTS_Assembly/obj/Debug/Assembly.vbproj.AssemblyReference.cache deleted file mode 100644 index f5e894a..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.CopyComplete b/AUTS_Assembly/obj/Debug/Assembly.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.CoreCompileInputs-冲突-齐增标_Win10.cache b/AUTS_Assembly/obj/Debug/Assembly.vbproj.CoreCompileInputs-冲突-齐增标_Win10.cache deleted file mode 100644 index e8423eb..0000000 --- a/AUTS_Assembly/obj/Debug/Assembly.vbproj.CoreCompileInputs-冲突-齐增标_Win10.cache +++ /dev/null @@ -1 +0,0 @@ -95e868ab88ad976a5ac97d5dc0a6e776e2d45e02 diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.CoreCompileInputs.cache b/AUTS_Assembly/obj/Debug/Assembly.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 0f889ac..0000000 --- a/AUTS_Assembly/obj/Debug/Assembly.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -3c0a1b95774a97adad896594767aec9d483aafa0 diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.FileListAbsolute-冲突-齐增标_Win10.txt b/AUTS_Assembly/obj/Debug/Assembly.vbproj.FileListAbsolute-冲突-齐增标_Win10.txt deleted file mode 100644 index 7745cf5..0000000 --- a/AUTS_Assembly/obj/Debug/Assembly.vbproj.FileListAbsolute-冲突-齐增标_Win10.txt +++ /dev/null @@ -1,310 +0,0 @@ -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.exe -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\log4net.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.exe -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.xml -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\log4net.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\log4net.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.exe -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.xml -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.exe -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\log4net.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -G:\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -G:\UTS_Studio\Assembly\bin\Debug\Assembly.exe -G:\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -G:\UTS_Studio\Assembly\bin\Debug\Assembly.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -G:\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -G:\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -G:\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -G:\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -G:\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -G:\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -G:\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -G:\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -G:\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -G:\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -G:\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -G:\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -G:\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -G:\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -G:\UTS_Studio\Assembly\obj\Debug\Assembly.exe -G:\UTS_Studio\Assembly\obj\Debug\Assembly.xml -G:\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.FileListAbsolute.txt b/AUTS_Assembly/obj/Debug/Assembly.vbproj.FileListAbsolute.txt deleted file mode 100644 index 7bc683a..0000000 --- a/AUTS_Assembly/obj/Debug/Assembly.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,354 +0,0 @@ -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.exe -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -D:\DTL\UTS_Studio\Assembly\bin\Debug\Assembly.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\log4net.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\DTL\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.exe -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.xml -D:\DTL\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\log4net.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -H:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -H:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\log4net.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -D:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.exe -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.xml -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.exe -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Assembly.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\log4net.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -F:\ML\Project\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -F:\ML\Project\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -G:\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -G:\UTS_Studio\Assembly\bin\Debug\Assembly.exe -G:\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -G:\UTS_Studio\Assembly\bin\Debug\Assembly.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -G:\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -G:\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -G:\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -G:\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -G:\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -G:\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -G:\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -G:\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -G:\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -G:\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -G:\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -G:\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -G:\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -G:\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -G:\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -G:\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -G:\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -G:\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -G:\UTS_Studio\Assembly\obj\Debug\Assembly.exe -G:\UTS_Studio\Assembly\obj\Debug\Assembly.xml -G:\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Assembly.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -G:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Form1.resources -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb -F:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbprojAssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Renci.SshNet.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.exe.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.exe.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\Assembly.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\TeeChart.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\Assembly\obj\Debug\Assembly.pdb diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.GenerateResource-冲突-齐增标_Win10.cache b/AUTS_Assembly/obj/Debug/Assembly.vbproj.GenerateResource-冲突-齐增标_Win10.cache deleted file mode 100644 index 6dd4130..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly.vbproj.GenerateResource-冲突-齐增标_Win10.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbproj.GenerateResource.cache b/AUTS_Assembly/obj/Debug/Assembly.vbproj.GenerateResource.cache deleted file mode 100644 index bc68619..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference-冲突-高腾飞_Win7.cache b/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference-冲突-高腾飞_Win7.cache deleted file mode 100644 index b1ccf23..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference-冲突-高腾飞_Win7.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference-冲突-齐增标_Win10.cache b/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference-冲突-齐增标_Win10.cache deleted file mode 100644 index e356cf1..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference-冲突-齐增标_Win10.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference.cache b/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference.cache deleted file mode 100644 index 8f1d706..0000000 Binary files a/AUTS_Assembly/obj/Debug/Assembly.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_Assembly/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index fb3a056..0000000 Binary files a/AUTS_Assembly/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_Assembly/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 3bea70f..0000000 Binary files a/AUTS_Assembly/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Assembly/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index da3b973..0000000 Binary files a/AUTS_Assembly/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Assembly/obj/Release/AUTS_Assembly.vbproj.AssemblyReference.cache b/AUTS_Assembly/obj/Release/AUTS_Assembly.vbproj.AssemblyReference.cache deleted file mode 100644 index 7754ba8..0000000 Binary files a/AUTS_Assembly/obj/Release/AUTS_Assembly.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Release/AUTS_Assembly.vbproj.FileListAbsolute.txt b/AUTS_Assembly/obj/Release/AUTS_Assembly.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Assembly/obj/Release/Assembly.vbprojAssemblyReference.cache b/AUTS_Assembly/obj/Release/Assembly.vbprojAssemblyReference.cache deleted file mode 100644 index 09f263a..0000000 Binary files a/AUTS_Assembly/obj/Release/Assembly.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Assembly/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Assembly/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index ede7d37..0000000 Binary files a/AUTS_Assembly/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/AUTS_DataService.exe b/AUTS_DataService/bin/Debug/AUTS_DataService.exe deleted file mode 100644 index 46bcf46..0000000 Binary files a/AUTS_DataService/bin/Debug/AUTS_DataService.exe and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/AUTS_DataService.exe.config b/AUTS_DataService/bin/Debug/AUTS_DataService.exe.config deleted file mode 100644 index b34855d..0000000 --- a/AUTS_DataService/bin/Debug/AUTS_DataService.exe.config +++ /dev/null @@ -1,42 +0,0 @@ - - - - -
- - - - - - - - - 30 - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_DataService/bin/Debug/AUTS_DataService.pdb b/AUTS_DataService/bin/Debug/AUTS_DataService.pdb deleted file mode 100644 index 299281b..0000000 Binary files a/AUTS_DataService/bin/Debug/AUTS_DataService.pdb and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/AUTS_DataService_2.5.6.0.zip b/AUTS_DataService/bin/Debug/AUTS_DataService_2.5.6.0.zip deleted file mode 100644 index 4d7fc1b..0000000 Binary files a/AUTS_DataService/bin/Debug/AUTS_DataService_2.5.6.0.zip and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/BouncyCastle.Crypto.dll b/AUTS_DataService/bin/Debug/BouncyCastle.Crypto.dll deleted file mode 100644 index 05036dd..0000000 Binary files a/AUTS_DataService/bin/Debug/BouncyCastle.Crypto.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/FlexCell.dll b/AUTS_DataService/bin/Debug/FlexCell.dll deleted file mode 100644 index 0f6c38e..0000000 Binary files a/AUTS_DataService/bin/Debug/FlexCell.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/FluentFTP.dll b/AUTS_DataService/bin/Debug/FluentFTP.dll deleted file mode 100644 index 14597be..0000000 Binary files a/AUTS_DataService/bin/Debug/FluentFTP.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/FluentFTP.xml b/AUTS_DataService/bin/Debug/FluentFTP.xml deleted file mode 100644 index 417da95..0000000 --- a/AUTS_DataService/bin/Debug/FluentFTP.xml +++ /dev/null @@ -1,6755 +0,0 @@ - - - - FluentFTP - - - - - A connection to a single FTP server. Interacts with any FTP/FTPS server and provides a high-level and low-level API to work with files and folders. - - Debugging problems with FTP is much easier when you enable logging. See the FAQ on our Github project page for more info. - - - - - Automatic FTP and FTPS connection negotiation. - This method tries every possible combination of the FTP connection properties, and returns the list of successful connection profiles. - You can configure it to stop after finding the first successful profile, or to collect all successful profiles. - You can then generate code for the profile using the FtpProfile.ToCode method. - If no successful profiles are found, a blank list is returned. - - Find all successful profiles (false) or stop after finding the first successful profile (true)? - - - - - Connect to the given server profile. - - - - - Connect to the given server profile. - - - - - Load the given connection profile and configure the FTP client instance accordingly. - - Connection profile. Not modified. - - - - Automatic FTP and FTPS connection negotiation. - This method tries every possible combination of the FTP connection properties, and connects to the first successful profile. - Returns the FtpProfile if the connection succeeded, or null if it failed. - - - - - Automatic FTP and FTPS connection negotiation. - This method tries every possible combination of the FTP connection properties, and connects to the first successful profile. - Returns the FtpProfile if the connection succeeded, or null if it failed. - - - - - Creates a new instance of an FTP Client. - - - - - Creates a new instance of an FTP Client, with the given host. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, port and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, username and password. - - - - - Creates a new instance of an FTP Client, with the given host, username, password and account - - - - - Creates a new instance of an FTP Client, with the given host, port, username and password. - - - - - Creates a new instance of an FTP Client, with the given host, port, username, password and account - - - - - Creates a new instance of an FTP Client, with the given host. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, port and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, port and credentials. - - - - - Check if the host parameter is valid - - - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - - - Disconnects from the server, releases resources held by this - object. - - - - - Finalizer - - - - - Clones the control connection for opening multiple data streams - - A new control connection with the same property settings as this one - - - - - Connect to the server - - Thrown if this object has been disposed. - - - - - Connect to the server - - Thrown if this object has been disposed. - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - Called during Connect(). Typically extended by FTP proxies. - - - - - Called during . Typically extended by FTP proxies. - - - - - Populates the capabilities flags based on capabilities - supported by this server. This method is overridable - so that new features can be supported - - The reply object from the FEAT command. The InfoMessages property will - contain a list of the features the server supported delimited by a new line '\n' character. - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - On authentication failures - - To handle authentication failures without retries, catch FtpAuthenticationException. - - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - On authentication failures - - To handle authentication failures without retries, catch FtpAuthenticationException. - - - - - Disconnects from the server - - - - - Disconnects from the server asynchronously - - - - - Catches the socket stream ssl validation event and fires the event handlers - attached to this object for validating SSL certificates - - The stream that fired the event - The event args used to validate the certificate - - - - Fires the SSL validation event - - Event Args - - - - Compare the specified local file with the remote file on the FTP server using various kinds of quick equality checks. - In Auto mode, the file size and checksum are compared. - Comparing the checksum of a file is a quick way to check if the contents of the files are exactly equal without downloading a copy of the file. - You can use the option flags to compare any combination of: file size, checksum, date modified. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - Types of equality checks to perform. Use Auto to compare file size and checksum. - - - - - Compare the specified local file with the remote file on the FTP server using various kinds of quick equality checks. - In Auto mode, the file size and checksum are compared. - Comparing the checksum of a file is a quick way to check if the contents of the files are exactly equal without downloading a copy of the file. - You can use the option flags to compare any combination of: file size, checksum, date modified. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - Types of equality checks to perform. Use Auto to compare file size and checksum. - The token that can be used to cancel the entire process - - - - - Downloads the specified files into a local single directory. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - Same speed as . - - The full or relative path to the directory that files will be downloaded into. - The full or relative paths to the files on the server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - Provide a callback to track upload progress. - The count of how many files were downloaded successfully. When existing files are skipped, they are not counted. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Downloads the specified files into a local single directory. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - Same speed as . - - The full or relative path to the directory that files will be downloaded. - The full or relative paths to the files on the server - Overwrite if you want the local file to be overwritten if it already exists. Append will also create a new file if it dosen't exists - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track upload progress. - The count of how many files were downloaded successfully. When existing files are skipped, they are not counted. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Downloads the specified file onto the local file system. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - FtpStatus flag indicating if the file was downloaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Downloads the specified file onto the local file system asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - Overwrite if you want the local file to be overwritten if it already exists. Append will also create a new file if it dosen't exists - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide an implementation of IProgress to track download progress. - The token that can be used to cancel the entire process - FtpStatus flag indicating if the file was downloaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Downloads the specified file into the specified stream. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The stream that the file will be written to. Provide a new MemoryStream if you only want to read the file into memory. - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - Provide a callback to track download progress. - If true then the file was downloaded, false otherwise. - - - - Downloads the specified file and return the raw byte array. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The variable that will receive the bytes. - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - Provide a callback to track download progress. - If true then the file was downloaded, false otherwise. - - - - Downloads the specified file into the specified stream asynchronously . - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The stream that the file will be written to. Provide a new MemoryStream if you only want to read the file into memory. - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track download progress. - If true then the file was downloaded, false otherwise. - - - - Downloads the specified file and return the raw byte array. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track download progress. - A byte array containing the contents of the downloaded file if successful, otherwise null. - - - - Downloads the specified file into the specified stream asynchronously . - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the server - The token that can be used to cancel the entire process - A byte array containing the contents of the downloaded file if successful, otherwise null. - - - - Download a file from the server and write the data into the given stream. - Reads data in chunks. Retries if server disconnects midway. - - - - - Calculate transfer chunk size taking rate control into account - - - - - Download a file from the server and write the data into the given stream asynchronously. - Reads data in chunks. Retries if server disconnects midway. - - - - - Deletes a file on the server - - The full or relative path to the file - - - - - Deletes a file from the server asynchronously - - The full or relative path to the file - The token that can be used to cancel the entire process - - - - Checks if a file exists on the server. - - The full or relative path to the file - True if the file exists - - - - - Checks if a file exists on the server asynchronously. - - The full or relative path to the file - The token that can be used to cancel the entire process - True if the file exists, false otherwise - - - - Renames an object on the remote file system. - Low level method that should NOT be used in most cases. Prefer MoveFile() and MoveDirectory(). - Throws exceptions if the file does not exist, or if the destination file already exists. - - The full or relative path to the object - The new full or relative path including the new name of the object - - - - - Renames an object on the remote file system asynchronously. - Low level method that should NOT be used in most cases. Prefer MoveFile() and MoveDirectory(). - Throws exceptions if the file does not exist, or if the destination file already exists. - - The full or relative path to the object - The new full or relative path including the new name of the object - The token that can be used to cancel the entire process - - - - Moves a file on the remote file system from one directory to another. - Always checks if the source file exists. Checks if the dest file exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest file exists? And if it does should we overwrite/skip the operation? - Whether the file was moved - - - - Moves a file asynchronously on the remote file system from one directory to another. - Always checks if the source file exists. Checks if the dest file exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest file exists? And if it does should we overwrite/skip the operation? - The token that can be used to cancel the entire process - Whether the file was moved - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - The token that can be used to cancel the entire process - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - The token that can be used to cancel the entire process - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - The token that can be used to cancel the entire process - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - The token that can be used to cancel the entire process - - - - Retrieve the permissions of the given file/folder as an FtpListItem object with all "Permission" properties set. - Throws FtpCommandException if there is an issue. - Returns null if the server did not specify a permission value. - Use `GetChmod` if you required the integer value instead. - - The full or relative path to the item - - - - Retrieve the permissions of the given file/folder as an FtpListItem object with all "Permission" properties set. - Throws FtpCommandException if there is an issue. - Returns null if the server did not specify a permission value. - Use `GetChmod` if you required the integer value instead. - - The full or relative path to the item - The token that can be used to cancel the entire process - - - - Retrieve the permissions of the given file/folder as an integer in the CHMOD format. - Throws FtpCommandException if there is an issue. - Returns 0 if the server did not specify a permission value. - Use `GetFilePermissions` if you required the permissions in the FtpPermission format. - - The full or relative path to the item - - - - Retrieve the permissions of the given file/folder as an integer in the CHMOD format. - Throws FtpCommandException if there is an issue. - Returns 0 if the server did not specify a permission value. - Use `GetFilePermissions` if you required the permissions in the FtpPermission format. - - The full or relative path to the item - The token that can be used to cancel the entire process - - - - Recursively dereferences a symbolic link. See the - MaximumDereferenceCount property for controlling - how deep this method will recurse before giving up. - - The symbolic link - FtpListItem, null if the link can't be dereferenced - - - - - Recursively dereferences a symbolic link - - The symbolic link - The maximum depth of recursion that can be performed before giving up. - FtpListItem, null if the link can't be dereferenced - - - - - Dereference a FtpListItem object - - The item to dereference - Maximum recursive calls - Counter - FtpListItem, null if the link can't be dereferenced - - - - - Dereference a FtpListItem object - - The item to dereference - Maximum recursive calls - Counter - The token that can be used to cancel the entire process - FtpListItem, null if the link can't be dereferenced - - - - Dereference a object asynchronously - - The item to dereference - Maximum recursive calls - The token that can be used to cancel the entire process - FtpListItem, null if the link can't be dereferenced - - - - Dereference a object asynchronously - - The item to dereference - The token that can be used to cancel the entire process - FtpListItem, null if the link can't be dereferenced - - - - Gets the size of a remote file, in bytes. - - The full or relative path of the file - -1 if the command fails, otherwise the file size - - - - - Gets the file size of an object, without locking - - - - - Asynchronously gets the size of a remote file, in bytes. - - The full or relative path of the file - The token that can be used to cancel the entire process - The size of the file, -1 if there was a problem. - - - - Gets the file size of an object, without locking - - - - - Gets the modified time of a remote file. - - The full path to the file - The modified time, or if there was a problem - - - - - Gets the modified time of a remote file asynchronously - - The full path to the file - The token that can be used to cancel the entire process - The modified time, or if there was a problem - - - - Changes the modified time of a remote file - - The full path to the file - The new modified date/time value - - - - Gets the modified time of a remote file asynchronously - - The full path to the file - The new modified date/time value - The token that can be used to cancel the entire process - - - - Uploads the given file paths to a single folder on the server. - All files are placed directly into the given folder regardless of their path on the local filesystem. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - Faster than uploading single files with since it performs a single "file exists" check rather than one check per file. - - The full or relative paths to the files on the local file system. Files can be from multiple folders. - The full or relative path to the directory that files will be uploaded on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance, - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - Provide a callback to track upload progress. - The count of how many files were uploaded successfully. Affected when files are skipped when they already exist. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Uploads the given file paths to a single folder on the server. - All files are placed directly into the given folder regardless of their path on the local filesystem. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - Faster than uploading single files with since it performs a single "file exists" check rather than one check per file. - - Files to be uploaded - The full or relative path to the directory that files will be uploaded on the server - What to do if the file already exists? Skip, overwrite or append? Set this to FtpExists.None for fastest performance but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - Provide a callback to track upload progress. - The count of how many files were downloaded successfully. When existing files are skipped, they are not counted. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Uploads the given file paths to a single folder on the server asynchronously. - All files are placed directly into the given folder regardless of their path on the local filesystem. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - Faster than uploading single files with since it performs a single "file exists" check rather than one check per file. - - The full or relative paths to the files on the local file system. Files can be from multiple folders. - The full or relative path to the directory that files will be uploaded on the server - What to do if the file already exists? Skip, overwrite or append? Set this to FtpExists.None for fastest performance but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track upload progress. - The count of how many files were uploaded successfully. Affected when files are skipped when they already exist. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Uploads the specified file directly onto the server. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - - - - - Uploads the specified file directly onto the server asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - The token that can be used to cancel the entire process. - Provide an implementation of IProgress to track upload progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - - - - - Uploads the specified stream as a file onto the server. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a stream - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Provide a callback to track upload progress. - - - - Uploads the specified byte array as a file onto the server. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a byte array - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Provide a callback to track upload progress. - - - - Uploads the specified stream as a file onto the server asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a stream - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance, - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - The token that can be used to cancel the entire process. - Provide an implementation of IProgress to track upload progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - - - Uploads the specified byte array as a file onto the server asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a byte array - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance, - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - The token that can be used to cancel the entire process. - Provide an implementation of IProgress to track upload progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - - - Upload the given stream to the server as a new file. Overwrites the file if it exists. - Writes data in chunks. Retries if server disconnects midway. - - - - - Upload the given stream to the server as a new file asynchronously. Overwrites the file if it exists. - Writes data in chunks. Retries if server disconnects midway. - - - - - Sends progress to the user, either a value between 0-100 indicating percentage complete, or -1 for indeterminate. - - - - - Sends progress to the user, either a value between 0-100 indicating percentage complete, or -1 for indeterminate. - - - - - Downloads the specified directory onto the local file system. - In Mirror mode, we will download missing files, and delete any extra files from disk that are not present on the server. This is very useful when creating an exact local backup of an FTP directory. - In Update mode, we will only download missing files and preserve any extra files on disk. This is useful when you want to simply download missing files from an FTP directory. - Only downloads the files and folders matching all the rules provided, if any. - All exceptions during downloading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk to download into. It is created if it does not exist. - The full path of the remote FTP folder that you want to download. If it does not exist, an empty result list is returned. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track download progress. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Downloads the specified directory onto the local file system. - In Mirror mode, we will download missing files, and delete any extra files from disk that are not present on the server. This is very useful when creating an exact local backup of an FTP directory. - In Update mode, we will only download missing files and preserve any extra files on disk. This is useful when you want to simply download missing files from an FTP directory. - Only downloads the files and folders matching all the rules provided, if any. - All exceptions during downloading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk to download into. It is created if it does not exist. - The full path of the remote FTP folder that you want to download. If it does not exist, an empty result list is returned. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide an implementation of IProgress to track upload progress. - The token that can be used to cancel the entire process - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Get a list of all the files and folders that need to be downloaded - - - - - Download all the listed files and folders from the main directory - - - - - Download all the listed files and folders from the main directory - - - - - Delete the extra local files if in mirror mode - - - - - Check if the local file can be deleted, based on the DownloadDirectoryDeleteExcluded property - - - - - Deletes the specified directory and all its contents. - - The full or relative path of the directory to delete - - - - - Deletes the specified directory and all its contents. - - The full or relative path of the directory to delete - Useful to delete hidden files or dot-files. - - - - - Deletes the specified directory and all its contents. - - The full or relative path of the directory to delete - If the directory is not empty, remove its contents - Useful to delete hidden files or dot-files. - - - - - Checks whether will be called recursively or not. - - - - - - - Asynchronously removes a directory and all its contents. - - The full or relative path of the directory to delete - The token that can be used to cancel the entire process - - - - Asynchronously removes a directory and all its contents. - - The full or relative path of the directory to delete - Useful to delete hidden files or dot-files. - The token that can be used to cancel the entire process - - - - Asynchronously removes a directory. Used by and - . - - The full or relative path of the directory to delete - Delete the contents before deleting the folder - Useful to delete hidden files or dot-files. - The token that can be used to cancel the entire process - - - - - Tests if the specified directory exists on the server. This - method works by trying to change the working directory to - the path specified. If it succeeds, the directory is changed - back to the old working directory and true is returned. False - is returned otherwise and since the CWD failed it is assumed - the working directory is still the same. - - The path of the directory - True if it exists, false otherwise. - - - - - Tests if the specified directory exists on the server asynchronously. This - method works by trying to change the working directory to - the path specified. If it succeeds, the directory is changed - back to the old working directory and true is returned. False - is returned otherwise and since the CWD failed it is assumed - the working directory is still the same. - - The full or relative path of the directory to check for - The token that can be used to cancel the entire process - True if the directory exists. False otherwise. - - - - Creates a directory on the server. If the preceding - directories do not exist, then they are created. - - The full or relative path to the new remote directory - - - - - Creates a directory on the server - - The full or relative path to the new remote directory - Try to force all non-existent pieces of the path to be created - - True if directory was created, false if it was skipped - - - - Creates a remote directory asynchronously - - The full or relative path to the new remote directory - Try to create the whole path if the preceding directories do not exist - The token that can be used to cancel the entire process - True if directory was created, false if it was skipped - - - - Creates a remote directory asynchronously. If the preceding - directories do not exist, then they are created. - - The full or relative path to the new remote directory - The token that can be used to cancel the entire process - - - - Moves a directory on the remote file system from one directory to another. - Always checks if the source directory exists. Checks if the dest directory exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest directory exists? And if it does should we overwrite/skip the operation? - Whether the directory was moved - - - - Moves a directory asynchronously on the remote file system from one directory to another. - Always checks if the source directory exists. Checks if the dest directory exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest directory exists? And if it does should we overwrite/skip the operation? - The token that can be used to cancel the entire process - Whether the directory was moved - - - - Sets the work directory on the server - - The path of the directory to change to - - - - - Sets the working directory on the server asynchronously - - The directory to change to - The token that can be used to cancel the entire process - - - - Gets the current working directory - - The current working directory, ./ if the response couldn't be parsed. - - - - - Gets the current working directory asynchronously - - The current working directory, ./ if the response couldn't be parsed. - - - - Uploads the specified directory onto the server. - In Mirror mode, we will upload missing files, and delete any extra files from the server that are not present on disk. This is very useful when publishing an exact copy of a local folder onto an FTP server. - In Update mode, we will only upload missing files and preserve any extra files on the server. This is useful when you want to simply upload missing files to a server. - Only uploads the files and folders matching all the rules provided, if any. - All exceptions during uploading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk that you want to upload. If it does not exist, an empty result list is returned. - The full path of the remote FTP folder to upload into. It is created if it does not exist. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the upload or restart the upload? - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track upload progress. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Uploads the specified directory onto the server. - In Mirror mode, we will upload missing files, and delete any extra files from the server that are not present on disk. This is very useful when publishing an exact copy of a local folder onto an FTP server. - In Update mode, we will only upload missing files and preserve any extra files on the server. This is useful when you want to simply upload missing files to a server. - Only uploads the files and folders matching all the rules provided, if any. - All exceptions during uploading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk that you want to upload. If it does not exist, an empty result list is returned. - The full path of the remote FTP folder to upload into. It is created if it does not exist. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the upload or restart the upload? - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide an implementation of IProgress to track upload progress. - The token that can be used to cancel the entire process - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Get a list of all the sub directories that need to be created within the main directory - - - - - Create all the sub directories within the main directory - - - - - Create all the sub directories within the main directory - - - - - Get a list of all the files that need to be uploaded within the main directory - - - - - Upload all the files within the main directory - - - - - Check if the file is cleared to be uploaded, taking its existance/filesize and existsMode options into account. - - - - - Upload all the files within the main directory - - - - - Delete the extra remote files if in mirror mode and the directory was pre-existing - - - - - Delete the extra remote files if in mirror mode and the directory was pre-existing - - - - - Check if the remote file can be deleted, based on the UploadDirectoryDeleteExcluded property - - - - - Opens a FXP PASV connection between the source FTP Server and the destination FTP Server - - FtpClient instance of the destination FTP Server - A data stream ready to be used - - - - Opens a FXP PASV connection between the source FTP Server and the destination FTP Server - - Valid FTP connection to the destination FTP Server - A data stream ready to be used - - - - Disposes and disconnects this FTP client if it was auto-created for an internal operation. - - - - - Transfer the specified file from the source FTP Server to the destination FTP Server using the FXP protocol. - High-level API that takes care of various edge cases internally. - - The full or relative path to the file on the source FTP Server - Valid FTP connection to the destination FTP Server - The full or relative path to destination file on the remote FTP Server - Indicates if the folder should be created on the remote FTP Server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - Returns a FtpStatus indicating if the file was transfered. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Transfer the specified file from the source FTP Server to the destination FTP Server asynchronously using the FXP protocol. - High-level API that takes care of various edge cases internally. - - The full or relative path to the file on the source FTP Server - Valid FTP connection to the destination FTP Server - The full or relative path to destination file on the remote FTP Server - Indicates if the folder should be created on the remote FTP Server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - The token that can be used to cancel the entire process - Returns a FtpStatus indicating if the file was transfered. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Transfers a file from the source FTP Server to the destination FTP Server via the FXP protocol - - - - - Transfers a file from the source FTP Server to the destination FTP Server via the FXP protocol asynchronously. - - - - - Transfer the specified directory from the source FTP Server onto the remote FTP Server using the FXP protocol. - You will need to create a valid connection to your remote FTP Server before calling this method. - In Update mode, we will only transfer missing files and preserve any extra files on the remote FTP Server. This is useful when you want to simply transfer missing files from an FTP directory. - Currently Mirror mode is not implemented. - Only transfers the files and folders matching all the rules provided, if any. - All exceptions during transfer are caught, and the exception is stored in the related FtpResult object. - - The full or relative path to the folder on the source FTP Server. If it does not exist, an empty result list is returned. - Valid FTP connection to the destination FTP Server - The full or relative path to destination folder on the remote FTP Server - Only Update mode is currently implemented - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track download progress. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Transfer the specified directory from the source FTP Server onto the remote FTP Server asynchronously using the FXP protocol. - You will need to create a valid connection to your remote FTP Server before calling this method. - In Update mode, we will only transfer missing files and preserve any extra files on the remote FTP Server. This is useful when you want to simply transfer missing files from an FTP directory. - Currently Mirror mode is not implemented. - Only transfers the files and folders matching all the rules provided, if any. - All exceptions during transfer are caught, and the exception is stored in the related FtpResult object. - - The full or relative path to the folder on the source FTP Server. If it does not exist, an empty result list is returned. - Valid FTP connection to the destination FTP Server - The full or relative path to destination folder on the remote FTP Server - Only Update mode is currently implemented - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track download progress. - The token that can be used to cancel the entire process - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Get the first checksum algorithm mutually supported by both servers. - - - - - Gets the currently selected hash algorithm for the HASH command. - - - This feature is experimental. See this link for details: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - The flag or if there was a problem. - - - - - Gets the currently selected hash algorithm for the HASH command asynchronously. - - The token that can be used to cancel the entire process - The flag or if there was a problem. - - - - Sets the hash algorithm on the server to use for the HASH command. - - - If you specify an algorithm not listed in - a will be thrown - so be sure to query that list of Flags before - selecting a hash algorithm. Support for the - HASH command is experimental. Please see - the following link for more details: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - Hash Algorithm - Thrown if the selected algorithm is not available on the server - - - - - Sets the hash algorithm on the server to be used with the HASH command asynchronously. - - Hash algorithm to use - The token that can be used to cancel the entire process - Thrown if the selected algorithm is not available on the server - - - - Gets the hash of an object on the server using the currently selected hash algorithm. - - - Supported algorithms, if any, are available in the - property. You should confirm that it's not equal - to before calling this method - otherwise the server trigger a - due to a lack of support for the HASH command. You can - set the algorithm using the method and - you can query the server for the current hash algorithm - using the method. - - Full or relative path of the object to compute the hash for. - The hash of the file. - - Thrown if the property is , - the remote path does not exist, or the command cannot be executed. - - Path argument is null - Thrown when an unknown hash algorithm type is returned by the server - - - - - Parses the recieved hash value into the FtpHash object - - - - - Gets the hash of an object on the server using the currently selected hash algorithm asynchronously. - - - Supported algorithms, if any, are available in the - property. You should confirm that it's not equal - to before calling this method - otherwise the server trigger a - due to a lack of support for the HASH command. You can - set the algorithm using the method and - you can query the server for the current hash algorithm - using the method. - - The file you want the server to compute the hash for - The token that can be used to cancel the entire process - - Thrown if the property is , - the remote path does not exist, or the command cannot be executed. - - Path argument is null - Thrown when an unknown hash algorithm type is returned by the server - The hash of the file. - - - - Retrieves a checksum of the given file using the specified checksum algorithum, or using the first available algorithm that the server supports. - - - The algorithm used goes in this order: - 1. HASH command; server preferred algorithm. See - 2. MD5 / XMD5 / MMD5 commands - 3. XSHA1 command - 4. XSHA256 command - 5. XSHA512 command - 6. XCRC command - - Full or relative path of the file to checksum - Specify an algorithm that you prefer, or NONE to use the first available algorithm. If the preferred algorithm is not supported, a blank hash is returned. - object containing the value and algorithm. Use the property to - determine if this command was successful. s can be thrown from - the underlying calls. - - The command fails - - - - Retrieves a checksum of the given file using the specified checksum algorithum, or using the first available algorithm that the server supports. - - - The algorithm used goes in this order: - 1. HASH command; server preferred algorithm. See - 2. MD5 / XMD5 / MMD5 commands - 3. XSHA1 command - 4. XSHA256 command - 5. XSHA512 command - 6. XCRC command - - Full or relative path of the file to checksum - The token that can be used to cancel the entire process - Specify an algorithm that you prefer, or NONE to use the first available algorithm. If the preferred algorithm is not supported, a blank hash is returned. - object containing the value and algorithm. Use the property to - determine if this command was successful. s can be thrown from - the underlying calls. - - The command fails - - - - Gets the MD5 hash of the specified file using MD5. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the MD5 hash. - The command fails - - - - Gets the MD5 hash of the specified file using MD5 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the MD5 hash. - The command fails - - - - Get the CRC value of the specified file. This is a non-standard extension of the protocol - and may throw a FtpCommandException if the server does not support it. - - The path of the file you'd like the server to compute the CRC value for. - The response from the server, typically the XCRC value. FtpCommandException thrown on error - The command fails - - - - Gets the CRC hash of the specified file using XCRC asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the CRC hash. - The command fails - - - - Gets the MD5 hash of the specified file using XMD5. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the MD5 hash. - The command fails - - - - Gets the MD5 hash of the specified file using XMD5 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the MD5 hash. - The command fails - - - - Gets the SHA-1 hash of the specified file using XSHA1. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the SHA-1 hash. - The command fails - - - - Gets the SHA-1 hash of the specified file using XSHA1 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the SHA-1 hash. - The command fails - - - - Gets the SHA-256 hash of the specified file using XSHA256. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the SHA-256 hash. - The command fails - - - - Gets the SHA-256 hash of the specified file using XSHA256 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the SHA-256 hash. - The command fails - - - - Gets the SHA-512 hash of the specified file using XSHA512. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the SHA-512 hash. - The command fails - - - - Gets the SHA-512 hash of the specified file using XSHA512 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the SHA-512 hash. - The command fails - - - - Returns information about a file system object. Returns null if the server response can't - be parsed or the server returns a failure completion code. The error for a failure - is logged with FtpTrace. No exception is thrown on error because that would negate - the usefulness of this method for checking for the existence of an object. - - The path of the file or folder - Get the accurate modified date using another MDTM command - A FtpListItem object - - - - Return information about a remote file system object asynchronously. - - - You should check the property for the - flag before calling this method. Failing to do so will result in an InvalidOperationException - being thrown when the server does not support machine listings. Returns null if the server response can't - be parsed or the server returns a failure completion code. The error for a failure - is logged with FtpTrace. No exception is thrown on error because that would negate - the usefulness of this method for checking for the existence of an object. - Path of the item to retrieve information about - Get the accurate modified date using another MDTM command - The token that can be used to cancel the entire process - Thrown if the server does not support this Capability - A if the command succeeded, or null if there was a problem. - - - - Gets a file listing from the server from the current working directory. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - An array of FtpListItem objects - - - - - Gets a file listing from the server. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path of the directory to list - An array of FtpListItem objects - - - - - Gets a file listing from the server. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path of the directory to list - Options that dictate how a list is performed and what information is gathered. - An array of FtpListItem objects - - - - - Get the records of a file listing and retry if temporary failure. - - - - - Gets a file listing from the server asynchronously. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path to list - Options that dictate how the list operation is performed - The token that can be used to cancel the entire process - An array of items retrieved in the listing - - - - Get the records of a file listing and retry if temporary failure. - - - - - Gets a file listing from the server asynchronously. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path to list - The token that can be used to cancel the entire process - An array of items retrieved in the listing - - - - Gets a file listing from the server asynchronously. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - An array of items retrieved in the listing - - - - Recursive method of GetListing, to recurse through directories on servers that do not natively support recursion. - Automatically called by GetListing where required. - Uses flat recursion instead of head recursion. - - The path of the directory to list - Options that dictate how a list is performed and what information is gathered. - An array of FtpListItem objects - - - - Recursive method of GetListingAsync, to recurse through directories on servers that do not natively support recursion. - Automatically called by GetListingAsync where required. - Uses flat recursion instead of head recursion. - - The path of the directory to list - Options that dictate how a list is performed and what information is gathered. - An array of FtpListItem objects - - - - Returns a file/directory listing using the NLST command. - - A string array of file and directory names if any were returned. - - - - Returns a file/directory listing using the NLST command. - - The path of the directory to list - A string array of file and directory names if any were returned. - - - - - Returns a file/directory listing using the NLST command asynchronously - - The path of the directory to list - The token that can be used to cancel the entire process - An array of file and directory names if any were returned. - - - - Returns a file/directory listing using the NLST command asynchronously - - An array of file and directory names if any were returned. - - - - Used to improve performance of OpenPassiveDataStream. - Enhanced-passive mode is tried once, and if not supported, is not tried again. - - - - - Used to improve performance of GetFileSize. - SIZE command is tried, and if the server cannot send it in ASCII mode, we switch to binary each time you call GetFileSize. - However most servers will support ASCII, so we can get the file size without switching to binary, improving performance. - - - - - Used to improve performance of GetListing. - You can set this to true by setting the RecursiveList property. - - - - - Used to automatically dispose cloned connections after FXP transfer has ended. - - - - - These flags must be reset every time we connect, to allow for users to connect to - different FTP servers with the same client object. - - - - - These flags must be copied when we quickly clone the connection. - - - - - Used for internally synchronizing access to this - object from multiple threads - - - - - For usage by FTP proxies only - - - - - A list of asynchronous methods that are in progress - - - - - Control connection socket stream - - - - - Gets a value indicating if this object has already been disposed. - - - - - Gets the base stream for talking to the server via - the control connection. - - - - - Flags specifying which versions of the internet protocol to - support when making a connection. All addresses returned during - name resolution are tried until a successful connection is made. - You can fine tune which versions of the internet protocol to use - by adding or removing flags here. I.e., setting this property - to FtpIpVersion.IPv4 will cause the connection process to - ignore IPv6 addresses. The default value is ANY version. - - - - - Gets or sets the length of time in milliseconds - that must pass since the last socket activity - before calling - on the socket to test for connectivity. - Setting this interval too low will - have a negative impact on performance. Setting this - interval to 0 disables Polling all together. - The default value is 15 seconds. - - - - - Gets or sets a value indicating whether a test should be performed to - see if there is stale (unrequested data) sitting on the socket. In some - cases the control connection may time out but before the server closes - the connection it might send a 4xx response that was unexpected and - can cause synchronization errors with transactions. To avoid this - problem the method checks to see if there is any data - available on the socket before executing a command. On Azure hosting - platforms this check can cause an exception to be thrown. In order - to work around the exception you can set this property to false - which will skip the test entirely however doing so eliminates the - best effort attempt of detecting such scenarios. See this thread - for more details about the Azure problem: - https://netftp.codeplex.com/discussions/535879 - - - - - Gets a value indicating if the connection is alive - - - - - When this value is set to true (default) the control connection - is cloned and a new connection the server is established for the - data channel operation. This is a thread safe approach to make - asynchronous operations on a single control connection transparent - to the developer. - - - - - Gets or sets the length of time in milliseconds after last command - (NOOP or other) that a NOOP command is sent by . - This is called during downloading/uploading if - is false. Setting this - interval to 0 disables all together. - The default value is 0 (disabled). - - - - - When this value is set to true (default) the control connection - will set which features are available by executing the FEAT command - when the connect method is called. - - - - - Gets a value indicating if this control connection is a clone. This property - is used with data streams to determine if the connection should be closed - when the stream is closed. Servers typically only allow 1 data connection - per control connection. If you try to open multiple data connections this - object will be cloned for 2 or more resulting in N new connections to the - server. - - - - - Gets or sets the text encoding being used when talking with the server. The default - value is however upon connection, the client checks - for UTF8 support and if it's there this property is switched over to - . Manually setting this value overrides automatic detection - based on the FEAT list; if you change this value it's always used - regardless of what the server advertises, if anything. - - - - - The server to connect to - - - - - The port to connect to. If this value is set to 0 (Default) the port used - will be determined by the type of SSL used or if no SSL is to be used it - will automatically connect to port 21. - - - - - Credentials used for authentication - - - - - Gets or sets a value that controls the maximum depth - of recursion that will follow symbolic - links before giving up. You can also specify the value - to be used as one of the overloaded parameters to the - method. The default value is 20. Specifying - -1 here means indefinitely try to resolve a link. This is - not recommended for obvious reasons (stack overflow). - - - - - Client certificates to be used in SSL authentication process - - - - - Delegate used for resolving local address, used for active data connections - This can be used in case you're behind a router, but port forwarding is configured to forward the - ports from your router to your internal IP. In that case, we need to send the router's IP instead of our internal IP. - See example: FtpClient.GetPublicIP -> This uses Ipify api to find external IP - - - - - Ports used for Active Data Connection - - - - - Data connection type, default is AutoPassive which tries - a connection with EPSV first and if it fails then tries - PASV before giving up. If you know exactly which kind of - connection you need you can slightly increase performance - by defining a specific type of passive or active data - connection here. - - - - - Disconnect from the server without sending QUIT. This helps - work around IOExceptions caused by buggy connection resets - when closing the control connection. - - - - - Gets or sets the length of time in milliseconds to wait for a connection - attempt to succeed before giving up. Default is 15000 (15 seconds). - - - - - Gets or sets the length of time wait in milliseconds for data to be - read from the underlying stream. The default value is 15000 (15 seconds). - - - - - Gets or sets the length of time in milliseconds for a data connection - to be established before giving up. Default is 15000 (15 seconds). - - - - - Gets or sets the length of time in milliseconds the data channel - should wait for the server to send data. Default value is - 15000 (15 seconds). - - - - - Gets or sets a value indicating if should be set on - the underlying stream's socket. If the connection is alive, the option is - adjusted in real-time. The value is stored and the KeepAlive option is set - accordingly upon any new connections. The value set here is also applied to - all future data streams. It has no affect on cloned control connections or - data connections already in progress. The default value is false. - - - - - Gets the server capabilities represented by an array of capability flags - - - - - Get the hash types supported by the server, if any. This - is a recent extension to the protocol that is not fully - standardized and is not guaranteed to work. See here for - more details: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - - - - Type of SSL to use, or none. Default is none. Explicit is TLS, Implicit is SSL. - - - - - Indicates if data channel transfers should be encrypted. Only valid if - property is not equal to . - - - - - Indicates if the encryption should be disabled immediately after connecting using a CCC command. - This is useful when you have a FTP firewall that requires plaintext FTP, but your server mandates FTPS connections. - - - - - Encryption protocols to use. Only valid if EncryptionMode property is not equal to . - Default value is .NET Framework defaults from the class. - - - - - Whether to use SSL Buffering to speed up data transfer during FTP operations - - - - - Checks if FTPS/SSL encryption is currently active. - Useful to see if your server supports FTPS, when using FtpEncryptionMode.Auto. - - - - - Event is fired to validate SSL certificates. If this event is - not handled and there are errors validating the certificate - the connection will be aborted. - Not fired if ValidateAnyCertificate is set to true. - - - - - - Accept any SSL certificate received from the server and skip performing - the validation using the ValidateCertificate callback. - Useful for Powershell users. - - - - - Indicates if the certificate revocation list is checked during authentication. - Useful when you need to maintain the certificate chain validation, - but skip the certificate revocation check. - - - - - Gets the type of system/server that we're connected to. Typically begins with "WINDOWS" or "UNIX". - - - - - Gets the type of the FTP server software that we're connected to. - - - - - Gets the type of the FTP server handler. - This is automatically set based on the detected FTP server, if it is detected. - You can manually set this property to implement handling for a custom FTP server. - - - - - Gets the operating system of the FTP server that we're connected to. - - - - Gets the connection type - - - Gets the last reply received from the server - - - - Controls if the file listings are downloaded in Binary or ASCII mode. - - - - - File listing parser to be used. - Automatically calculated based on the type of the server, unless changed. - - - - - Culture used to parse file listings - - - - - Custom file listing parser to be used. - - - - - Callback format to implement your custom FTP listing line parser. - - The line from the listing - The server capabilities - The FTP client - Return an FtpListItem object if the line can be parsed, else return null - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - The timezone of the FTP server. If the server is in Tokyo with UTC+9 then set this to 9. - If the server returns timestamps in UTC then keep this 0. - - - - - Server timestamps are converted into the given timezone. - ServerTime will return the original timestamp. - LocalTime will convert the timestamp into your local machine's timezone. - UTC will convert the timestamp into UTC format (GMT+0). - You need to set TimeZone and LocalTimeZone (.NET core only) for these to work. - - - - - If true, increases performance of GetListing by reading multiple lines - of the file listing at once. If false then GetListing will read file - listings line-by-line. If GetListing is having issues with your server, - set it to false. - - The number of bytes read is based upon . - - - - - Bytes to read during GetListing. Only honored if is true. - - - - - Gets or sets the number of bytes transferred in a single chunk (a single FTP command). - Used by / and / - to transfer large files in multiple chunks. - - - - - Gets or sets the size of the file buffer when reading and writing files on the local file system. - Used by / and / - and all the other file and directory transfer methods. - - - - - Files within this size are read and written in a single call to the disk, thereby greatly increasing transfer performance. Measured in bytes. - Reduce this if you notice large memory consumption by FluentFTP. Set this to 0 to disable quick transfer. - - - - - Gets or sets the retry attempts allowed when a verification failure occurs during download or upload. - This value must be set to 1 or more. - - - - - Rate limit for uploads in kbyte/s. Set this to 0 for unlimited speed. - Honored by high-level API such as Upload(), Download(), UploadFile(), DownloadFile().. - - - - - Rate limit for downloads in kbytes/s. Set this to 0 for unlimited speed. - Honored by high-level API such as Upload(), Download(), UploadFile(), DownloadFile().. - - - - - Controls if zero-byte files should be downloaded or skipped. - If false, then no file is created/overwritten into the filesystem. - - - - - Controls if the high-level API uploads files in Binary or ASCII mode. - - - - - Controls if the high-level API downloads files in Binary or ASCII mode. - - - - - Controls if the UploadDirectory API deletes the excluded files when uploading in Mirror mode. - If true, then any files that are excluded will be deleted from the FTP server if they are - excluded from the local system. This is done to keep the server in sync with the local system. - But if it is false, the excluded files are not touched on the server, and simply ignored. - - - - - Controls if the DownloadDirectory API deletes the excluded files when downloading in Mirror mode. - If true, then any files that are excluded will be deleted from the local filesystem if they are - excluded from the FTP server. This is done to keep the local filesystem in sync with the FTP server. - But if it is false, the excluded files are not touched on the local filesystem, and simply ignored. - - - - - Controls if the FXP server-to-server file transfer API uses Binary or ASCII mode. - - - - - Controls how often the progress reports are sent during an FXP file transfer. - The default value is 1000 (1 second). - - - - - Controls if the HOST command is sent immediately after the handshake. - Useful when you are using shared hosting and you need to inform the - FTP server which domain you want to connect to. - - - - - Controls which domain is sent with the HOST command. - If this is null, then the Host parameter of the FTP client is sent. - - - - - Connects to the specified URI. If the path specified by the URI ends with a - / then the working directory is changed to the path specified. - - The URI to parse - Indicates if a ssl certificate should be validated when using FTPS schemes - FtpClient object - - - - Connects to the specified URI. If the path specified by the URI ends with a - / then the working directory is changed to the path specified. - - The URI to parse - FtpClient object - - - - Calculate you public internet IP using the ipify service. Returns null if cannot be calculated. - - Public IP Address - - - - When last command was sent (NOOP or other), for having - respect the . - - - - - Executes a command - - The command to execute - The servers reply to the command - - - - - Performs an asynchronous execution of the specified command - - The command to execute - The token that can be used to cancel the entire process - The servers reply to the command - - - - Sends the NOOP command according to (effectively a no-op if 0). - Please call as needed to read the "OK" command sent by the server and prevent stale data on the socket. - Note that response is not guaranteed by all FTP servers when sent during file transfers. - - true if NOOP command was sent - - - - Sends the NOOP command according to (effectively a no-op if 0). - Please call as needed to read the "OK" command sent by the server and prevent stale data on the socket. - Note that response is not guaranteed by all FTP servers when sent during file transfers. - - - true if NOOP command was sent - - - - Retrieves a reply from the server. Do not execute this method - unless you are sure that a reply has been sent, i.e., you - executed a command. Doing so will cause the code to hang - indefinitely waiting for a server reply that is never coming. - - FtpReply representing the response from the server - - - - - Decodes the given FTP response string into a FtpReply, seperating the FTP return code and message. - Returns true if the string was decoded correctly or false if it is not a standard format FTP response. - - - - - Retrieves a reply from the server. Do not execute this method - unless you are sure that a reply has been sent, i.e., you - executed a command. Doing so will cause the code to hang - indefinitely waiting for a server reply that is never coming. - - FtpReply representing the response from the server - - - - - Opens the specified type of passive data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - A data stream ready to be used - - - - Opens the specified type of passive data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - A data stream ready to be used - - - - Parse the host and port number from an EPSV response - - - - - Parse the host and port number from an PASV or PASVEX response - - - - - Returns the ip address to be sent to the server for the active connection - - - - - - - Opens the specified type of active data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - A data stream ready to be used - - - - Opens the specified type of active data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - The token that can be used to cancel the entire process - A data stream ready to be used - - - - Opens a data stream. - - The command to execute that requires a data stream - Restart location in bytes for file transfer - The data stream. - - - - Opens a data stream. - - The command to execute that requires a data stream - Restart location in bytes for file transfer - The token that can be used to cancel the entire process - The data stream. - - - - Disconnects a data stream - - The data stream to close - - - - Open a local port on the given ActivePort or a random port. - - - - - - Opens the specified file for reading - - The full or relative path of the file - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - Resume location - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - Resume location - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - Resume location - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - Resume location - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for reading the file on the server - - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - ASCII/Binary - Resume location - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - The token that can be used to cancel the entire process - A stream for reading the file on the server - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - ASCII/Binary - Resume location - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - ASCII/Binary - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - Resume location - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - The token that can be used to cancel the entire process - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - A stream for writing to the file on the server - - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - ASCII/Binary - A stream for writing to the file on the server - - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for writing to the file on the server - - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. asynchronously - - Full or relative path of the file - ASCII/Binary - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. asynchronously - - Full or relative path of the file - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file for appending. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - The full or relative path to the file to be opened - A stream for writing to the file on the server - - - - - Opens the specified file for appending. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - The full or relative path to the file to be opened - ASCII/Binary - A stream for writing to the file on the server - - - - - Opens the specified file for appending. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - The full or relative path to the file to be opened - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for writing to the file on the server - - - - - Opens the specified file to be appended asynchronously - - Full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file to be appended asynchronously - - Full or relative path of the file - ASCII/Binary - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file to be appended asynchronously - - Full or relative path of the file - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Sets the data type of information sent over the data stream - - ASCII/Binary - - - Internal method that handles actually setting the data type. - Thrown when a FTP Command error condition occurs. - Thrown when a FTP error condition occurs. - ASCII/Binary. - This method doesn't do any locking to prevent recursive lock scenarios. Callers must do their own locking. - - - - Sets the data type of information sent over the data stream asynchronously - - ASCII/Binary - The token that can be used to cancel the entire process - - - - Sets the data type of information sent over the data stream asynchronously - - ASCII/Binary - The token that can be used to cancel the entire process - - - - If reverse is false, converts the date provided by the FTP server into the timezone required locally. - If reverse is true, converts the local timezone date into the date required by the FTP server. - - Affected by properties: TimeConversion, TimeZone, LocalTimeZone. - - - - - Performs a bitwise and to check if the specified - flag is set on the property. - - The to check for - True if the feature was found, false otherwise - - - - Retrieves the delegate for the specified IAsyncResult and removes - it from the m_asyncmethods collection if the operation is successful - - Type of delegate to retrieve - The IAsyncResult to retrieve the delegate for - The delegate that generated the specified IAsyncResult - - - - Ensure a relative path is absolute by appending the working dir - - - - - Ensure a relative path is absolute by appending the working dir - - - - - Disables UTF8 support and changes the Encoding property - back to ASCII. If the server returns an error when trying - to turn UTF8 off a FtpCommandException will be thrown. - - - - - Data shouldn't be on the socket, if it is it probably means we've been disconnected. - Read and discard whatever is there and optionally close the connection. - Returns the stale data as text, if any, or null if none was found. - - close the connection? - even read encrypted data? - trace data to logs? - - - - Data shouldn't be on the socket, if it is it probably means we've been disconnected. - Read and discard whatever is there and optionally close the connection. - Returns the stale data as text, if any, or null if none was found. - - close the connection? - even read encrypted data? - trace data to logs? - The token that can be used to cancel the entire process - - - - Checks if this FTP/FTPS connection is made through a proxy. - - - - - Returns true if the file passes all the rules - - - - - Add a custom listener here to get events every time a message is logged. - - - - - Log a function call with relevant arguments - - The name of the API function - The args passed to the function - - - - Log a message - - The type of tracing event - The message to write - - - - Log a message, adding an automatic prefix to the message based on the `eventType` - - The type of tracing event - The message to write - - - - Interface for the FtpClient class. - For detailed documentation of the methods, please see the FtpClient class or check the Wiki on the FluentFTP Github project. - - - - - Server features - - - - - This server said it doesn't support anything! - - - - - Supports the MLST command - - - - - Supports the SIZE command - - - - - Supports the MDTM command - - - - - Supports download/upload stream resumes - - - - - Supports UTF8 - - - - - PRET Command used in distributed ftp server software DrFTPD - - - - - Server supports the MFMT command for setting the - modified date of an object on the server - - - - - Server supports the MFCT command for setting the - created date of an object on the server - - - - - Server supports the MFF command for setting certain facts - about file system objects. It typically allows you to modify - the last modification time, creation time, UNIX group/owner/mode of a file. - - - - - Server supports the STAT command - - - - - Support for the HASH command - - - - - Support for the MD5 command - - - - - Support for the XMD5 command - - - - - Support for the XCRC command - - - - - Support for the XSHA1 command - - - - - Support for the XSHA256 command - - - - - Support for the XSHA512 command - - - - - Support for the EPSV file-transfer command - - - - - Support for the CPSV command - - - - - Support for the NOOP command - - - - - Support for the CLNT command - - - - - Support for the SSCN command - - - - - Support for the SITE MKDIR (make directory) server-specific command for ProFTPd - - - - - Support for the SITE RMDIR (remove directory) server-specific command for ProFTPd - - - - - Support for the SITE UTIME server-specific command for ProFTPd - - - - - Support for the SITE SYMLINK server-specific command for ProFTPd - - - - - Support for the AVBL (get available space) server-specific command for Serv-U - - - - - Support for the THMB (get image thumbnail) server-specific command for Serv-U - - - - - Support for the RMDA (remove directory) server-specific command for Serv-U - - - - - Support for the DSIZ (get directory size) server-specific command for Serv-U - - - - - Support for the HOST (get host) server-specific command for Serv-U - - - - - Support for the CCC (Clear Command Channel) command, which makes a secure FTP channel revert back to plain text. - - - - - Support for the MODE Z (compression enabled) command, which says that the server supports ZLIB compression for all transfers - - - - - Support for the LANG (language negotiation) command. - - - - - Support for the MMD5 (multiple MD5 hash) command. - - - - - Flags that control how file comparison is performed. If you are unsure what to use, set it to Auto. - - - - - Compares the file size and the checksum of the file (using the first supported hash algorithm). - The local and remote file sizes and checksums should exactly match for the file to be considered equal. - - - - - Compares the file size. - Both file sizes should exactly match for the file to be considered equal. - - - - - Compares the date modified of the file. - Both dates should exactly match for the file to be considered equal. - - - - - Compares the checksum or hash of the file using the first supported hash algorithm. - Both checksums should exactly match for the file to be considered equal. - - - - - The result of a file comparison operation. - - - - - Success. Local and remote files are exactly equal. - - - - - Failure. Local and remote files do not match. - - - - - Failure. Either the local or remote file does not exist. - - - - - Failure. Checksum verification is enabled and your server does not support any hash algorithm. - - - - - Data connection type - - - - - This type of data connection attempts to use the EPSV command - and if the server does not support EPSV it falls back to the - PASV command before giving up unless you are connected via IPv6 - in which case the PASV command is not supported. - - - - - Passive data connection. EPSV is a better - option if it's supported. Passive connections - connect to the IP address dictated by the server - which may or may not be accessible by the client - for example a server behind a NAT device may - give an IP address on its local network that - is inaccessible to the client. Please note that IPv6 - does not support this type data connection. If you - ask for PASV and are connected via IPv6 EPSV will - automatically be used in its place. - - - - - Same as PASV except the host supplied by the server is ignored - and the data connection is made to the same address that the control - connection is connected to. This is useful in scenarios where the - server supplies a private/non-routable network address in the - PASV response. It's functionally identical to EPSV except some - servers may not implement the EPSV command. Please note that IPv6 - does not support this type data connection. If you - ask for PASV and are connected via IPv6 EPSV will - automatically be used in its place. - - - - - Extended passive data connection, recommended. Works - the same as a PASV connection except the server - does not dictate an IP address to connect to, instead - the passive connection goes to the same address used - in the control connection. This type of data connection - supports IPv4 and IPv6. - - - - - This type of data connection attempts to use the EPRT command - and if the server does not support EPRT it falls back to the - PORT command before giving up unless you are connected via IPv6 - in which case the PORT command is not supported. - - - - - Active data connection, not recommended unless - you have a specific reason for using this type. - Creates a listening socket on the client which - requires firewall exceptions on the client system - as well as client network when connecting to a - server outside of the client's network. In addition - the IP address of the interface used to connect to the - server is the address the server is told to connect to - which, if behind a NAT device, may be inaccessible to - the server. This type of data connection is not supported - by IPv6. If you specify PORT and are connected via IPv6 - EPRT will automatically be used instead. - - - - - Extended active data connection, not recommended - unless you have a specific reason for using this - type. Creates a listening socket on the client - which requires firewall exceptions on the client - as well as client network when connecting to a - server outside of the client's network. The server - connects to the IP address it sees the client coming - from. This type of data connection supports IPv4 and IPv6. - - - - - Type of data transfer to do - - - - - ASCII transfer - - - - - Binary transfer - - - - - Controls how timestamps returned by the server are converted. - - - - - Returns the server timestamps in Server Time. No timezone conversion is performed. - - - - - Returns the server timestamps in Local Time. - Ensure that the TimeZone property is correctly set to the server's timezone. - If you are on .NET Core/.NET Standard, you need to set the LocalTimeZone property for this to work. - - - - - Returns the server timestamps in UTC (Coordinated Universal Time). - Ensure that the TimeZone property is correctly set to the server's timezone. - - - - - Defines the type of encryption to use - - - - - Plain text. - - - - - FTPS encryption is used from the start of the connection, port 990. - - - - - Connection starts in plain text and FTPS encryption is enabled - with the AUTH command immediately after the server greeting. - - - - - FTPS encryption is used if supported by the server, otherwise it falls back to plaintext FTP communication. - - - - - Defines how multi-file processes should handle a processing error. - - & Cannot Be Combined - - - - No action is taken upon errors. The method absorbs the error and continues. - - - - - If any files have completed successfully (or failed after a partial download/upload) then should be deleted. - This will simulate an all-or-nothing transaction downloading or uploading multiple files. If this option is not - combined with or then the method will - continue to process all items whether if they are successful or not and then delete everything if a failure was - encountered at any point. - - - - - The method should stop processing any additional files and immediately return upon encountering an error. - Cannot be combined with - - - - - The method should stop processing any additional files and immediately throw the current error. - Cannot be combined with - - - - - Type of file system of object - - - - - The default subtype. - - - - - A sub directory within the listed directory. - (Only set when machine listing is available and type is 'dir') - - - - - The self directory. - (Only set when machine listing is available and type is 'cdir') - - - - - The parent directory. - (Only set when machine listing is available and type is 'pdir') - - - - - Type of file system of object - - - - - A file - - - - - A directory - - - - - A symbolic link - - - - - Determines how we handle downloading and uploading folders - - - - - Dangerous but useful method! - Uploads/downloads all the missing files to update the server/local filesystem. - Deletes the extra files to ensure that the target is an exact mirror of the source. - - - - - Safe method! - Uploads/downloads all the missing files to update the server/local filesystem. - - - - - Different types of hashing algorithms for computing checksums. - - - - - HASH command is not supported - - - - - SHA-1 - - - - - SHA-256 - - - - - SHA-512 - - - - - MD5 - - - - - CRC - - - - - IP Versions to allow when connecting - to a server. - - - - - Internet Protocol Version 4 - - - - - Internet Protocol Version 6 - - - - - Allow any supported version - - - - - Flags that can control how a file listing is performed. If you are unsure what to use, set it to Auto. - - - - - Tries machine listings (MDTM command) if supported, - and if not then falls back to OS-specific listings (LIST command) - - - - - Load the modify date using MDTM when it could not - be parsed from the server listing. This only pertains - to servers that do not implement the MLSD command. - - - - - Load the file size using the SIZE command when it - could not be parsed from the server listing. This - only pertains to servers that do not support the - MLSD command. - - - - - Combines the Modify and Size flags - - - - - Show hidden/dot files. This only pertains to servers - that do not support the MLSD command. This option - makes use the non standard -a parameter to LIST to - tell the server to show hidden files. Since it's a - non-standard option it may not always work. MLSD listings - have no such option and whether or not a hidden file is - shown is at the discretion of the server. - - - - - Force the use of OS-specific listings (LIST command) even if - machine listings (MLSD command) are supported by the server - - - - - Use the NLST command instead of LIST for a reliable file listing - - - - - Force the use of the NLST command (the slowest mode) even if machine listings - and OS-specific listings are supported by the server - - - - - Try to dereference symbolic links, and stored the linked file/directory in FtpListItem.LinkObject - - - - - Sets the ForceList flag and uses `LS' instead of `LIST' as the - command for getting a directory listing. This option overrides - ForceNameList and ignores the AllFiles flag. - - - - - Gets files within subdirectories as well. Adds the -r option to the LIST command. - Some servers may not support this feature. - - - - - Do not retrieve path when no path is supplied to GetListing(), - instead just execute LIST with no path argument. - - - - - Include two extra items into the listing, for the current directory (".") - and the parent directory (".."). Meaningless unless you want these two - items for some reason. - - - - - Force the use of STAT command for getting file listings - - - - - Determines how we handle partially downloaded files - - - - - Restart the download of a file if it is partially downloaded. - Overwrites the file if it exists on disk. - - - - - Resume the download of a file if it is partially downloaded. - Appends to the file if it exists, by checking the length and adding the missing data. - If the file doesn't exist on disk, a new file is created. - - - - - Blindly skip downloading the file if it exists on disk, without any more checks. - This is only included to be compatible with legacy behaviour. - - - - - Defines the operating system of the FTP server. - - - - - Unknown operating system - - - - - Definitely Windows or Windows Server - - - - - Definitely Unix or AIX-based server - - - - - Definitely VMS or OpenVMS server - - - - - Definitely IBM OS/400 server - - - - - Definitely IBM z/OS server - - - - - Definitely SUN OS/Solaris server - - - - - If the value is exactly equal to X - - - - - If the value is anything except for X - - - - - If the value is less than X - - - - - If the value is less than or equal to X - - - - - If the value is more than X - - - - - If the value is more than or equal to X - - - - - If the value is between the range of X and Y - - - - - If the value is outside the range of X and Y - - - - - The type of response the server responded with - - - - - Use the custom parser that you have set on the FtpClient object (ListingCustomParser property) - - - - - Automatically detect the file listing parser to use based on the FTP server (SYST command). - - - - - Machine listing parser, works on any FTP server supporting the MLST/MLSD commands. - - - - - File listing parser for Windows/IIS. - - - - - File listing parser for Unix. - - - - - Alternate parser for Unix. Use this if the default one does not work. - - - - - File listing parser for Vax/VMS/OpenVMS. - - - - - File listing parser for IBM OS400. - - - - - File listing parser for Tandem/Nonstop Guardian OS. - - - - - Types of file permissions - - - - - No access - - - - - Executable - - - - - Writable - - - - - Readable - - - - - This enum is obsolete. Please use FtpRemoteExists instead. - - - - - Defines the behavior for uploading/downloading files that already exist - - - - - Do not check if the file exists. A bit faster than the other options. - Only use this if you are SURE that the file does not exist on the server. - Otherwise it can cause the UploadFile method to hang due to filesize mismatch. - - - - - Skip the file if it exists, without any more checks. - - - - - Overwrite the file if it exists. - - - - - Append to the file if it exists, by checking the length and adding the missing data. - - - - - Append to the file, but don't check if it exists and add missing data. - This might be required if you don't have permissions on the server to list files in the folder. - Only use this if you are SURE that the file does not exist on the server otherwise it can cause the UploadFile method to hang due to filesize mismatch. - - - - - The type of response the server responded with - - - - - No response - - - - - Success - - - - - Success - - - - - Success - - - - - Temporary failure - - - - - Permanent failure - - - - - Determines how SSL Buffering is handled - - - - - Enables buffering in all cases except when using FTP proxies. - - - - - Always disables SSL Buffering to reduce FTPS connectivity issues. - - - - - Always enables SSL Buffering to massively speed up FTPS operations. - - - - - Defines the type of the FTP server software. - Add constants here as you add detection scripts for individual server types. - - - - - Unknown FTP server software - - - - - Definitely PureFTPd server - - - - - Definitely VsFTPd server - - - - - Definitely ProFTPD server - - - - - Definitely FileZilla server - - - - - Definitely OpenVMS server - - - - - Definitely Windows CE FTP server - - - - - Definitely WuFTPd server - - - - - Definitely GlobalScape EFT server - - - - - Definitely HP NonStop/Tandem server - - - - - Definitely Serv-U server - - - - - Definitely Cerberus FTP server - - - - - Definitely Windows Server/IIS FTP server - - - - - Definitely CrushFTP server - - - - - Definitely glFTPd server - - - - - Definitely Homegate FTP server - - - - - Definitely BFTPd server - - - - - Definitely FTP2S3 gateway server - - - - - Definitely XLight FTP server - - - - - Definitely Sun OS Solaris FTP server - - - - - Definitely IBM z/OS FTP server - - - - - Types of special UNIX permissions - - - - - No special permissions are set - - - - - Sticky bit is set - - - - - SGID bit is set - - - - - SUID bit is set - - - - - The result of an upload or download operation - - - - - The upload or download failed with an error transfering, or the source file did not exist - - - - - The upload or download completed succesfully - - - - - The upload or download was skipped because the file already existed on the target - - - - - Defines the level of the tracing message. Depending on the framework version this is translated - to an equivalent logging level in System.Diagnostices (if available) - - - - - Used for logging Debug or Verbose level messages - - - - - Used for logging Informational messages - - - - - Used for logging non-fatal or ignorable error messages - - - - - Used for logging Error messages that may need investigation - - - - - Defines if additional verification and actions upon failure that - should be performed when uploading/downloading files using the high-level APIs. Ignored if the - FTP server does not support any hashing algorithms. - - - - - No verification of the file is performed - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then we retry the download/upload - a specified amount of times before giving up. (See ) - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then the failed file will be deleted. - If combined with , then - the deletion will occur if it fails upon the final retry. - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then an exception will be thrown. - If combined with , then the throw will - occur upon the failure of the final retry, and/or if combined with - the method will throw after the deletion is processed. - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then the method returns false and no other action is taken. - - - - - Exception triggered on FTP authentication failures - - - - - Initializes a new instance of a FtpAuthenticationException - - Status code - Associated message - - - - Initializes a new instance of a FtpAuthenticationException - - The FtpReply to build the exception from - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception triggered on FTP command failures - - - - - Gets the completion code associated with the response - - - - - The type of response received from the last command executed - - - - - Initializes a new instance of a FtpResponseException - - Status code - Associated message - - - - Initializes a new instance of a FtpResponseException - - The FtpReply to build the exception from - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - FTP related error - - - - - Initializes a new instance of the class. - - The error message - - - - Initializes a new instance of the class with an inner exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception thrown by FtpListParser when parsing of FTP directory listing fails. - - - - - Creates a new FtpListParseException. - - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception is thrown by FtpSocketStream when there is no FTP server socket to connect to. - - - - - Creates a new FtpMissingSocketException. - - The original exception. - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception is thrown when TLS/SSL encryption could not be negotiated by the FTP server. - - - - - Default constructor - - - - - Custom error message - - Error message - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Event is fired when a SSL certificate needs to be validated - - The control connection that triggered the event - Event args - - - - Event fired if a bad SSL certificate is encountered. This even is used internally; if you - don't have a specific reason for using it you are probably looking for FtpSslValidation. - - - - - - - Event args for the FtpSslValidationError delegate - - - - - The certificate to be validated - - - - - The certificate chain - - - - - Validation errors, if any. - - - - - Gets or sets a value indicating if this certificate should be accepted. The default - value is false. If the certificate is not accepted, an AuthenticationException will - be thrown. - - - - - A connection to the FTP server where the file or folder is currently stored - - - - - A connection to the destination FTP server where you want to create the file or folder - - - - - A connection to the destination FTP server used to track progress while transfer is going on. - - - - - Gets a value indicating if this object has already been disposed. - - - - - Closes an FXP connection by disconnecting and disposing off the FTP clients that are - cloned for this FXP connection. Manually created FTP clients are untouched. - - - - - Represents a computed hash of an object - on the FTP server. See the following link - for more information: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - - - - Gets the algorithm that was used to compute the hash - - - - - Gets the computed hash returned by the server - - - - - Gets a value indicating if this object represents a - valid hash response from the server. - - - - - Computes the hash for the specified file and compares - it to the value in this object. CRC hashes are not supported - because there is no built-in support in the .net framework and - a CRC implementation exceeds the scope of this project. If you - attempt to call this on a CRC hash a will - be thrown. - - The file to compute the hash for - True if the computed hash matches what's stored in this object. - Thrown if called on a CRC Hash - - - - Computes the hash for the specified stream and compares - it to the value in this object. CRC hashes are not supported - because there is no built-in support in the .net framework and - a CRC implementation exceeds the scope of this project. If you - attempt to call this on a CRC hash a will - be thrown. - - The stream to compute the hash for - True if the computed hash matches what's stored in this object. - Thrown if called on a CRC Hash - - - - Creates an empty instance. - - - - - Helper class to convert FtpHashAlgorithm - - - - - Get FtpHashAlgorithm from it's string representation - - Name of the hash algorithm - The FtpHashAlgorithm - - - - Get string representation of FtpHashAlgorithm - - FtpHashAlgorithm to be converted into string - Name of the hash algorithm - - - - Checks if the given listing is a valid IBM OS/400 file listing - - - - - Parses IBM OS/400 format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the last modified date from IBM OS/400 format listings - - - - - Parses MLSD/MLST format listings - - A line from the listing - Server capabilities - The FTP client - FtpListItem if the item is able to be parsed - - - - Parses the date modified field from MLSD/MLST format listings - - - - - Parses the file size field from MLSD/MLST format listings - - - - - Parses the permissions from MLSD/MLST format listings - - - - - Checks if the given listing is a valid NonStop file listing - - - - - Parses NonStop format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the directory type and file size from NonStop format listings - - - - - Parses the last modified date from NonStop format listings - - - - - Checks if the given listing is a valid Unix file listing - - - - - Parses Unix format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the permissions from Unix format listings - - - - - Parses the link count from Unix format listings - - - - - Parses the owner and group permissions from Unix format listings - - - - - Parses the file size from Unix format listings - - - - - Parses day-of-month from Unix format listings - - - - - Parses the file or folder name from Unix format listings - - - - - Parses the last modified date from Unix format listings - - - - - Parses the last modified year from Unix format listings - - - - - Parses the last modified date from Unix format listings - - - - - Parses Unix format listings with alternate parser - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Checks if the given listing is a valid VMS file listing - - - - - Parses Vax/VMS format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the file size from Vax/VMS format listings - - - - - Parses the owner and group permissions from Vax/VMS format listings - - - - - Parses the permissions from Vax/VMS format listings - - - - - Parses the last modified date from Vax/VMS format listings - - - - - Checks if the given listing is a valid IIS/DOS file listing - - - - - Parses IIS/DOS format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the file or folder name from IIS/DOS format listings - - - - - Parses the file size and checks if the item is a directory from IIS/DOS format listings - - - - - Parses the last modified date from IIS/DOS format listings - - - - - Represents a file system object on the server - - - - - - Blank constructor, you will need to fill arguments manually. - - NOTE TO USER : You should not need to construct this class manually except in advanced cases. Typically constructed by GetListing(). - - - - - Constructor with mandatory arguments filled. - - NOTE TO USER : You should not need to construct this class manually except in advanced cases. Typically constructed by GetListing(). - - - - - Gets the type of file system object. - - - - - Gets the sub type of file system object. - - - - - Gets the full path name to the file or folder. - - - - - Gets the name of the file or folder. Does not include the full path. - - - - - Gets the target a symbolic link points to. - - - - - Gets the number of links pointing to this file. Only supplied by Unix servers. - - - - - Gets the object that the LinkTarget points to. This property is null unless you pass the - flag in which case GetListing() will try to resolve - the target itself. - - - - - Gets the last write time of the object after timezone conversion (if enabled). - - - - - Gets the created date of the object after timezone conversion (if enabled). - - - - - Gets the last write time of the object before any timezone conversion. - - - - - Gets the created date of the object before any timezone conversion. - - - - - Gets the size of the object. - - - - - Gets special UNIX permissions such as Sticky, SUID and SGID. - - - - - Gets the owner permissions. - - - - - Gets the group permissions. - - - - - Gets the others permissions. - - - - - Gets the raw string received for the file permissions. - Use this if the other properties are blank/invalid. - - - - - Gets the file permissions in the CHMOD format. - - - - - Gets the raw string received for the file's GROUP permissions. - Use this if the other properties are blank/invalid. - - - - - Gets the raw string received for the file's OWNER permissions. - Use this if the other properties are blank/invalid. - - - - - Gets the input string that was parsed to generate the - values in this object. - - - - - Returns a string representation of this object and its properties - - A string representing this object - - - - Parses a line from a file listing using the first successful parser, or the specified parser. - Returns an FtpListItem object representing the parsed line, or null if the line was unable to be parsed. - - - - - the FTP connection that owns this parser - - - - - current parser, or parser set by user - - - - - parser calculated based on system type (SYST command) - - - - - if we have detected that the current parser is valid - - - - - Is the version number returned as part of the filename? - - Some VMS FTP servers do not permit a file to be deleted unless - the filename includes the version number. Note that directories are - never returned with the version number. - - - - - Initializes a new instance of the class. - - An existing object - - - - Try to auto-detect which parser is suitable given a system string. - - - - - Parse raw file from server into a file object, using the currently active parser. - - - - - Validate if the current parser is correct, or if another parser seems more appropriate. - - - - - Validate if the current parser is correct - - - - - The host IP address or URL of the FTP server - - - - - The FTP username and password used to login - - - - - A working Encryption Mode found for this profile - - - - - A working Ssl Protocol setting found for this profile - - - - - A working Data Connection Type found for this profile - - - - - A working Encoding setting found for this profile - - - - - A working Timeout setting found for this profile, or 0 if default value should be used - - - - - A working SocketPollInterval setting found for this profile, or 0 if default value should be used - - - - - A working RetryAttempts setting found for this profile, or 0 if default value should be used - - - - - Generates valid C# code for this connection profile. - - - - - - Class to report FTP file transfer progress during upload or download of files - - - - - A value between 0-100 indicating percentage complete, or -1 for indeterminate. - Used to track the progress of an individual file transfer. - - - - - A value indicating how many bytes have been transferred. - When unable to calculate percentage, having the partial byte count may help in providing some feedback. - - - - - A value representing the current Transfer Speed in Bytes per seconds. - Used to track the progress of an individual file transfer. - - - - - A value representing the calculated 'Estimated time of arrival'. - Used to track the progress of an individual file transfer. - - - - - Stores the absolute remote path of the the current file being transfered. - - - - - Stores the absolute local path of the the current file being transfered. - - - - - Stores the index of the the file in the listing. - Only used when transfering multiple files or an entire directory. - - - - - Stores the total count of the files to be transfered. - Only used when transfering multiple files or an entire directory. - - - - - Create a new FtpProgress object for meta progress info. - - - - - Create a new FtpProgress object for individual file transfer progress. - - - - - Convert Transfer Speed (bytes per second) in human readable format - - - - - Create a new FtpProgress object for a file transfer and calculate the ETA, Percentage and Transfer Speed. - - - - - Represents a reply to an event on the server - - - - - The type of response received from the last command executed - - - - - The status code of the response - - - - - The message, if any, that the server sent with the response - - - - - Informational messages sent from the server - - - - - General success or failure of the last command executed - - - - - Gets the error message including any informational output - that was sent by the server. Sometimes the final response - line doesn't contain anything informative as to what was going - on with the server. Instead it may send information messages so - in an effort to give as meaningful as a response as possible - the informational messages will be included in the error. - - - - - Stores the result of a file transfer when UploadDirectory or DownloadDirectory is used. - - - - - Returns true if the file was downloaded, false if it was uploaded. - - - - - Gets the type of file system object. - - - - - Gets the size of the file. - - - - - Gets the name and extension of the file. - - - - - Stores the absolute remote path of the the current file being transfered. - - - - - Stores the absolute local path of the the current file being transfered. - - - - - Gets the error that occuring during transfering this file, if any. - - - - - Returns true if the file was downloaded/uploaded, or the file was already existing with the same file size. - - - - - Was the file skipped? - - - - - Was the file skipped due to failing the rule condition? - - - - - Was there an error during transfer? You can read the Exception property for more details. - - - - - Convert this result to a FTP list item. - - - - - Used for transaction logging and debug information. - - - - - Should the trace listeners be flushed immediately after writing to them? - - - - - Should the log entries be written with a prefix of "FluentFTP"? - Useful if you have a single TraceListener shared across multiple libraries. - - - - - Add a TraceListner to the collection. You can use one of the predefined - TraceListeners in the System.Diagnostics namespace, such as ConsoleTraceListener - for logging to the console, or you can write your own deriving from - System.Diagnostics.TraceListener. - - The TraceListener to add to the collection - - - - Remove the specified TraceListener from the collection - - The TraceListener to remove from the collection. - - - - Should the function calls be logged in Verbose mode? - - - - - Should the FTP server IP addresses be included in the logs? - - - - - Should the FTP usernames be included in the logs? - - - - - Should the FTP passwords be included in the logs? - - - - - Should we trace at all? - - - - - Write to the TraceListeners - - The message to write - - - - Write to the TraceListeners - - The message to write - - - - Write to the TraceListeners - - The type of tracing event - The message to write - - - - Write to the TraceListeners, for the purpose of logging a API function call - - The name of the API function - The args passed to the function - - - - Write to the TraceListeners - - The type of tracing event - A formattable string to write - - - - A FTP client with a user@host proxy identification, that works with Blue Coat FTP Service servers. - - The 'blue coat variant' forces the client to wait for a 220 FTP response code in - the handshake phase. - - - - A FTP client with a user@host proxy identification. - Proxy information - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - Redefine the first dialog: auth with proxy information - - - A FTP client with a HTTP 1.1 proxy implementation. - - - A FTP client with a HTTP 1.1 proxy implementation - Proxy information - - - Redefine the first dialog: HTTP Frame for the HTTP 1.1 Proxy - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - - Connects to the server using an existing - - The existing socket stream - - - - Connects to the server using an existing - - The existing socket stream - - - - Connects to the server using an existing - - The existing socket stream - Host name - Port number - IP version to use - - - - Connects to the server using an existing - - The existing socket stream - Host name - Port number - IP version to use - IP version to use - - - - Abstraction of an FtpClient with a proxy - - - - The proxy connection info. - - - A FTP client with a HTTP 1.1 proxy implementation - Proxy information - - - Redefine connect for FtpClient : authentication on the Proxy - The socket stream. - - - Redefine connect for FtpClient : authentication on the Proxy - The socket stream. - Cancellation token. - - - A FTP client with a user@host proxy identification. - - - A FTP client with a user@host proxy identification. - Proxy information - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - Redefine the first dialog: auth with proxy information - - - POCO holding proxy information - - - Proxy host name - - - Proxy port - - - Proxy login credentials - - - - Only accept files that have the given extension, or exclude files of a given extension. - - - - - If true, only files of the given extension are uploaded or downloaded. If false, files of the given extension are excluded. - - - - - The extensions to match - - - - - Only accept files that have the given extension, or exclude files of a given extension. - - If true, only files of the given extension are uploaded or downloaded. If false, files of the given extension are excluded. - The extensions to match - - - - Checks if the files has the given extension, or exclude files of the given extension. - - - - - Only accept files whose names match the given regular expression(s), or exclude files that match. - - - - - If true, only items where one of the supplied regex pattern matches are uploaded or downloaded. - If false, items where one of the supplied regex pattern matches are excluded. - - - - - The files names to match - - - - - Only accept items that match one of the supplied regex patterns. - - If true, only items where one of the supplied regex pattern matches are uploaded or downloaded. If false, items where one of the supplied regex pattern matches are excluded. - The list of regex patterns to match. Only valid patterns are accepted and stored. If none of the patterns are valid, this rule is disabled and passes all objects. - - - - Checks if the FtpListItem Name does match any RegexPattern - - - - - Only accept files that have the given name, or exclude files of a given name. - - - - - If true, only files of the given name are uploaded or downloaded. If false, files of the given name are excluded. - - - - - The files names to match - - - - - Only accept files that have the given name, or exclude files of a given name. - - If true, only files of the given name are downloaded. If false, files of the given name are excluded. - The files names to match - - - - Checks if the files has the given name, or exclude files of the given name. - - - - - Only accept folders whose names match the given regular expression(s), or exclude folders that match. - - - - - If true, only folders where one of the supplied regex pattern matches are uploaded or downloaded. - If false, folders where one of the supplied regex pattern matches are excluded. - - - - - The files names to match - - - - - Only accept items that one of the supplied regex pattern. - - If true, only folders where one of the supplied regex pattern matches are uploaded or downloaded. If false, folders where one of the supplied regex pattern matches are excluded. - The list of regex patterns to match. Only valid patterns are accepted and stored. If none of the patterns are valid, this rule is disabled and passes all objects. - - - - Checks if the FtpListItem Name does match any RegexPattern - - - - - Only accept folders that have the given name, or exclude folders of a given name. - - - - - If true, only folders of the given name are uploaded or downloaded. - If false, folders of the given name are excluded. - - - - - The folder names to match - - - - - Only accept folders that have the given name, or exclude folders of a given name. - - If true, only folders of the given name are downloaded. If false, folders of the given name are excluded. - The folder names to match - - - - Checks if the folders has the given name, or exclude folders of the given name. - - - - - Base class used for all FTP Rules. Extend this class to create custom rules. - You only need to provide an implementation for IsAllowed, and add any custom arguments that you require. - - - - - Returns true if the object has passed this rules. - - - - - Returns true if the object has passed all the rules. - - - - - Only accept files that are of the given size, or within the given range of sizes. - - - - - Which operator to use - - - - - The first value, required for all operators - - - - - The second value, only required for BetweenRange and OutsideRange operators - - - - - Only accept files that are of the given size, or within the given range of sizes. - - Which operator to use - The first value, required for all operators - The second value, only required for BetweenRange and OutsideRange operators. - - - - Checks if the file is of the given size, or within the given range of sizes. - - - - - The base class used for all FTP server specific support. - You may extend this class to implement support for custom FTP servers. - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Return your FTP server's default capabilities. - Used if your server does not broadcast its capabilities using the FEAT command. - - - - - Return true if the path is an absolute path according to your server's convention. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Perform server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - All servers with server-specific handling and support are listed here. - Its possible you can connect to other FTP servers too. - - To add support for another standard FTP server: - 1) Modify the FtpServer enum - 2) Add a new class extending FtpBaseServer - 3) Create a new instance of your class in AllServers (below) - - To support a custom FTP server you only need to extend FtpBaseServer - and set it on your client.ServerHandler before calling Connect. - - - - - Return a known working connection profile from the host/port combination. - - - - - Detect the FTP Server based on the welcome message sent by the server after getting the 220 connection command. - Its the primary method. - - - - - Get a default FTP Server handler based on the enum value. - - - - - Detect the FTP Server based on the response to the SYST connection command. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Detect the FTP Server based on the response to the SYST connection command. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Populates the capabilities flags based on capabilities given in the list of strings. - - - - - Assume the FTP Server's capabilities if it does not support the FEAT command. - - - - - Error messages returned by various servers when a file does not exist. - Instead of throwing an error, we use these to detect and handle the file detection properly. - MUST BE LOWER CASE! - - - - - Error messages returned by various servers when a file size is not supported in ASCII mode. - MUST BE LOWER CASE! - - - - - Error messages returned by various servers when a file transfer temporarily failed. - MUST BE LOWER CASE! - - - - - Error messages returned by various servers when a folder already exists. - Instead of throwing an error, we use these to detect and handle the folder creation properly. - MUST BE LOWER CASE! - - - - - Server-specific handling for BFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for Cerberus FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for CrushFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for FileZilla FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Server-specific handling for FTP2S3Gateway FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for glFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for GlobalScapeEFT FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for HomegateFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for IBMzOSFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for NonStop/Tandem FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for OpenVMS FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Return your FTP server's default capabilities. - Used if your server does not broadcast its capabilities using the FEAT command. - - - - - Return true if the path is an absolute path according to your server's convention. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for ProFTPD FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Perform server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - Server-specific handling for PureFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Server-specific handling for ServU FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Perform server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Server-specific handling for SolarisFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Server-specific handling for VsFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Server-specific handling for WindowsCE FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for WindowsServer/IIS FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for WuFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Return your FTP server's default capabilities. - Used if your server does not broadcast its capabilities using the FEAT command. - - - - - Server-specific handling for XLight FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Base class for data stream connections - - - - - Gets the status of the command that was used to open - this data channel - - - - - Gets or sets the control connection for this data stream. Setting - the control connection causes the object to be cloned and a new - connection is made to the server to carry out the task. This ensures - that multiple streams can be opened simultaneously. - - - - - Gets or sets the length of the stream. Only valid for file transfers - and only valid on servers that support the Size command. - - - - - Gets or sets the position of the stream - - - - - Reads data off the stream - - The buffer to read into - Where to start in the buffer - Number of bytes to read - The number of bytes read - - - - Reads data off the stream asynchronously - - The buffer to read into - Where to start in the buffer - Number of bytes to read - The cancellation token for this task - The number of bytes read - - - - Writes data to the stream - - The buffer to write to the stream - Where to start in the buffer - The number of bytes to write to the buffer - - - - Writes data to the stream asynchronously - - The buffer to write to the stream - Where to start in the buffer - The number of bytes to write to the buffer - The for this task - - - - Sets the length of this stream - - Value to apply to the Length property - - - - Sets the position of the stream. Intended to be used - internally by FtpControlConnection. - - The position - - - - Closes the connection and reads the server's reply - - - - - Creates a new data stream object - - The control connection to be used for carrying out this operation - - - - Finalizer - - - - - Returns the file size using synchronous file I/O. - - - - - Returns the file size using async file I/O. - - - - - Returns the file size using synchronous file I/O. - - - - - Returns the file size using synchronous file I/O. - - - - - Returns a new stream to upload a file from disk. - If the file fits within the fileSizeLimit, then it is read in a single disk call and stored in memory, and a MemoryStream is returned. - If it is larger than that, then a regular read-only FileStream is returned. - - - - - Returns a new stream to download a file to disk. - If the file fits within the fileSizeLimit, then a new MemoryStream is returned. - If it is larger than that, then a regular writable FileStream is returned. - - - - - If the stream is a MemoryStream, completes the quick download by writing the file to disk. - - - - - If the stream is a MemoryStream, completes the quick download by writing the file to disk. - - - - - Stream class used for talking. Used by FtpClient, extended by FtpDataStream - - - - - Used for tacking read/write activity on the socket - to determine if Poll() should be used to test for - socket connectivity. The socket in this class will - not know it has been disconnected if the remote host - closes the connection first. Using Poll() avoids - the exception that would be thrown when trying to - read or write to the disconnected socket. - - - - - The socket used for talking - - - - - Gets or sets the length of time in milliseconds - that must pass since the last socket activity - before calling Poll() on the socket to test for - connectivity. Setting this interval too low will - have a negative impact on performance. Setting this - interval to 0 disables Poll()'ing all together. - The default value is 15 seconds. - - - - - Gets the number of available bytes on the socket, 0 if the - socket has not been initialized. This property is used internally - by FtpClient in an effort to detect disconnections and gracefully - reconnect the control connection. - - - - - Gets a value indicating if this socket stream is connected - - - - - Gets a value indicating if encryption is being used - - - - - The non-encrypted stream - - - - - The encrypted stream - - - - - Gets the underlying stream, could be a NetworkStream or SslStream - - - - - Gets a value indicating if this stream can be read - - - - - Gets a value indicating if this stream if seekable - - - - - Gets a value indicating if this stream can be written to - - - - - Gets the length of the stream - - - - - Gets the current position of the stream. Trying to - set this property throws an InvalidOperationException() - - - - - Event is fired when a SSL certificate needs to be validated - - - - - Gets or sets the amount of time to wait for a read operation to complete. Default - value is Timeout.Infinite. - - - - - Gets or sets the length of time milliseconds to wait - for a connection succeed before giving up. The default - is 30000 (30 seconds). - - - - - Gets the local end point of the socket - - - - - Gets the remote end point of the socket - - - - - Fires the SSL certificate validation event - - Certificate being validated - Certificate chain - Policy errors if any - True if it was accepted, false otherwise - - - - Throws an InvalidOperationException - - Ignored - Ignored - - - - - Throws an InvalidOperationException - - Ignored - - - - Flushes the stream - - - - - Flushes the stream asynchronously - - The for this task - - - - Bypass the stream and read directly off the socket. - - The buffer to read into - The number of bytes read - - - - Bypass the stream and read directly off the socket. - - The buffer to read into - The token that can be used to cancel the entire process - The number of bytes read - - - - Reads data from the stream - - Buffer to read into - Where in the buffer to start - Number of bytes to be read - The amount of bytes read from the stream - - - - Reads data from the stream - - Buffer to read into - Where in the buffer to start - Number of bytes to be read - The for this task - The amount of bytes read from the stream - - - - Reads a line from the socket - - The type of encoding used to convert from byte[] to string - A line from the stream, null if there is nothing to read - - - - Reads all line from the socket - - The type of encoding used to convert from byte[] to string - The size of the buffer - A list of lines from the stream - - - - Reads a line from the socket asynchronously - - The type of encoding used to convert from byte[] to string - The for this task - A line from the stream, null if there is nothing to read - - - - Reads all line from the socket - - The type of encoding used to convert from byte[] to string - The size of the buffer - A list of lines from the stream - - - - Writes data to the stream - - Buffer to write to stream - Where in the buffer to start - Number of bytes to be read - - - - Writes data to the stream asynchronously - - Buffer to write to stream - Where in the buffer to start - Number of bytes to be read - The for this task - - - - Writes a line to the stream using the specified encoding - - Encoding used for writing the line - The data to write - - - - Writes a line to the stream using the specified encoding asynchronously - - Encoding used for writing the line - The data to write - The for this task - - - - Disconnects from server - - - - - Safely close the socket if its open - - - - - Sets socket options on the underlying socket - - SocketOptionLevel - SocketOptionName - SocketOptionValue - - - - Connect to the specified host - - The host to connect to - The port to connect to - Internet Protocol versions to support during the connection phase - - - - Connect to the specified host - - The host to connect to - The port to connect to - Internet Protocol versions to support during the connection phase - The token that can be used to cancel the entire process - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - - - - Activates SSL on this stream using the specified protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - A bitwise parameter for supported encryption protocols. - Thrown when authentication fails - - - - Conditionally create a SSL BufferStream based on the configuration in FtpClient.SslBuffering. - - - - - If SSL Buffering is enabled it returns the BufferStream, else returns the internal NetworkStream. - - - - - - Activates SSL on this stream using the specified protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - A bitwise parameter for supported encryption protocols. - Thrown when authentication fails - - - - Deactivates SSL on this stream using the specified protocols and reverts back to plain-text FTP. - - - - - Instructs this stream to listen for connections on the specified address and port - - The address to listen on - The port to listen on - - - - Accepts a connection from a listening socket - - - - - Accepts a connection from a listening socket - - - - - Asynchronously accepts a connection from a listening socket - - - - - - - - Completes a BeginAccept() operation - - IAsyncResult returned from BeginAccept - - - - .NET SslStream doesn't close TLS connection properly. - It does not send the close_notify alert before closing the connection. - FtpSslStream uses unsafe code to do that. - This is required when we want to downgrade the connection to plaintext using CCC command. - Thanks to Neco @ https://stackoverflow.com/questions/237807/net-sslstream-doesnt-close-tls-connection-properly/22626756#22626756 - - - - - Send an SSL close_notify alert. - - - - - - Extension methods related to FTP tasks - - - - - Ensures that the URI points to a server, and not a directory or invalid path. - - - - - - Checks if the reply contains any of the known error strings - - - - - Converts the specified path into a valid FTP file system path - - The file system path - A path formatted for FTP - - - - Creates a valid FTP path by appending the specified segments to this string - - This string - The path segments to append - A valid FTP path - - - - Gets the parent directory path (formatted for a FTP server) - - The path - The parent directory path - - - - Gets the file name and extension from the path - - The full path to the file - The file name - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - This creates a that represents a pair of begin and end methods - that conform to the Asynchronous Programming Model pattern. This extends the maximum amount of arguments from - to 4 from a 3. - - The type of the first argument passed to the delegate - The type of the second argument passed to the delegate - The type of the third argument passed to the delegate - The type of the forth argument passed to the delegate - The type of the result. - The used - The delegate that begins the asynchronous operation - The delegate that ends the asynchronous operation - The first argument passed to the delegate - The second argument passed to the delegate - The third argument passed to the delegate - The forth argument passed to the delegate - An object containing data to be used by the delegate - The created that represents the asynchronous operation - - beginMethod is null - or - endMethod is null - - - - - Validates that the FtpError flags set are not in an invalid combination. - - The error handling options set - True if a valid combination, otherwise false - - - - Checks if every character in the string is whitespace, or the string is null. - - - - - Checks if the string is null or 0 length. - - - - - Checks if the array is null or 0 length. - - - - - Checks if the array is null or 0 length. - - - - - Join the given strings by a delimiter. - - - - - Join the given strings by a delimiter. - - - - - Adds a prefix to the given strings, returns a new array. - - - - - Adds a prefix to the given strings, returns a new array. - - - - - Ensure a string has the given prefix - - - - - Ensure a string has the given postfix - - - - - Remove a prefix from a string, only if it has the given prefix - - - - - Remove a postfix from a string, only if it has the given postfix - - - - - Combine the given base path with the relative path - - - - - Adds a prefix to the given strings, returns a new array. - - - - - Checks if the given file exists in the given file listing. - Supports servers that return: 1) full paths, 2) only filenames, 3) full paths without slash prefixed - - The listing returned by GetNameListing - The full file path you want to check - - - - - Checks if the given file exists in the given file listing. - - The listing returned by GetListing - The full file path you want to check - - - - - Checks if the given path is a root directory or working directory path - - - - - - - Calculate the CHMOD integer value given a set of permissions. - - - - - Checks if the permission value has the given flag - - - - - Escape a string into a valid C# string literal. - Implementation from StackOverflow - https://stackoverflow.com/a/14087738 - - - - - Split into fields by splitting on tokens - - - - - Get the full path of a given FTP Listing entry - - - - - Checks if this FTP path is a top level path - - - - - Calculates the CHMOD value from the permissions flags - - - - - Calculates the permissions flags from the CHMOD value - - - - - Checks if all the characters in this string are digits or dots - - - - - Checks if the string contains any of the given values - - - - - Ensures the given item is only added once. If it was not present true is returned, else false is returned. - - - - - Ensures the given directory exists. - - - - - Checks if the operation was successful or skipped (indicating success). - - - - - Checks if the operation has failed. - - - - - Checks if RexEx Pattern is valid - - - - - Converts a Windows or Unix-style path into its segments for segment-wise processing - - - - - - Check if operation can resume after . - - Received exception. - Result of checking. - - - - Converts the FTP date string into a DateTime object, without performing any timezone conversion. - - The date string - Date formats to try parsing the value from (eg "yyyyMMddHHmmss") - A object representing the date, or if there was a problem - - - - Generates an FTP date-string from the DateTime object, without performing any timezone conversion. - - The date value - A string representing the date - - - diff --git a/AUTS_DataService/bin/Debug/Google.Protobuf.dll b/AUTS_DataService/bin/Debug/Google.Protobuf.dll deleted file mode 100644 index 39527f2..0000000 Binary files a/AUTS_DataService/bin/Debug/Google.Protobuf.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/Google.Protobuf.pdb b/AUTS_DataService/bin/Debug/Google.Protobuf.pdb deleted file mode 100644 index c6f83b3..0000000 Binary files a/AUTS_DataService/bin/Debug/Google.Protobuf.pdb and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/Google.Protobuf.xml b/AUTS_DataService/bin/Debug/Google.Protobuf.xml deleted file mode 100644 index eb6b0d4..0000000 --- a/AUTS_DataService/bin/Debug/Google.Protobuf.xml +++ /dev/null @@ -1,11896 +0,0 @@ - - - - Google.Protobuf - - - - - Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy - - - - - The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy - - - - - Determines which copy routine to use based on the number of bytes to be copied. - - - - - Reverses the order of bytes in the array - - - - - Immutable array of bytes. - - - - - Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. - - - - - Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. - This method encapsulates converting array to memory. Reduces need for SecuritySafeCritical - in .NET Framework. - - - - - Constructs a new ByteString from the given memory. The memory is - *not* copied, and must not be modified after this constructor is called. - - - - - Returns an empty ByteString. - - - - - Returns the length of this ByteString in bytes. - - - - - Returns true if this byte string is empty, false otherwise. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Converts this into a byte array. - - The data is copied - changes to the returned array will not be reflected in this ByteString. - A byte array with the same data as this ByteString. - - - - Converts this into a standard base64 representation. - - A base64 representation of this ByteString. - - - - Constructs a from the Base64 Encoded String. - - - - - Constructs a from data in the given stream, synchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - A ByteString with content read from the given stream. - - - - Constructs a from data in the given stream, asynchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - The cancellation token to use when reading from the stream, if any. - A ByteString with content read from the given stream. - - - - Constructs a from the given array. The contents - are copied, so further modifications to the array will not - be reflected in the returned ByteString. - This method can also be invoked in ByteString.CopyFrom(0xaa, 0xbb, ...) form - which is primarily useful for testing. - - - - - Constructs a from a portion of a byte array. - - - - - Constructs a from a read only span. The contents - are copied, so further modifications to the span will not - be reflected in the returned . - - - - - Creates a new by encoding the specified text with - the given encoding. - - - - - Creates a new by encoding the specified text in UTF-8. - - - - - Returns the byte at the given index. - - - - - Converts this into a string by applying the given encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with the given encoding. - - The encoding to use to decode the binary data into text. - The result of decoding the binary data with the given decoding. - - - - Converts this into a string by applying the UTF-8 encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with UTF-8. - - The result of decoding the binary data with the given decoding. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Creates a CodedInputStream from this ByteString's data. - - - - - Compares two byte strings for equality. - - The first byte string to compare. - The second byte string to compare. - true if the byte strings are equal; false otherwise. - - - - Compares two byte strings for inequality. - - The first byte string to compare. - The second byte string to compare. - false if the byte strings are equal; true otherwise. - - - - Compares this byte string with another object. - - The object to compare this with. - true if refers to an equal ; false otherwise. - - - - Returns a hash code for this object. Two equal byte strings - will return the same hash code. - - A hash code for this object. - - - - Compares this byte string with another. - - The to compare this with. - true if refers to an equal byte string; false otherwise. - - - - Copies the entire byte array to the destination array provided at the offset specified. - - - - - Writes the entire byte array to the provided stream - - - - - SecuritySafeCritical attribute can not be placed on types with async methods. - This class has ByteString's async methods so it can be marked with SecuritySafeCritical. - - - - - Reads and decodes protocol message fields. - - - - This class is generally used by generated code to read appropriate - primitives from the stream. It effectively encapsulates the lowest - levels of protocol buffer format. - - - Repeated fields and map fields are not handled by this class; use - and to serialize such fields. - - - - - - Whether to leave the underlying stream open when disposing of this stream. - This is always true when there's no stream. - - - - - Buffer of data read from the stream or provided at construction time. - - - - - The stream to read further input from, or null if the byte array buffer was provided - directly on construction, with no further data available. - - - - - The parser state is kept separately so that other parse implementations can reuse the same - parsing primitives. - - - - - Creates a new CodedInputStream reading data from the given byte array. - - - - - Creates a new that reads from the given byte array slice. - - - - - Creates a new reading data from the given stream, which will be disposed - when the returned object is disposed. - - The stream to read from. - - - - Creates a new reading data from the given stream. - - The stream to read from. - true to leave open when the returned - is disposed; false to dispose of the given stream when the - returned object is disposed. - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the default limits. - - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the specified limits. - - - This chains to the version with the default limits instead of vice versa to avoid - having to check that the default values are valid every time. - - - - - Creates a with the specified size and recursion limits, reading - from an input stream. - - - This method exists separately from the constructor to reduce the number of constructor overloads. - It is likely to be used considerably less frequently than the constructors, as the default limits - are suitable for most use cases. - - The input stream to read from - The total limit of data to read from the stream. - The maximum recursion depth to allow while reading. - A CodedInputStream reading from with the specified size - and recursion limits. - - - - Returns the current position in the input stream, or the position in the input buffer - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the stream. - - - - - Returns the size limit for this stream. - - - This limit is applied when reading from the underlying stream, as a sanity check. It is - not applied when reading from a byte array data source without an underlying stream. - The default value is Int32.MaxValue. - - - The size limit. - - - - - Returns the recursion limit for this stream. This limit is applied whilst reading messages, - to avoid maliciously-recursive data. - - - The default limit is 100. - - - The recursion limit for this stream. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Disposes of this instance, potentially closing any underlying stream. - - - As there is no flushing to perform here, disposing of a which - was constructed with the leaveOpen option parameter set to true (or one which - was constructed to read from a byte array) has no effect. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Reads a field tag, returning the tag of 0 for "end of stream". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputStream; it may be the end of the logical stream - for an embedded message, for example. - - The next field tag, or 0 for end of stream. (0 is never a valid tag.) - - - - Skips the data for the field with the tag we've just read. - This should be called directly after , when - the caller wishes to skip an unknown field. - - - This method throws if the last-read tag was an end-group tag. - If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the - start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly - resulting in an error if an end-group tag has not been paired with an earlier start-group tag. - - The last tag was an end-group tag - The last read operation read to the end of the logical stream - - - - Skip a group. - - - - - Reads a double field from the stream. - - - - - Reads a float field from the stream. - - - - - Reads a uint64 field from the stream. - - - - - Reads an int64 field from the stream. - - - - - Reads an int32 field from the stream. - - - - - Reads a fixed64 field from the stream. - - - - - Reads a fixed32 field from the stream. - - - - - Reads a bool field from the stream. - - - - - Reads a string field from the stream. - - - - - Reads an embedded message field value from the stream. - - - - - Reads an embedded group field from the stream. - - - - - Reads a bytes field value from the stream. - - - - - Reads a uint32 field value from the stream. - - - - - Reads an enum field value from the stream. - - - - - Reads an sfixed32 field value from the stream. - - - - - Reads an sfixed64 field value from the stream. - - - - - Reads an sint32 field value from the stream. - - - - - Reads an sint64 field value from the stream. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Reads a raw varint from the stream. - - - - - Reads a 32-bit little-endian integer from the stream. - - - - - Reads a 64-bit little-endian integer from the stream. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads a top-level message or a nested message after the limits for this message have been pushed. - (parser will proceed until the end of the current limit) - NOTE: this method needs to be public because it's invoked by the generated code - e.g. msg.MergeFrom(CodedInputStream input) method - - - - - Encodes and writes protocol message fields. - - - - This class is generally used by generated code to write appropriate - primitives to the stream. It effectively encapsulates the lowest - levels of protocol buffer format. Unlike some other implementations, - this does not include combined "write tag and value" methods. Generated - code knows the exact byte representations of the tags they're going to write, - so there's no need to re-encode them each time. Manually-written code calling - this class should just call one of the WriteTag overloads before each value. - - - Repeated fields and map fields are not handled by this class; use RepeatedField<T> - and MapField<TKey, TValue> to serialize such fields. - - - - - - Computes the number of bytes that would be needed to encode a - double field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - float field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bool field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - string field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - group field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - embedded message field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bytes field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - enum field, including the tag. The caller is responsible for - converting the enum value to its numeric value. - - - - - Computes the number of bytes that would be needed to encode an - sfixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sfixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a length, - as written by . - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a tag. - - - - - The buffer size used by CreateInstance(Stream). - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array slice. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new which write to the given stream, and disposes of that - stream when the returned CodedOutputStream is disposed. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - The size of buffer to use internally. - - - - Creates a new CodedOutputStream which write to the given stream. - - The stream to write to. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. - The size of buffer to use internally. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Returns the current position in the stream, or the position in the output buffer - - - - - Configures whether or not serialization is deterministic. - - - Deterministic serialization guarantees that for a given binary, equal messages (defined by the - equals methods in protos) will always be serialized to the same bytes. This implies: - - Repeated serialization of a message will return the same bytes. - Different processes of the same binary (which may be executing on different machines) - will serialize equal messages to the same bytes. - - Note the deterministic serialization is NOT canonical across languages; it is also unstable - across different builds with schema changes due to unknown fields. Users who need canonical - serialization, e.g. persistent storage in a canonical form, fingerprinting, etc, should define - their own canonicalization specification and implement the serializer using reflection APIs - rather than relying on this API. - Once set, the serializer will: (Note this is an implementation detail and may subject to - change in the future) - - Sort map entries by keys in lexicographical order or numerical order. Note: For string - keys, the order is based on comparing the UTF-16 code unit value of each character in the strings. - The order may be different from the deterministic serialization in other languages where - maps are sorted on the lexicographical order of the UTF8 encoded keys. - - - - - - Writes a double field value, without a tag, to the stream. - - The value to write - - - - Writes a float field value, without a tag, to the stream. - - The value to write - - - - Writes a uint64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int32 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed64 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed32 field value, without a tag, to the stream. - - The value to write - - - - Writes a bool field value, without a tag, to the stream. - - The value to write - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - Only the message data is written, without a length-delimiter. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag, to the stream. - - The value to write - - - - Writes an enum value, without a tag, to the stream. - - The value to write - - - - Writes an sfixed32 value, without a tag, to the stream. - - The value to write. - - - - Writes an sfixed64 value, without a tag, to the stream. - - The value to write - - - - Writes an sint32 value, without a tag, to the stream. - - The value to write - - - - Writes an sint64 value, without a tag, to the stream. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag directly to the stream. - - The encoded tag - - - - Writes the given two-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Indicates that a CodedOutputStream wrapping a flat byte array - ran out of space. - - - - - Flushes any buffered data and optionally closes the underlying stream, if any. - - - - By default, any underlying stream is closed by this method. To configure this behaviour, - use a constructor overload with a leaveOpen parameter. If this instance does not - have an underlying stream, this method does nothing. - - - For the sake of efficiency, calling this method does not prevent future write calls - but - if a later write ends up writing to a stream which has been disposed, that is likely to - fail. It is recommend that you not call any other methods after this. - - - - - - Flushes any buffered data to the underlying stream (if there is one). - - - - - Verifies that SpaceLeft returns zero. It's common to create a byte array - that is exactly big enough to hold a message, then write to it with - a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that - the message was actually as big as expected, which can help finding bugs. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - Utility to compare if two Lists are the same, and the hash code - of a List. - - - - - Checks if two lists are equal. - - - - - Gets the list's hash code. - - - - - Representation of a map field in a Protocol Buffer message. - - Key type in the map. Must be a type supported by Protocol Buffer map keys. - Value type in the map. Must be a type supported by Protocol Buffers. - - - For string keys, the equality comparison is provided by . - - - Null values are not permitted in the map, either for wrapper types or regular messages. - If a map is deserialized from a data stream and the value is missing from an entry, a default value - is created instead. For primitive types, that is the regular default value (0, the empty string and so - on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length - encoded value for the field. - - - This implementation does not generally prohibit the use of key/value types which are not - supported by Protocol Buffers (e.g. using a key type of byte) but nor does it guarantee - that all operations will work in such cases. - - - The order in which entries are returned when iterating over this object is undefined, and may change - in future versions. - - - - - - Creates a deep clone of this object. - - - A deep clone of this object. - - - - - Adds the specified key/value pair to the map. - - - This operation fails if the key already exists in the map. To replace an existing entry, use the indexer. - - The key to add - The value to add. - The given key already exists in map. - - - - Determines whether the specified key is present in the map. - - The key to check. - true if the map contains the given key; false otherwise. - - - - Removes the entry identified by the given key from the map. - - The key indicating the entry to remove from the map. - true if the map contained the given key before the entry was removed; false otherwise. - - - - Gets the value associated with the specified key. - - The key whose value to get. - When this method returns, the value associated with the specified key, if the key is found; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - true if the map contains an element with the specified key; otherwise, false. - - - - Gets or sets the value associated with the specified key. - - The key of the value to get or set. - The property is retrieved and key does not exist in the collection. - The value associated with the specified key. If the specified key is not found, - a get operation throws a , and a set operation creates a new element with the specified key. - - - - Gets a collection containing the keys in the map. - - - - - Gets a collection containing the values in the map. - - - - - Adds the specified entries to the map. The keys and values are not automatically cloned. - - The entries to add to the map. - - - - Adds the specified entries to the map, replacing any existing entries with the same keys. - The keys and values are not automatically cloned. - - This method primarily exists to be called from MergeFrom methods in generated classes for messages. - The entries to add to the map. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Adds the specified item to the map. - - The item to add to the map. - - - - Removes all items from the map. - - - - - Determines whether map contains an entry equivalent to the given key/value pair. - - The key/value pair to find. - - - - - Copies the key/value pairs in this map to an array. - - The array to copy the entries into. - The index of the array at which to start copying values. - - - - Removes the specified key/value pair from the map. - - Both the key and the value must be found for the entry to be removed. - The key/value pair to remove. - true if the key/value pair was found and removed; false otherwise. - - - - Gets the number of elements contained in the map. - - - - - Gets a value indicating whether the map is read-only. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this map with another for equality. - - - The order of the key/value pairs in the maps is not deemed significant in this comparison. - - The map to compare this with. - true if refers to an equal map; false otherwise. - - - - Adds entries to the map from the given stream. - - - It is assumed that the stream is initially positioned after the tag specified by the codec. - This method will continue reading entries from the stream until the end is reached, or - a different tag is encountered. - - Stream to read from - Codec describing how the key/value pairs are encoded - - - - Adds entries to the map from the given parse context. - - - It is assumed that the input is initially positioned after the tag specified by the codec. - This method will continue reading entries from the input until the end is reached, or - a different tag is encountered. - - Input to read from - Codec describing how the key/value pairs are encoded - - - - Writes the contents of this map to the given coded output stream, using the specified codec - to encode each entry. - - The output stream to write to. - The codec to use for each entry. - - - - Writes the contents of this map to the given write context, using the specified codec - to encode each entry. - - The write context to write to. - The codec to use for each entry. - - - - Calculates the size of this map based on the given entry codec. - - The codec to use to encode each entry. - - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - A codec for a specific map field. This contains all the information required to encode and - decode the nested messages. - - - - - Creates a new entry codec based on a separate key codec and value codec, - and the tag to use for each map entry. - - The key codec. - The value codec. - The map tag to use to introduce each map entry. - - - - The key codec. - - - - - The value codec. - - - - - The tag used in the enclosing message to indicate map entries. - - - - - Provides a central place to implement equality comparisons, primarily for bitwise float/double equality. - - - - - Returns an equality comparer for suitable for Protobuf equality comparisons. - This is usually just the default equality comparer for the type, but floating point numbers are compared - bitwise. - - The type of equality comparer to return. - The equality comparer. - - - - Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - The contents of a repeated field: essentially, a collection with some extra - restrictions (no null values) and capabilities (deep cloning). - - - This implementation does not generally prohibit the use of types which are not - supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases. - - The element type of the repeated field. - - - - Creates a deep clone of this repeated field. - - - If the field type is - a message type, each element is also cloned; otherwise, it is - assumed that the field type is primitive (including string and - bytes, both of which are immutable) and so a simple copy is - equivalent to a deep clone. - - A deep clone of this repeated field. - - - - Adds the entries from the given input stream, decoding them with the specified codec. - - The input stream to read from. - The codec to use in order to read each entry. - - - - Adds the entries from the given parse context, decoding them with the specified codec. - - The input to read from. - The codec to use in order to read each entry. - - - - Calculates the size of this collection based on the given codec. - - The codec to use when encoding each field. - The number of bytes that would be written to an output by one of the WriteTo methods, - using the same codec. - - - - Writes the contents of this collection to the given , - encoding each value using the specified codec. - - The output stream to write to. - The codec to use when encoding each value. - - - - Writes the contents of this collection to the given write context, - encoding each value using the specified codec. - - The write context to write to. - The codec to use when encoding each value. - - - - Gets and sets the capacity of the RepeatedField's internal array. - When set, the internal array is reallocated to the given capacity. - The new value is less than . - - - - - Adds the specified item to the collection. - - The item to add. - - - - Removes all items from the collection. - - - - - Determines whether this collection contains the given item. - - The item to find. - true if this collection contains the given item; false otherwise. - - - - Copies this collection to the given array. - - The array to copy to. - The first index of the array to copy to. - - - - Removes the specified item from the collection - - The item to remove. - true if the item was found and removed; false otherwise. - - - - Gets the number of elements contained in the collection. - - - - - Gets a value indicating whether the collection is read-only. - - - - - Adds all of the specified values into this collection. - - The values to add to this collection. - - - - Adds the elements of the specified span to the end of the collection. - - The span whose elements should be added to the end of the collection. - - - - Adds all of the specified values into this collection. This method is present to - allow repeated fields to be constructed from queries within collection initializers. - Within non-collection-initializer code, consider using the equivalent - method instead for clarity. - - The values to add to this collection. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this repeated field with another for equality. - - The repeated field to compare this with. - true if refers to an equal repeated field; false otherwise. - - - - Returns the index of the given item within the collection, or -1 if the item is not - present. - - The item to find in the collection. - The zero-based index of the item, or -1 if it is not found. - - - - Inserts the given item at the specified index. - - The index at which to insert the item. - The item to insert. - - - - Removes the item at the given index. - - The zero-based index of the item to remove. - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - Gets or sets the item at the specified index. - - - The element at the specified index. - - The zero-based index of the element to get or set. - The item at the specified index. - - - - Extension methods for , effectively providing - the familiar members from previous desktop framework versions while - targeting the newer releases, .NET Core etc. - - - - - Returns the public getter of a property, or null if there is no such getter - (either because it's read-only, or the getter isn't public). - - - - - Returns the public setter of a property, or null if there is no such setter - (either because it's write-only, or the setter isn't public). - - - - - Provides extension methods on Type that just proxy to TypeInfo. - These are used to support the new type system from .NET 4.5, without - having calls to GetTypeInfo all over the place. While the methods here are meant to be - broadly compatible with the desktop framework, there are some subtle differences in behaviour - but - they're not expected to affect our use cases. While the class is internal, that should be fine: we can - evaluate each new use appropriately. - - - - - See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom - - - - - Returns a representation of the public property associated with the given name in the given type, - including inherited properties or null if there is no such public property. - Here, "public property" means a property where either the getter, or the setter, or both, is public. - - - - - Returns a representation of the public method associated with the given name in the given type, - including inherited methods. - - - This has a few differences compared with Type.GetMethod in the desktop framework. It will throw - if there is an ambiguous match even between a private method and a public one, but it *won't* throw - if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and - class Child : Base declares public void Foo(long)). - - One type in the hierarchy declared more than one method with the same name - - - Holder for reflection information generated from google/protobuf/compiler/plugin.proto - - - File descriptor for google/protobuf/compiler/plugin.proto - - - - The version number of protocol compiler. - - - - Field number for the "major" field. - - - Gets whether the "major" field is set - - - Clears the value of the "major" field - - - Field number for the "minor" field. - - - Gets whether the "minor" field is set - - - Clears the value of the "minor" field - - - Field number for the "patch" field. - - - Gets whether the "patch" field is set - - - Clears the value of the "patch" field - - - Field number for the "suffix" field. - - - - A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - be empty for mainline stable releases. - - - - Gets whether the "suffix" field is set - - - Clears the value of the "suffix" field - - - - An encoded CodeGeneratorRequest is written to the plugin's stdin. - - - - Field number for the "file_to_generate" field. - - - - The .proto files that were explicitly listed on the command-line. The - code generator should generate code only for these files. Each file's - descriptor will be included in proto_file, below. - - - - Field number for the "parameter" field. - - - - The generator parameter passed on the command-line. - - - - Gets whether the "parameter" field is set - - - Clears the value of the "parameter" field - - - Field number for the "proto_file" field. - - - - FileDescriptorProtos for all files in files_to_generate and everything - they import. The files will appear in topological order, so each file - appears before any file that imports it. - - Note: the files listed in files_to_generate will include runtime-retention - options only, but all other files will include source-retention options. - The source_file_descriptors field below is available in case you need - source-retention options for files_to_generate. - - protoc guarantees that all proto_files will be written after - the fields above, even though this is not technically guaranteed by the - protobuf wire format. This theoretically could allow a plugin to stream - in the FileDescriptorProtos and handle them one by one rather than read - the entire set into memory at once. However, as of this writing, this - is not similarly optimized on protoc's end -- it will store all fields in - memory at once before sending them to the plugin. - - Type names of fields and extensions in the FileDescriptorProto are always - fully qualified. - - - - Field number for the "source_file_descriptors" field. - - - - File descriptors with all options, including source-retention options. - These descriptors are only provided for the files listed in - files_to_generate. - - - - Field number for the "compiler_version" field. - - - - The version number of protocol compiler. - - - - - The plugin writes an encoded CodeGeneratorResponse to stdout. - - - - Field number for the "error" field. - - - - Error message. If non-empty, code generation failed. The plugin process - should exit with status code zero even if it reports an error in this way. - - This should be used to indicate errors in .proto files which prevent the - code generator from generating correct code. Errors which indicate a - problem in protoc itself -- such as the input CodeGeneratorRequest being - unparseable -- should be reported by writing a message to stderr and - exiting with a non-zero status code. - - - - Gets whether the "error" field is set - - - Clears the value of the "error" field - - - Field number for the "supported_features" field. - - - - A bitmask of supported features that the code generator supports. - This is a bitwise "or" of values from the Feature enum. - - - - Gets whether the "supported_features" field is set - - - Clears the value of the "supported_features" field - - - Field number for the "minimum_edition" field. - - - - The minimum edition this plugin supports. This will be treated as an - Edition enum, but we want to allow unknown values. It should be specified - according the edition enum value, *not* the edition number. Only takes - effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. - - - - Gets whether the "minimum_edition" field is set - - - Clears the value of the "minimum_edition" field - - - Field number for the "maximum_edition" field. - - - - The maximum edition this plugin supports. This will be treated as an - Edition enum, but we want to allow unknown values. It should be specified - according the edition enum value, *not* the edition number. Only takes - effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. - - - - Gets whether the "maximum_edition" field is set - - - Clears the value of the "maximum_edition" field - - - Field number for the "file" field. - - - Container for nested types declared in the CodeGeneratorResponse message type. - - - - Sync with code_generator.h. - - - - - Represents a single generated file. - - - - Field number for the "name" field. - - - - The file name, relative to the output directory. The name must not - contain "." or ".." components and must be relative, not be absolute (so, - the file cannot lie outside the output directory). "/" must be used as - the path separator, not "\". - - If the name is omitted, the content will be appended to the previous - file. This allows the generator to break large files into small chunks, - and allows the generated text to be streamed back to protoc so that large - files need not reside completely in memory at one time. Note that as of - this writing protoc does not optimize for this -- it will read the entire - CodeGeneratorResponse before writing files to disk. - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "insertion_point" field. - - - - If non-empty, indicates that the named file should already exist, and the - content here is to be inserted into that file at a defined insertion - point. This feature allows a code generator to extend the output - produced by another code generator. The original generator may provide - insertion points by placing special annotations in the file that look - like: - @@protoc_insertion_point(NAME) - The annotation can have arbitrary text before and after it on the line, - which allows it to be placed in a comment. NAME should be replaced with - an identifier naming the point -- this is what other generators will use - as the insertion_point. Code inserted at this point will be placed - immediately above the line containing the insertion point (thus multiple - insertions to the same point will come out in the order they were added). - The double-@ is intended to make it unlikely that the generated code - could contain things that look like insertion points by accident. - - For example, the C++ code generator places the following line in the - .pb.h files that it generates: - // @@protoc_insertion_point(namespace_scope) - This line appears within the scope of the file's package namespace, but - outside of any particular class. Another plugin can then specify the - insertion_point "namespace_scope" to generate additional classes or - other declarations that should be placed in this scope. - - Note that if the line containing the insertion point begins with - whitespace, the same whitespace will be added to every line of the - inserted text. This is useful for languages like Python, where - indentation matters. In these languages, the insertion point comment - should be indented the same amount as any inserted code will need to be - in order to work correctly in that context. - - The code generator that generates the initial file and the one which - inserts into it must both run as part of a single invocation of protoc. - Code generators are executed in the order in which they appear on the - command line. - - If |insertion_point| is present, |name| must also be present. - - - - Gets whether the "insertion_point" field is set - - - Clears the value of the "insertion_point" field - - - Field number for the "content" field. - - - - The file contents. - - - - Gets whether the "content" field is set - - - Clears the value of the "content" field - - - Field number for the "generated_code_info" field. - - - - Information describing the file content being inserted. If an insertion - point is used, this information will be appropriately offset and inserted - into the code generation metadata for the generated files. - - - - - Represents a non-generic extension definition. This API is experimental and subject to change. - - - - - Internal use. Creates a new extension with the specified field number. - - - - - Gets the field number of this extension - - - - - Represents a type-safe extension identifier used for getting and setting single extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The field value type of this extension - - - - Creates a new extension identifier with the specified field number and codec - - - - - Represents a type-safe extension identifier used for getting repeated extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The repeated field value type of this extension - - - - Creates a new repeated extension identifier with the specified field number and codec - - - - - Provides extensions to messages while parsing. This API is experimental and subject to change. - - - - - Creates a new empty extension registry - - - - - Gets the total number of extensions in this extension registry - - - - - Returns whether the registry is readonly - - - - - Adds the specified extension to the registry - - - - - Adds the specified extensions to the registry - - - - - Clears the registry of all values - - - - - Gets whether the extension registry contains the specified extension - - - - - Copies the arrays in the registry set to the specified array at the specified index - - The array to copy to - The array index to start at - - - - Returns an enumerator to enumerate through the items in the registry - - Returns an enumerator for the extensions in this registry - - - - Removes the specified extension from the set - - The extension - true if the extension was removed, otherwise false - - - - Clones the registry into a new registry - - - - - Methods for managing s with null checking. - - Most users will not use this class directly and its API is experimental and subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if it doesn't exist in this set - - - - - Gets the value of the specified repeated extension, registering it if it doesn't exist - - - - - Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null. - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified extension - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Merges the second set into the first set, creating a new instance if first is null - - - - - Clones the set into a new set. If the set is null, this returns null - - - - - Used for keeping track of extensions in messages. - methods route to this set. - - Most users will not need to use this class directly - - The message type that extensions in this set target - - - - Gets a hash code of the set - - - - - Returns whether this set is equal to the other object - - - - - Calculates the size of this extension set - - - - - Writes the extension values in this set to the output stream - - - - - Writes the extension values in this set to the write context - - - - - Factory methods for . - - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - A codec for the given tag. - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a message field with the given tag. - - The tag. - A parser to use for the message type. - A codec for the given tag. - - - - Retrieves a codec suitable for a group field with the given tag. - - The start group tag. - The end group tag. - A parser to use for the group message type. - A codec for given tag - - - - Creates a codec for a wrapper type of a class - which must be string or ByteString. - - - - - Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64, - Bool, Single or Double. - - - - - Helper code to create codecs for wrapper types. - - - Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it - slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place, - we can refactor later if we come up with something cleaner. - - - - - Returns a field codec which effectively wraps a value of type T in a message. - - - - - - - An encode/decode pair for a single field. This effectively encapsulates - all the information needed to read or write the field value from/to a coded - stream. - - - This class is public and has to be as it is used by generated code, but its public - API is very limited - just what the generated code needs to call directly. - - - - This never writes default values to the stream, and does not address "packedness" - in repeated fields itself, other than to know whether or not the field *should* be packed. - - - - - Merges an input stream into a value - - - - - Merges a value into a reference to another value, returning a boolean if the value was set - - - - - Returns a delegate to write a value (unconditionally) to a coded output stream. - - - - - Returns the size calculator for just a value. - - - - - Returns a delegate to read a value from a coded input stream. It is assumed that - the stream is already positioned on the appropriate tag. - - - - - Returns a delegate to merge a value from a coded input stream. - It is assumed that the stream is already positioned on the appropriate tag - - - - - Returns a delegate to merge two values together. - - - - - Returns the fixed size for an entry, or 0 if sizes vary. - - - - - Gets the tag of the codec. - - - The tag of the codec. - - - - - Gets the end tag of the codec or 0 if there is no end tag - - - The end tag of the codec. - - - - - Default value for this codec. Usually the same for every instance of the same type, but - for string/ByteString wrapper fields the codec's default value is null, whereas for - other string/ByteString fields it's "" or ByteString.Empty. - - - The default value of the codec's type. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Reads a value of the codec type from the given . - - The input stream to read from. - The value read from the stream. - - - - Reads a value of the codec type from the given . - - The parse context to read from. - The value read. - - - - Calculates the size required to write the given value, with a tag, - if the value is not the default. - - - - - Calculates the size required to write the given value, with a tag, even - if the value is the default. - - - - - A tree representation of a FieldMask. Each leaf node in this tree represent - a field path in the FieldMask. - - For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be: - - [root] -+- foo -+- bar - | | - | +- baz - | - +- bar --- baz - - - By representing FieldMasks with this tree structure we can easily convert - a FieldMask to a canonical form, merge two FieldMasks, calculate the - intersection to two FieldMasks and traverse all fields specified by the - FieldMask in a message tree. - - - - - Creates an empty FieldMaskTree. - - - - - Creates a FieldMaskTree for a given FieldMask. - - - - - Adds a field path to the tree. In a FieldMask, every field path matches the - specified field as well as all its sub-fields. For example, a field path - "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding - a field path to the tree, redundant sub-paths will be removed. That is, - after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it - exists, which will turn the tree node for "foo.bar" to a leaf node. - Likewise, if the field path to add is a sub-path of an existing leaf node, - nothing will be changed in the tree. - - - - - Merges all field paths in a FieldMask into this tree. - - - - - Converts this tree to a FieldMask. - - - - - Gathers all field paths in a sub-tree. - - - - - Adds the intersection of this tree with the given to . - - - - - Merges all fields specified by this FieldMaskTree from to . - - - - - Merges all fields specified by a sub-tree from to . - - - - - Class containing helpful workarounds for various platform compatibility - - - - - Interface for a Protocol Buffers message, supporting - parsing from and writing to . - - - - - Internal implementation of merging data from given parse context into this message. - Users should never invoke this method directly. - - - - - Internal implementation of writing this message to a given write context. - Users should never invoke this method directly. - - - - - A message type that has a custom string format for diagnostic purposes. - - - - Calling on a generated message type normally - returns the JSON representation. If a message type implements this interface, - then the method will be called instead of the regular - JSON formatting code, but only when ToString() is called either on the message itself - or on another message which contains it. This does not affect the normal JSON formatting of - the message. - - - For example, if you create a proto message representing a GUID, the internal - representation may be a bytes field or four fixed32 fields. However, when debugging - it may be more convenient to see a result in the same format as provides. - - This interface extends to avoid it accidentally being implemented - on types other than messages, where it would not be used by anything in the framework. - - - - - Returns a string representation of this object, for diagnostic purposes. - - - This method is called when a message is formatted as part of a - call. It does not affect the JSON representation used by other than - in calls to . While it is recommended - that the result is valid JSON, this is never assumed by the Protobuf library. - - A string representation of this object, for diagnostic purposes. - - - - Generic interface for a deeply cloneable type. - - - - All generated messages implement this interface, but so do some non-message types. - Additionally, due to the type constraint on T in , - it is simpler to keep this as a separate interface. - - - The type itself, returned by the method. - - - - Creates a deep clone of this object. - - A deep clone of this object. - - - - Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class. - This interface is experiemental and is subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if the extension isn't registered in this set. - For a version of this method that never returns null, use - - - - - Gets the value of the specified repeated extension, registering it if it hasn't already been registered. - - - - - Sets the value of the specified extension - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified repeated extension - - - - - Interface for a Protocol Buffers message, supporting - basic operations required for serialization. - - - - - Merges the data from the specified coded input stream with the current message. - - See the user guide for precise merge semantics. - - - - - Writes the data to the given coded output stream. - - Coded output stream to write the data to. Must not be null. - - - - Calculates the size of this message in Protocol Buffer wire format, in bytes. - - The number of bytes required to write this message - to a coded output stream. - - - - Descriptor for this message. All instances are expected to return the same descriptor, - and for generated types this will be an explicitly-implemented member, returning the - same value as the static property declared on the type. - - - - - Generic interface for a Protocol Buffers message, - where the type parameter is expected to be the same type as - the implementation class. - - The message type. - - - - Merges the given message into this one. - - See the user guide for precise merge semantics. - The message to merge with this one. Must not be null. - - - - Thrown when an attempt is made to parse invalid JSON, e.g. using - a non-string property key, or including a redundant comma. Parsing a protocol buffer - message represented in JSON using can throw both this - exception and depending on the situation. This - exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException - is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer - message. - - - - - Thrown when a protocol message being parsed is invalid in some way, - e.g. it contains a malformed varint or a negative byte length. - - - - - Creates an exception for an error condition of an invalid tag being encountered. - - - - - Reflection-based converter from messages to JSON. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON formatting working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - The JSON representation of the first 160 characters of Unicode. - Empty strings are replaced by the static constructor. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Formats the specified message as JSON. - - The message to format. - This method delegates to Format(IMessage, int) with indentationLevel = - 0. The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - Indentation level to start at. - To keep consistent indentation when embedding a message inside another JSON string, - set . E.g: var response = $@"{{ - ""data"": { Format(message, indentationLevel: 1) } - }}" - - The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - The TextWriter to write the formatted message to. - This method delegates to Format(IMessage, TextWriter, int) with - indentationLevel = 0. The formatted message. - - - - Formats the specified message as JSON. When is not null, - start indenting at the specified . - - The message to format. - The TextWriter to write the formatted message to. - Indentation level to start at. - To keep consistent indentation when embedding a message inside another JSON string, - set . - - - - Converts a message to JSON for diagnostic purposes with no extra context. - - - - This differs from calling on the default JSON - formatter in its handling of . As no type registry is available - in calls, the normal way of resolving the type of - an Any message cannot be applied. Instead, a JSON property named @value - is included with the base64 data from the property of the message. - - The value returned by this method is only designed to be used for diagnostic - purposes. It may not be parsable by , and may not be parsable - by other Protocol Buffer implementations. - - The message to format for diagnostic purposes. - The diagnostic-only JSON representation of the message - - - - Determines whether or not a field value should be serialized according to the field, - its value in the message, and the settings of this formatter. - - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - Delegates to WriteValue(TextWriter, object, int) with indentationLevel = - 0. - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - The current indentationLevel. Not used when is null. - - - - Central interception point for well-known type formatting. Any well-known types which - don't need special handling can fall back to WriteMessage. We avoid assuming that the - values are using the embedded well-known types, in order to allow for dynamic messages - in the future. - - - - - Writes a string (including leading and trailing double quotes) to a builder, escaping as - required. - - - Other than surrogate pair handling, this code is mostly taken from - src/google/protobuf/util/internal/json_escaping.cc. - - - - - Settings controlling JSON formatting. - - - - - Default settings, as used by - - - - - Whether fields which would otherwise not be included in the formatted data - should be formatted even when the value is not present, or has the default value. - This option only affects fields which don't support "presence" (e.g. - singular non-optional proto3 primitive fields). - - - - - The type registry used to format messages. - - - - - Whether to format enums as ints. Defaults to false. - - - - - Whether to use the original proto field names as defined in the .proto file. Defaults to - false. - - - - - Indentation string, used for formatting. Setting null disables indentation. - - - - - Creates a new object with the specified formatting of default - values and an empty type registry. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. - - - - Creates a new object with the specified formatting of default - values and type registry. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. The to use when formatting messages. - - - - Creates a new object with the specified parameters. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. The to use when formatting messages. - TypeRegistry.Empty will be used if it is null. true to format the enums as integers; false to - format enums as enum names. true to - preserve proto field names; false to convert them to lowerCamelCase. The indentation string to use for multi-line formatting. null to - disable multi-line format. - - - - Creates a new object with the specified formatting of default - values and the current settings. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. - - - - Creates a new object with the specified type registry and the - current settings. - - The to use when formatting messages. - - - - Creates a new object with the specified enums formatting option and - the current settings. - - true to format the enums as integers; - false to format enums as enum names. - - - - Creates a new object with the specified field name formatting - option and the current settings. - - true to preserve proto field names; - false to convert them to lowerCamelCase. - - - - Creates a new object with the specified indentation and the current - settings. - - The string to output for each level of indentation (nesting). - The default is two spaces per level. Use null to disable indentation entirely. - A non-null value for will insert additional line-breaks - to the JSON output. Each line will contain either a single value, or braces. The default - line-break is determined by , which is "\n" on - Unix platforms, and "\r\n" on Windows. If seems to - produce empty lines, you need to pass a that uses a "\n" - newline. See . - - - - - Reflection-based converter from JSON to messages. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON parsing working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Parses and merges the information into the given message. - - The message to merge the JSON information into. - The JSON to parse. - - - - Parses JSON read from and merges the information into the given message. - - The message to merge the JSON information into. - Reader providing the JSON to parse. - - - - Merges the given message using data from the given tokenizer. In most cases, the next - token should be a "start object" token, but wrapper types and nullity can invalidate - that assumption. This is implemented as an LL(1) recursive descent parser over the stream - of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the - tokenizer performing that validation - but not every token stream is valid "protobuf JSON". - - - - - Attempts to parse a single value from the JSON. When the value is completely invalid, - this will still throw an exception; when it's "conditionally invalid" (currently meaning - "when there's an unknown enum string value") the method returns false instead. - - - true if the value was parsed successfully; false for an ignorable parse failure. - - - - - Parses into a new message. - - The type of message to create. - The JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - The type of message to create. - Reader providing the JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses into a new message. - - The JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - Reader providing the JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new instance of the message type for the given field. - - - - - Checks that any infinite/NaN values originated from the correct text. - This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the - way that Mono parses out-of-range values as infinity. - - - - - Settings controlling JSON parsing. - - - - - Default settings, as used by . This has the same default - recursion limit as , and an empty type registry. - - - - - The maximum depth of messages to parse. Note that this limit only applies to parsing - messages, not collections - so a message within a collection within a message only counts as - depth 2, not 3. - - - - - The type registry used to parse messages. - - - - - Whether the parser should ignore unknown fields (true) or throw an exception when - they are encountered (false). - - - - - Creates a new object with the specified recursion limit. - - The maximum depth of messages to parse - - - - Creates a new object with the specified recursion limit and type registry. - - The maximum depth of messages to parse - The type registry used to parse messages - - - - Creates a new object set to either ignore unknown fields, or throw an exception - when unknown fields are encountered. - - true if unknown fields should be ignored when parsing; false to throw an exception. - - - - Creates a new object based on this one, but with the specified recursion limit. - - The new recursion limit. - - - - Creates a new object based on this one, but with the specified type registry. - - The new type registry. Must not be null. - - - - Simple but strict JSON tokenizer, rigidly following RFC 7159. - - - - This tokenizer is stateful, and only returns "useful" tokens - names, values etc. - It does not create tokens for the separator between names and values, or for the comma - between values. It validates the token stream as it goes - so callers can assume that the - tokens it produces are appropriate. For example, it would never produce "start object, end array." - - Implementation details: the base class handles single token push-back and - Not thread-safe. - - - - - Creates a tokenizer that reads from the given text reader. - - - - - Creates a tokenizer that first replays the given list of tokens, then continues reading - from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back - on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was - created for the sake of Any parsing. - - - - - Returns the depth of the stack, purely in objects (not collections). - Informally, this is the number of remaining unclosed '{' characters we have. - - - - - Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream, - after which point Next() should not be called again. - - This implementation provides single-token buffering, and calls if there is no buffered token. - The next token in the stream. This is never null. - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Returns the next JSON token in the stream, when requested by the base class. (The method delegates - to this if it doesn't have a buffered token.) - - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Skips the value we're about to read. This must only be called immediately after reading a property name. - If the value is an object or an array, the complete object/array is skipped. - - - - - Tokenizer which first exhausts a list of tokens, then consults another tokenizer. - - - - - Tokenizer which does all the *real* work of parsing JSON. - - - - - This method essentially just loops through characters skipping whitespace, validating and - changing state (e.g. from ObjectBeforeColon to ObjectAfterColon) - until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point - it returns the token. Although the method is large, it would be relatively hard to break down further... most - of it is the large switch statement, which sometimes returns and sometimes doesn't. - - - - - Reads a string token. It is assumed that the opening " has already been read. - - - - - Reads an escaped character. It is assumed that the leading backslash has already been read. - - - - - Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read. - - - - - Consumes a text-only literal, throwing an exception if the read text doesn't match it. - It is assumed that the first letter of the literal has already been read. - - - - - Copies an integer into a StringBuilder. - - The builder to read the number into - The character following the integer, or -1 for end-of-text. - - - - Copies the fractional part of an integer into a StringBuilder, assuming reader is positioned after a period. - - The builder to read the number into - The character following the fractional part, or -1 for end-of-text. - - - - Copies the exponent part of a number into a StringBuilder, with an assumption that the reader is already positioned after the "e". - - The builder to read the number into - The character following the exponent, or -1 for end-of-text. - - - - Copies a sequence of digits into a StringBuilder. - - The builder to read the number into - The number of digits appended to the builder - The character following the digits, or -1 for end-of-text. - - - - Validates that we're in a valid state to read a value (using the given error prefix if necessary) - and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty. - - - - - Pops the top-most container, and sets the state to the appropriate one for the end of a value - in the parent container. - - - - - Possible states of the tokenizer. - - - This is a flags enum purely so we can simply and efficiently represent a set of valid states - for checking. - - Each is documented with an example, - where ^ represents the current position within the text stream. The examples all use string values, - but could be any value, including nested objects/arrays. - The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects). - Any additional notional state of "AfterValue" indicates that a value has been completed, at which - point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue. - - - These states were derived manually by reading RFC 7159 carefully. - - - - - - ^ { "foo": "bar" } - Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue" - - - - - { "foo": "bar" } ^ - After the value in a document. Next states: ReaderExhausted - - - - - { "foo": "bar" } ^ (and already read to the end of the reader) - Terminal state. - - - - - { ^ "foo": "bar" } - Before the *first* property in an object. - Next states: - "AfterValue" (empty object) - ObjectBeforeColon (read a name) - - - - - { "foo" ^ : "bar", "x": "y" } - Next state: ObjectAfterColon - - - - - { "foo" : ^ "bar", "x": "y" } - Before any property other than the first in an object. - (Equivalently: after any property in an object) - Next states: - "AfterValue" (value is simple) - ObjectStart (value is object) - ArrayStart (value is array) - - - - - { "foo" : "bar" ^ , "x" : "y" } - At the end of a property, so expecting either a comma or end-of-object - Next states: ObjectAfterComma or "AfterValue" - - - - - { "foo":"bar", ^ "x":"y" } - Read the comma after the previous property, so expecting another property. - This is like ObjectStart, but closing brace isn't valid here - Next state: ObjectBeforeColon. - - - - - [ ^ "foo", "bar" ] - Before the *first* value in an array. - Next states: - "AfterValue" (read a value) - "AfterValue" (end of array; will pop stack) - - - - - [ "foo" ^ , "bar" ] - After any value in an array, so expecting either a comma or end-of-array - Next states: ArrayAfterComma or "AfterValue" - - - - - [ "foo", ^ "bar" ] - After a comma in an array, so there *must* be another value (simple or complex). - Next states: "AfterValue" (simple value), StartObject, StartArray - - - - - Wrapper around a text reader allowing small amounts of buffering and location handling. - - - - - The buffered next character, if we have one, or -1 if there is no buffered character. - - - - - Returns the next character in the stream, or -1 if we have reached the end of the stream. - - - - - Reads the next character from the underlying reader, throwing an - with the specified message if there are no more characters available. - - - - - Creates a new exception appropriate for the current state of the reader. - - - - - Provide a cached reusable instance of stringbuilder per thread. - Copied from https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/System/Text/StringBuilderCache.cs - - - - Get a StringBuilder for the specified capacity. - If a StringBuilder of an appropriate size is cached, it will be returned and the cache emptied. - - - Place the specified builder in the cache if it is not too big. - - - ToString() the stringbuilder, Release it to the cache, and return the resulting string. - - - - Stream implementation which proxies another stream, only allowing a certain amount - of data to be read. Note that this is only used to read delimited streams, so it - doesn't attempt to implement everything. - - - - - Extension methods on and . - - - - - Merges data from the given byte array into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given byte array slice into an existing message. - - The message to merge the data into. - The data containing the slice to merge, which must be protobuf-encoded binary data. - The offset of the slice to merge. - The length of the slice to merge. - - - - Merges data from the given byte string into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given stream into an existing message. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given span into an existing message. - - The message to merge the data into. - Span containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given sequence into an existing message. - - The message to merge the data into. - Sequence from the specified data to merge, which must be protobuf-encoded binary data. - - - - Merges length-delimited data from the given stream into an existing message. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Converts the given message into a byte array in protobuf encoding. - - The message to convert. - The message data as a byte array. - - - - Writes the given message data to the given stream in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the length and then data of the given message to a stream. - - The message to write. - The output stream to write to. - - - - Converts the given message into a byte string in protobuf encoding. - - The message to convert. - The message data as a byte string. - - - - Writes the given message data to the given buffer writer in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the given message data to the given span in protobuf encoding. - The size of the destination span needs to fit the serialized size - of the message exactly, otherwise an exception is thrown. - - The message to write to the stream. - The span to write to. Size must match size of the message exactly. - - - - Checks if all required fields in a message have values set. For proto3 messages, this returns true. - - - - - A general message parser, typically used by reflection-based code as all the methods - return simple . - - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a message from the given span. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - This method always uses the default JSON parser; it is not affected by . - To ignore unknown fields when parsing JSON, create a using a - with set to true and call directly. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Note that this does not affect the behavior of - at all. To ignore unknown fields when parsing JSON, create a using a - with set to true and call directly. - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - A parser for a specific message type. - - -

- This delegates most behavior to the - implementation within the original type, but - provides convenient overloads to parse from a variety of sources. -

-

- Most applications will never need to create their own instances of this type; - instead, use the static Parser property of a generated message type to obtain a - parser for that type. -

-
- The type of message to be parsed. -
- - - Creates a new parser. - - - The factory method is effectively an optimization over using a generic constraint - to require a parameterless constructor: delegates are significantly faster to execute. - - Function to invoke when a new, empty message is required. - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a message from the given span. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the - extensionByNumber table in ExtensionRegistry. - - - - - An opaque struct that represents the current parsing state and is passed along - as the parsing proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Initialize a , building all from defaults and - the given . - - - - - Initialize a using existing , e.g. from . - - - - - Creates a ParseContext instance from CodedInputStream. - WARNING: internally this copies the CodedInputStream's state, so after done with the ParseContext, - the CodedInputStream's state needs to be updated. - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the input. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Reads a field tag, returning the tag of 0 for "end of input". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputReader; it may be the end of the logical input - for an embedded message, for example. - - The next field tag, or 0 for end of input. (0 is never a valid tag.) - - - - Reads a double field from the input. - - - - - Reads a float field from the input. - - - - - Reads a uint64 field from the input. - - - - - Reads an int64 field from the input. - - - - - Reads an int32 field from the input. - - - - - Reads a fixed64 field from the input. - - - - - Reads a fixed32 field from the input. - - - - - Reads a bool field from the input. - - - - - Reads a string field from the input. - - - - - Reads an embedded message field value from the input. - - - - - Reads an embedded group field from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a uint32 field value from the input. - - - - - Reads an enum field value from the input. - - - - - Reads an sfixed32 field value from the input. - - - - - Reads an sfixed64 field value from the input. - - - - - Reads an sint32 field value from the input. - - - - - Reads an sint64 field value from the input. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - The position within the current buffer (i.e. the next byte to read) - - - - - Size of the current buffer - - - - - If we are currently inside a length-delimited block, this is the number of - bytes in the buffer that are still available once we leave the delimited block. - - - - - The absolute position of the end of the current length-delimited block (including totalBytesRetired) - - - - - The total number of consumed before the start of the current buffer. The - total bytes read up to the current position can be computed as - totalBytesRetired + bufferPos. - - - - - The last tag we read. 0 indicates we've read to the end of the stream - (or haven't read anything yet). - - - - - The next tag, used to store the value read by PeekTag. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Primitives for parsing protobuf wire format. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Parses the next tag. - If the end of logical stream was reached, an invalid tag of 0 is returned. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Parses a raw varint. - - - - - Parses a raw Varint. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Parses a 32-bit little-endian integer. - - - - - Parses a 64-bit little-endian integer. - - - - - Parses a double value. - - - - - Parses a float value. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads and discards bytes. - - the end of the stream - or the current limit was reached - - - - Reads a string field value from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a UTF-8 string from the next "length" bytes. - - - the end of the stream or the current limit was reached - - - - - Reads a string assuming that it is spread across multiple spans in a . - - - - - Validates that the specified size doesn't exceed the current limit. If it does then remaining bytes - are skipped and an error is thrown. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Decode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 32 bits to be varint encoded, thus always taking - 5 bytes on the wire.) - - - - - Decode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Checks whether there is known data available of the specified size remaining to parse. - When parsing from a Stream this can return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Checks whether there is known data available of the specified size remaining to parse - in the underlying data source. - When parsing from a Stream this will return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Read raw bytes of the specified length into a span. The amount of data available and the current limit should - be checked before calling this method. - - - - - Reading and skipping messages / groups - - - - - Skip a group. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Fast parsing primitives for wrapper types - - - - - Helper methods for throwing exceptions when preconditions are not met. - - - This class is used internally and by generated code; it is not particularly - expected to be used from application code, although nothing prevents it - from being used that way. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - This is equivalent to but without the type parameter - constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull - with a value type - but it gets in the way if either you want to use it with a nullable - value type, or you want to use it with an unconstrained type parameter. - - - - - Container for a set of custom options specified within a message, field etc. - - - - This type is publicly immutable, but internally mutable. It is only populated - by the descriptor parsing code - by the time any user code is able to see an instance, - it will be fully initialized. - - - If an option is requested using the incorrect method, an answer may still be returned: all - of the numeric types are represented internally using 64-bit integers, for example. It is up to - the caller to ensure that they make the appropriate method call for the option they're interested in. - Note that enum options are simply stored as integers, so the value should be fetched using - and then cast appropriately. - - - Repeated options are currently not supported. Asking for a single value of an option - which was actually repeated will return the last value, except for message types where - all the set values are merged together. - - - - - - Retrieves a Boolean value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 32-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 64-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a string value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a bytes value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a message value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - Holder for reflection information generated from google/protobuf/descriptor.proto - - - File descriptor for google/protobuf/descriptor.proto - - - - The full set of known editions. - - - - - A placeholder for an unknown edition value. - - - - - A placeholder edition for specifying default behaviors *before* a feature - was first introduced. This is effectively an "infinite past". - - - - - Legacy syntax "editions". These pre-date editions, but behave much like - distinct editions. These can't be used to specify the edition of proto - files, but feature definitions must supply proto2/proto3 defaults for - backwards compatibility. - - - - - Editions that have been released. The specific values are arbitrary and - should not be depended on, but they will always be time-ordered for easy - comparison. - - - - - Placeholder editions for testing feature resolution. These should not be - used or relied on outside of tests. - - - - - Placeholder for specifying unbounded edition support. This should only - ever be used by plugins that can expect to never require any changes to - support a new edition. - - - - - The protocol compiler can output a FileDescriptorSet containing the .proto - files it parses. - - - - Field number for the "file" field. - - - - Describes a complete .proto file. - - - - Field number for the "name" field. - - - - file name, relative to root of source tree - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "package" field. - - - - e.g. "foo", "foo.bar", etc. - - - - Gets whether the "package" field is set - - - Clears the value of the "package" field - - - Field number for the "dependency" field. - - - - Names of files imported by this file. - - - - Field number for the "public_dependency" field. - - - - Indexes of the public imported files in the dependency list above. - - - - Field number for the "weak_dependency" field. - - - - Indexes of the weak imported files in the dependency list. - For Google-internal migration only. Do not use. - - - - Field number for the "message_type" field. - - - - All top-level definitions in this file. - - - - Field number for the "enum_type" field. - - - Field number for the "service" field. - - - Field number for the "extension" field. - - - Field number for the "options" field. - - - Field number for the "source_code_info" field. - - - - This field contains optional information about the original source code. - You may safely remove this entire field without harming runtime - functionality of the descriptors -- the information is needed only by - development tools. - - - - Field number for the "syntax" field. - - - - The syntax of the proto file. - The supported values are "proto2", "proto3", and "editions". - - If `edition` is present, this value must be "editions". - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Gets whether the "syntax" field is set - - - Clears the value of the "syntax" field - - - Field number for the "edition" field. - - - - The edition of the proto file. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - - Describes a message type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "field" field. - - - Field number for the "extension" field. - - - Field number for the "nested_type" field. - - - Field number for the "enum_type" field. - - - Field number for the "extension_range" field. - - - Field number for the "oneof_decl" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - Field number for the "reserved_name" field. - - - - Reserved field names, which may not be used by fields in the same message. - A given name may only be reserved once. - - - - Container for nested types declared in the DescriptorProto message type. - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "options" field. - - - - Range of reserved tag numbers. Reserved tag numbers may not be used by - fields or extension ranges in the same message. Reserved ranges may - not overlap. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "declaration" field. - - - - For external users: DO NOT USE. We are in the process of open sourcing - extension declaration and executing internal cleanups before it can be - used externally. - - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - - - - Field number for the "verification" field. - - - - The verification state of the range. - TODO: flip the default to DECLARATION once all empty ranges - are marked as UNVERIFIED. - - - - Gets whether the "verification" field is set - - - Clears the value of the "verification" field - - - Container for nested types declared in the ExtensionRangeOptions message type. - - - - The verification state of the extension range. - - - - - All the extensions of the range must be declared. - - - - Field number for the "number" field. - - - - The extension number declared within the extension range. - - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "full_name" field. - - - - The fully-qualified name of the extension field. There must be a leading - dot in front of the full name. - - - - Gets whether the "full_name" field is set - - - Clears the value of the "full_name" field - - - Field number for the "type" field. - - - - The fully-qualified type name of the extension field. Unlike - Metadata.type, Declaration.type must have a leading dot for messages - and enums. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "reserved" field. - - - - If true, indicates that the number is reserved in the extension range, - and any extension field with the number will fail to compile. Set this - when a declared extension field is deleted. - - - - Gets whether the "reserved" field is set - - - Clears the value of the "reserved" field - - - Field number for the "repeated" field. - - - - If true, indicates that the extension must be defined as repeated. - Otherwise the extension must be defined as optional. - - - - Gets whether the "repeated" field is set - - - Clears the value of the "repeated" field - - - - Describes a field within a message. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "label" field. - - - Gets whether the "label" field is set - - - Clears the value of the "label" field - - - Field number for the "type" field. - - - - If type_name is set, this need not be set. If both this and type_name - are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "type_name" field. - - - - For message and enum types, this is the name of the type. If the name - starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - rules are used to find the type (i.e. first the nested types within this - message are searched, then within the parent, on up to the root - namespace). - - - - Gets whether the "type_name" field is set - - - Clears the value of the "type_name" field - - - Field number for the "extendee" field. - - - - For extensions, this is the name of the type being extended. It is - resolved in the same manner as type_name. - - - - Gets whether the "extendee" field is set - - - Clears the value of the "extendee" field - - - Field number for the "default_value" field. - - - - For numeric types, contains the original text representation of the value. - For booleans, "true" or "false". - For strings, contains the default text contents (not escaped in any way). - For bytes, contains the C escaped value. All bytes >= 128 are escaped. - - - - Gets whether the "default_value" field is set - - - Clears the value of the "default_value" field - - - Field number for the "oneof_index" field. - - - - If set, gives the index of a oneof in the containing type's oneof_decl - list. This field is a member of that oneof. - - - - Gets whether the "oneof_index" field is set - - - Clears the value of the "oneof_index" field - - - Field number for the "json_name" field. - - - - JSON name of this field. The value is set by protocol compiler. If the - user has set a "json_name" option on this field, that option's value - will be used. Otherwise, it's deduced from the field's name by converting - it to camelCase. - - - - Gets whether the "json_name" field is set - - - Clears the value of the "json_name" field - - - Field number for the "options" field. - - - Field number for the "proto3_optional" field. - - - - If true, this is a proto3 "optional". When a proto3 field is optional, it - tracks presence regardless of field type. - - When proto3_optional is true, this field must belong to a oneof to signal - to old proto3 clients that presence is tracked for this field. This oneof - is known as a "synthetic" oneof, and this field must be its sole member - (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs - exist in the descriptor only, and do not generate any API. Synthetic oneofs - must be ordered after all "real" oneofs. - - For message fields, proto3_optional doesn't create any semantic change, - since non-repeated message fields always track presence. However it still - indicates the semantic detail of whether the user wrote "optional" or not. - This can be useful for round-tripping the .proto file. For consistency we - give message fields a synthetic oneof also, even though it is not required - to track presence. This is especially important because the parser can't - tell if a field is a message or an enum, so it must always create a - synthetic oneof. - - Proto2 optional fields do not set this flag, because they already indicate - optional with `LABEL_OPTIONAL`. - - - - Gets whether the "proto3_optional" field is set - - - Clears the value of the "proto3_optional" field - - - Container for nested types declared in the FieldDescriptorProto message type. - - - - 0 is reserved for errors. - Order is weird for historical reasons. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - negative values are likely. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - negative values are likely. - - - - - Tag-delimited aggregate. - Group type is deprecated and not supported after google.protobuf. However, Proto3 - implementations should still be able to parse the group wire format and - treat group fields as unknown fields. In Editions, the group wire format - can be enabled via the `message_encoding` feature. - - - - - Length-delimited aggregate. - - - - - New in version 2. - - - - - Uses ZigZag encoding. - - - - - Uses ZigZag encoding. - - - - - 0 is reserved for errors - - - - - The required label is only allowed in google.protobuf. In proto3 and Editions - it's explicitly prohibited. In Editions, the `field_presence` feature - can be used to get this behavior. - - - - - Describes a oneof. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "options" field. - - - - Describes an enum type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "value" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - - Range of reserved numeric values. Reserved numeric values may not be used - by enum values in the same enum declaration. Reserved ranges may not - overlap. - - - - Field number for the "reserved_name" field. - - - - Reserved enum value names, which may not be reused. A given name may only - be reserved once. - - - - Container for nested types declared in the EnumDescriptorProto message type. - - - - Range of reserved numeric values. Reserved values may not be used by - entries in the same enum. Reserved ranges may not overlap. - - Note that this is distinct from DescriptorProto.ReservedRange in that it - is inclusive such that it can appropriately represent the entire int32 - domain. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Inclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - - Describes a value within an enum. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "options" field. - - - - Describes a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "method" field. - - - Field number for the "options" field. - - - - Describes a method of a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "input_type" field. - - - - Input and output type names. These are resolved in the same way as - FieldDescriptorProto.type_name, but must refer to a message type. - - - - Gets whether the "input_type" field is set - - - Clears the value of the "input_type" field - - - Field number for the "output_type" field. - - - Gets whether the "output_type" field is set - - - Clears the value of the "output_type" field - - - Field number for the "options" field. - - - Field number for the "client_streaming" field. - - - - Identifies if client streams multiple client messages - - - - Gets whether the "client_streaming" field is set - - - Clears the value of the "client_streaming" field - - - Field number for the "server_streaming" field. - - - - Identifies if server streams multiple server messages - - - - Gets whether the "server_streaming" field is set - - - Clears the value of the "server_streaming" field - - - Field number for the "java_package" field. - - - - Sets the Java package where classes generated from this .proto will be - placed. By default, the proto package is used, but this is often - inappropriate because proto packages do not normally start with backwards - domain names. - - - - Gets whether the "java_package" field is set - - - Clears the value of the "java_package" field - - - Field number for the "java_outer_classname" field. - - - - Controls the name of the wrapper Java class generated for the .proto file. - That class will always contain the .proto file's getDescriptor() method as - well as any top-level extensions defined in the .proto file. - If java_multiple_files is disabled, then all the other classes from the - .proto file will be nested inside the single wrapper outer class. - - - - Gets whether the "java_outer_classname" field is set - - - Clears the value of the "java_outer_classname" field - - - Field number for the "java_multiple_files" field. - - - - If enabled, then the Java code generator will generate a separate .java - file for each top-level message, enum, and service defined in the .proto - file. Thus, these types will *not* be nested inside the wrapper class - named by java_outer_classname. However, the wrapper class will still be - generated to contain the file's getDescriptor() method as well as any - top-level extensions defined in the file. - - - - Gets whether the "java_multiple_files" field is set - - - Clears the value of the "java_multiple_files" field - - - Field number for the "java_generate_equals_and_hash" field. - - - - This option does nothing. - - - - Gets whether the "java_generate_equals_and_hash" field is set - - - Clears the value of the "java_generate_equals_and_hash" field - - - Field number for the "java_string_check_utf8" field. - - - - A proto2 file can set this to true to opt in to UTF-8 checking for Java, - which will throw an exception if invalid UTF-8 is parsed from the wire or - assigned to a string field. - - TODO: clarify exactly what kinds of field types this option - applies to, and update these docs accordingly. - - Proto3 files already perform these checks. Setting the option explicitly to - false has no effect: it cannot be used to opt proto3 files out of UTF-8 - checks. - - - - Gets whether the "java_string_check_utf8" field is set - - - Clears the value of the "java_string_check_utf8" field - - - Field number for the "optimize_for" field. - - - Gets whether the "optimize_for" field is set - - - Clears the value of the "optimize_for" field - - - Field number for the "go_package" field. - - - - Sets the Go package where structs generated from this .proto will be - placed. If omitted, the Go package will be derived from the following: - - The basename of the package import path, if provided. - - Otherwise, the package statement in the .proto file, if present. - - Otherwise, the basename of the .proto file, without extension. - - - - Gets whether the "go_package" field is set - - - Clears the value of the "go_package" field - - - Field number for the "cc_generic_services" field. - - - - Should generic services be generated in each language? "Generic" services - are not specific to any particular RPC system. They are generated by the - main code generators in each language (without additional plugins). - Generic services were the only kind of service generation supported by - early versions of google.protobuf. - - Generic services are now considered deprecated in favor of using plugins - that generate code specific to your particular RPC system. Therefore, - these default to false. Old code which depends on generic services should - explicitly set them to true. - - - - Gets whether the "cc_generic_services" field is set - - - Clears the value of the "cc_generic_services" field - - - Field number for the "java_generic_services" field. - - - Gets whether the "java_generic_services" field is set - - - Clears the value of the "java_generic_services" field - - - Field number for the "py_generic_services" field. - - - Gets whether the "py_generic_services" field is set - - - Clears the value of the "py_generic_services" field - - - Field number for the "deprecated" field. - - - - Is this file deprecated? - Depending on the target platform, this can emit Deprecated annotations - for everything in the file, or it will be completely ignored; in the very - least, this is a formalization for deprecating files. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "cc_enable_arenas" field. - - - - Enables the use of arenas for the proto messages in this file. This applies - only to generated classes for C++. - - - - Gets whether the "cc_enable_arenas" field is set - - - Clears the value of the "cc_enable_arenas" field - - - Field number for the "objc_class_prefix" field. - - - - Sets the objective c class prefix which is prepended to all objective c - generated classes from this .proto. There is no default. - - - - Gets whether the "objc_class_prefix" field is set - - - Clears the value of the "objc_class_prefix" field - - - Field number for the "csharp_namespace" field. - - - - Namespace for generated classes; defaults to the package. - - - - Gets whether the "csharp_namespace" field is set - - - Clears the value of the "csharp_namespace" field - - - Field number for the "swift_prefix" field. - - - - By default Swift generators will take the proto package and CamelCase it - replacing '.' with underscore and use that to prefix the types/symbols - defined. When this options is provided, they will use this value instead - to prefix the types/symbols defined. - - - - Gets whether the "swift_prefix" field is set - - - Clears the value of the "swift_prefix" field - - - Field number for the "php_class_prefix" field. - - - - Sets the php class prefix which is prepended to all php generated classes - from this .proto. Default is empty. - - - - Gets whether the "php_class_prefix" field is set - - - Clears the value of the "php_class_prefix" field - - - Field number for the "php_namespace" field. - - - - Use this option to change the namespace of php generated classes. Default - is empty. When this option is empty, the package name will be used for - determining the namespace. - - - - Gets whether the "php_namespace" field is set - - - Clears the value of the "php_namespace" field - - - Field number for the "php_metadata_namespace" field. - - - - Use this option to change the namespace of php generated metadata classes. - Default is empty. When this option is empty, the proto file name will be - used for determining the namespace. - - - - Gets whether the "php_metadata_namespace" field is set - - - Clears the value of the "php_metadata_namespace" field - - - Field number for the "ruby_package" field. - - - - Use this option to change the package of ruby generated classes. Default - is empty. When this option is not set, the package name will be used for - determining the ruby package. - - - - Gets whether the "ruby_package" field is set - - - Clears the value of the "ruby_package" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. - See the documentation for the "Options" section above. - - - - Container for nested types declared in the FileOptions message type. - - - - Generated classes can be optimized for speed or code size. - - - - - Generate complete code for parsing, serialization, - - - - - etc. - - - - - Generate code using MessageLite and the lite runtime. - - - - Field number for the "message_set_wire_format" field. - - - - Set true to use the old proto1 MessageSet wire format for extensions. - This is provided for backwards-compatibility with the MessageSet wire - format. You should not use this for any other reason: It's less - efficient, has fewer features, and is more complicated. - - The message must be defined exactly as follows: - message Foo { - option message_set_wire_format = true; - extensions 4 to max; - } - Note that the message cannot have any defined fields; MessageSets only - have extensions. - - All extensions of your type must be singular messages; e.g. they cannot - be int32s, enums, or repeated messages. - - Because this is an option, the above two restrictions are not enforced by - the protocol compiler. - - - - Gets whether the "message_set_wire_format" field is set - - - Clears the value of the "message_set_wire_format" field - - - Field number for the "no_standard_descriptor_accessor" field. - - - - Disables the generation of the standard "descriptor()" accessor, which can - conflict with a field of the same name. This is meant to make migration - from proto1 easier; new code should avoid fields named "descriptor". - - - - Gets whether the "no_standard_descriptor_accessor" field is set - - - Clears the value of the "no_standard_descriptor_accessor" field - - - Field number for the "deprecated" field. - - - - Is this message deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the message, or it will be completely ignored; in the very least, - this is a formalization for deprecating messages. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "map_entry" field. - - - - Whether the message is an automatically generated map entry type for the - maps field. - - For maps fields: - map<KeyType, ValueType> map_field = 1; - The parsed descriptor looks like: - message MapFieldEntry { - option map_entry = true; - optional KeyType key = 1; - optional ValueType value = 2; - } - repeated MapFieldEntry map_field = 1; - - Implementations may choose not to generate the map_entry=true message, but - use a native map in the target language to hold the keys and values. - The reflection APIs in such implementations still need to work as - if the field is a repeated message field. - - NOTE: Do not set the option in .proto files. Always use the maps syntax - instead. The option should only be implicitly set by the proto compiler - parser. - - - - Gets whether the "map_entry" field is set - - - Clears the value of the "map_entry" field - - - Field number for the "deprecated_legacy_json_field_conflicts" field. - - - - Enable the legacy handling of JSON field name conflicts. This lowercases - and strips underscored from the fields before comparison in proto3 only. - The new behavior takes `json_name` into account and applies to proto2 as - well. - - This should only be used as a temporary measure against broken builds due - to the change in behavior for JSON field name conflicts. - - TODO This is legacy behavior we plan to remove once downstream - teams have had time to migrate. - - - - Gets whether the "deprecated_legacy_json_field_conflicts" field is set - - - Clears the value of the "deprecated_legacy_json_field_conflicts" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "ctype" field. - - - - NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead. - The ctype option instructs the C++ code generator to use a different - representation of the field than it normally would. See the specific - options below. This option is only implemented to support use of - [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of - type "bytes" in the open source release. - TODO: make ctype actually deprecated. - - - - Gets whether the "ctype" field is set - - - Clears the value of the "ctype" field - - - Field number for the "packed" field. - - - - The packed option can be enabled for repeated primitive fields to enable - a more efficient representation on the wire. Rather than repeatedly - writing the tag and type for each element, the entire array is encoded as - a single length-delimited blob. In proto3, only explicit setting it to - false will avoid using packed encoding. This option is prohibited in - Editions, but the `repeated_field_encoding` feature can be used to control - the behavior. - - - - Gets whether the "packed" field is set - - - Clears the value of the "packed" field - - - Field number for the "jstype" field. - - - - The jstype option determines the JavaScript type used for values of the - field. The option is permitted only for 64 bit integral and fixed types - (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - is represented as JavaScript string, which avoids loss of precision that - can happen when a large value is converted to a floating point JavaScript. - Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - use the JavaScript "number" type. The behavior of the default option - JS_NORMAL is implementation dependent. - - This option is an enum to permit additional types to be added, e.g. - goog.math.Integer. - - - - Gets whether the "jstype" field is set - - - Clears the value of the "jstype" field - - - Field number for the "lazy" field. - - - - Should this field be parsed lazily? Lazy applies only to message-type - fields. It means that when the outer message is initially parsed, the - inner message's contents will not be parsed but instead stored in encoded - form. The inner message will actually be parsed when it is first accessed. - - This is only a hint. Implementations are free to choose whether to use - eager or lazy parsing regardless of the value of this option. However, - setting this option true suggests that the protocol author believes that - using lazy parsing on this field is worth the additional bookkeeping - overhead typically needed to implement it. - - This option does not affect the public interface of any generated code; - all method signatures remain the same. Furthermore, thread-safety of the - interface is not affected by this option; const methods remain safe to - call from multiple threads concurrently, while non-const methods continue - to require exclusive access. - - Note that lazy message fields are still eagerly verified to check - ill-formed wireformat or missing required fields. Calling IsInitialized() - on the outer message would fail if the inner message has missing required - fields. Failed verification would result in parsing failure (except when - uninitialized messages are acceptable). - - - - Gets whether the "lazy" field is set - - - Clears the value of the "lazy" field - - - Field number for the "unverified_lazy" field. - - - - unverified_lazy does no correctness checks on the byte stream. This should - only be used where lazy with verification is prohibitive for performance - reasons. - - - - Gets whether the "unverified_lazy" field is set - - - Clears the value of the "unverified_lazy" field - - - Field number for the "deprecated" field. - - - - Is this field deprecated? - Depending on the target platform, this can emit Deprecated annotations - for accessors, or it will be completely ignored; in the very least, this - is a formalization for deprecating fields. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "weak" field. - - - - For Google-internal migration only. Do not use. - - - - Gets whether the "weak" field is set - - - Clears the value of the "weak" field - - - Field number for the "debug_redact" field. - - - - Indicate that the field value should not be printed out when using debug - formats, e.g. when the field contains sensitive credentials. - - - - Gets whether the "debug_redact" field is set - - - Clears the value of the "debug_redact" field - - - Field number for the "retention" field. - - - Gets whether the "retention" field is set - - - Clears the value of the "retention" field - - - Field number for the "targets" field. - - - Field number for the "edition_defaults" field. - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "feature_support" field. - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the FieldOptions message type. - - - - Default mode. - - - - - The option [ctype=CORD] may be applied to a non-repeated field of type - "bytes". It indicates that in C++, the data should be stored in a Cord - instead of a string. For very large strings, this may reduce memory - fragmentation. It may also allow better performance when parsing from a - Cord, or when parsing with aliasing enabled, as the parsed Cord may then - alias the original buffer. - - - - - Use the default type. - - - - - Use JavaScript strings. - - - - - Use JavaScript numbers. - - - - - If set to RETENTION_SOURCE, the option will be omitted from the binary. - - - - - This indicates the types of entities that the field may apply to when used - as an option. If it is unset, then the field may be freely used as an - option on any kind of entity. - - - - Field number for the "edition" field. - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - Field number for the "value" field. - - - - Textproto value. - - - - Gets whether the "value" field is set - - - Clears the value of the "value" field - - - - Information about the support window of a feature. - - - - Field number for the "edition_introduced" field. - - - - The edition that this feature was first available in. In editions - earlier than this one, the default assigned to EDITION_LEGACY will be - used, and proto files will not be able to override it. - - - - Gets whether the "edition_introduced" field is set - - - Clears the value of the "edition_introduced" field - - - Field number for the "edition_deprecated" field. - - - - The edition this feature becomes deprecated in. Using this after this - edition may trigger warnings. - - - - Gets whether the "edition_deprecated" field is set - - - Clears the value of the "edition_deprecated" field - - - Field number for the "deprecation_warning" field. - - - - The deprecation warning text if this feature is used after the edition it - was marked deprecated in. - - - - Gets whether the "deprecation_warning" field is set - - - Clears the value of the "deprecation_warning" field - - - Field number for the "edition_removed" field. - - - - The edition this feature is no longer available in. In editions after - this one, the last default assigned will be used, and proto files will - not be able to override it. - - - - Gets whether the "edition_removed" field is set - - - Clears the value of the "edition_removed" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "allow_alias" field. - - - - Set this option to true to allow mapping different tag names to the same - value. - - - - Gets whether the "allow_alias" field is set - - - Clears the value of the "allow_alias" field - - - Field number for the "deprecated" field. - - - - Is this enum deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum, or it will be completely ignored; in the very least, this - is a formalization for deprecating enums. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "deprecated_legacy_json_field_conflicts" field. - - - - Enable the legacy handling of JSON field name conflicts. This lowercases - and strips underscored from the fields before comparison in proto3 only. - The new behavior takes `json_name` into account and applies to proto2 as - well. - TODO Remove this legacy behavior once downstream teams have - had time to migrate. - - - - Gets whether the "deprecated_legacy_json_field_conflicts" field is set - - - Clears the value of the "deprecated_legacy_json_field_conflicts" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this enum value deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum value, or it will be completely ignored; in the very least, - this is a formalization for deprecating enum values. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "debug_redact" field. - - - - Indicate that fields annotated with this enum value should not be printed - out when using debug formats, e.g. when the field contains sensitive - credentials. - - - - Gets whether the "debug_redact" field is set - - - Clears the value of the "debug_redact" field - - - Field number for the "feature_support" field. - - - - Information about the support window of a feature value. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "deprecated" field. - - - - Is this service deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the service, or it will be completely ignored; in the very least, - this is a formalization for deprecating services. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this method deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the method, or it will be completely ignored; in the very least, - this is a formalization for deprecating methods. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "idempotency_level" field. - - - Gets whether the "idempotency_level" field is set - - - Clears the value of the "idempotency_level" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the MethodOptions message type. - - - - Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - or neither? HTTP based RPC implementation may choose GET verb for safe - methods, and PUT verb for idempotent methods instead of the default POST. - - - - - implies idempotent - - - - - idempotent, but may have side effects - - - - - A message representing a option the parser does not recognize. This only - appears in options protos created by the compiler::Parser class. - DescriptorPool resolves these when building Descriptor objects. Therefore, - options protos in descriptor objects (e.g. returned by Descriptor::options(), - or produced by Descriptor::CopyTo()) will never have UninterpretedOptions - in them. - - - - Field number for the "name" field. - - - Field number for the "identifier_value" field. - - - - The value of the uninterpreted option, in whatever type the tokenizer - identified it as during parsing. Exactly one of these should be set. - - - - Gets whether the "identifier_value" field is set - - - Clears the value of the "identifier_value" field - - - Field number for the "positive_int_value" field. - - - Gets whether the "positive_int_value" field is set - - - Clears the value of the "positive_int_value" field - - - Field number for the "negative_int_value" field. - - - Gets whether the "negative_int_value" field is set - - - Clears the value of the "negative_int_value" field - - - Field number for the "double_value" field. - - - Gets whether the "double_value" field is set - - - Clears the value of the "double_value" field - - - Field number for the "string_value" field. - - - Gets whether the "string_value" field is set - - - Clears the value of the "string_value" field - - - Field number for the "aggregate_value" field. - - - Gets whether the "aggregate_value" field is set - - - Clears the value of the "aggregate_value" field - - - Container for nested types declared in the UninterpretedOption message type. - - - - The name of the uninterpreted option. Each string represents a segment in - a dot-separated name. is_extension is true iff a segment represents an - extension (denoted with parentheses in options specs in .proto files). - E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents - "foo.(bar.baz).moo". - - - - Field number for the "name_part" field. - - - Gets whether the "name_part" field is set - - - Clears the value of the "name_part" field - - - Field number for the "is_extension" field. - - - Gets whether the "is_extension" field is set - - - Clears the value of the "is_extension" field - - - - TODO Enums in C++ gencode (and potentially other languages) are - not well scoped. This means that each of the feature enums below can clash - with each other. The short names we've chosen maximize call-site - readability, but leave us very open to this scenario. A future feature will - be designed and implemented to handle this, hopefully before we ever hit a - conflict here. - - - - Field number for the "field_presence" field. - - - Gets whether the "field_presence" field is set - - - Clears the value of the "field_presence" field - - - Field number for the "enum_type" field. - - - Gets whether the "enum_type" field is set - - - Clears the value of the "enum_type" field - - - Field number for the "repeated_field_encoding" field. - - - Gets whether the "repeated_field_encoding" field is set - - - Clears the value of the "repeated_field_encoding" field - - - Field number for the "utf8_validation" field. - - - Gets whether the "utf8_validation" field is set - - - Clears the value of the "utf8_validation" field - - - Field number for the "message_encoding" field. - - - Gets whether the "message_encoding" field is set - - - Clears the value of the "message_encoding" field - - - Field number for the "json_format" field. - - - Gets whether the "json_format" field is set - - - Clears the value of the "json_format" field - - - Field number for the "enforce_naming_style" field. - - - Gets whether the "enforce_naming_style" field is set - - - Clears the value of the "enforce_naming_style" field - - - Container for nested types declared in the FeatureSet message type. - - - - A compiled specification for the defaults of a set of features. These - messages are generated from FeatureSet extensions and can be used to seed - feature resolution. The resolution with this object becomes a simple search - for the closest matching edition, followed by proto merges. - - - - Field number for the "defaults" field. - - - Field number for the "minimum_edition" field. - - - - The minimum supported edition (inclusive) when this was constructed. - Editions before this will not have defaults. - - - - Gets whether the "minimum_edition" field is set - - - Clears the value of the "minimum_edition" field - - - Field number for the "maximum_edition" field. - - - - The maximum known edition (inclusive) when this was constructed. Editions - after this will not have reliable defaults. - - - - Gets whether the "maximum_edition" field is set - - - Clears the value of the "maximum_edition" field - - - Container for nested types declared in the FeatureSetDefaults message type. - - - - A map from every known edition with a unique set of defaults to its - defaults. Not all editions may be contained here. For a given edition, - the defaults at the closest matching edition ordered at or before it should - be used. This field must be in strict ascending order by edition. - - - - Field number for the "edition" field. - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - Field number for the "overridable_features" field. - - - - Defaults of features that can be overridden in this edition. - - - - Field number for the "fixed_features" field. - - - - Defaults of features that can't be overridden in this edition. - - - - - Encapsulates information about the original source file from which a - FileDescriptorProto was generated. - - - - Field number for the "location" field. - - - - A Location identifies a piece of source code in a .proto file which - corresponds to a particular definition. This information is intended - to be useful to IDEs, code indexers, documentation generators, and similar - tools. - - For example, say we have a file like: - message Foo { - optional string foo = 1; - } - Let's look at just the field definition: - optional string foo = 1; - ^ ^^ ^^ ^ ^^^ - a bc de f ghi - We have the following locations: - span path represents - [a,i) [ 4, 0, 2, 0 ] The whole field definition. - [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - - Notes: - - A location may refer to a repeated field itself (i.e. not to any - particular index within it). This is used whenever a set of elements are - logically enclosed in a single code segment. For example, an entire - extend block (possibly containing multiple extension definitions) will - have an outer location whose path refers to the "extensions" repeated - field without an index. - - Multiple locations may have the same path. This happens when a single - logical declaration is spread out across multiple places. The most - obvious example is the "extend" block again -- there may be multiple - extend blocks in the same scope, each of which will have the same path. - - A location's span is not always a subset of its parent's span. For - example, the "extendee" of an extension declaration appears at the - beginning of the "extend" block and is shared by all extensions within - the block. - - Just because a location's span is a subset of some other location's span - does not mean that it is a descendant. For example, a "group" defines - both a type and a field in a single declaration. Thus, the locations - corresponding to the type and field and their components will overlap. - - Code which tries to interpret locations should probably be designed to - ignore those that it doesn't understand, as more types of locations could - be recorded in the future. - - - - Container for nested types declared in the SourceCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies which part of the FileDescriptorProto was defined at this - location. - - Each element is a field number or an index. They form a path from - the root FileDescriptorProto to the place where the definition appears. - For example, this path: - [ 4, 3, 2, 7, 1 ] - refers to: - file.message_type(3) // 4, 3 - .field(7) // 2, 7 - .name() // 1 - This is because FileDescriptorProto.message_type has field number 4: - repeated DescriptorProto message_type = 4; - and DescriptorProto.field has field number 2: - repeated FieldDescriptorProto field = 2; - and FieldDescriptorProto.name has field number 1: - optional string name = 1; - - Thus, the above path gives the location of a field name. If we removed - the last element: - [ 4, 3, 2, 7 ] - this path refers to the whole field declaration (from the beginning - of the label to the terminating semicolon). - - - - Field number for the "span" field. - - - - Always has exactly three or four elements: start line, start column, - end line (optional, otherwise assumed same as start line), end column. - These are packed into a single field for efficiency. Note that line - and column numbers are zero-based -- typically you will want to add - 1 to each before displaying to a user. - - - - Field number for the "leading_comments" field. - - - - If this SourceCodeInfo represents a complete declaration, these are any - comments appearing before and after the declaration which appear to be - attached to the declaration. - - A series of line comments appearing on consecutive lines, with no other - tokens appearing on those lines, will be treated as a single comment. - - leading_detached_comments will keep paragraphs of comments that appear - before (but not connected to) the current element. Each paragraph, - separated by empty lines, will be one comment element in the repeated - field. - - Only the comment content is provided; comment markers (e.g. //) are - stripped out. For block comments, leading whitespace and an asterisk - will be stripped from the beginning of each line other than the first. - Newlines are included in the output. - - Examples: - - optional int32 foo = 1; // Comment attached to foo. - // Comment attached to bar. - optional int32 bar = 2; - - optional string baz = 3; - // Comment attached to baz. - // Another line attached to baz. - - // Comment attached to moo. - // - // Another line attached to moo. - optional double moo = 4; - - // Detached comment for corge. This is not leading or trailing comments - // to moo or corge because there are blank lines separating it from - // both. - - // Detached comment for corge paragraph 2. - - optional string corge = 5; - /* Block comment attached - * to corge. Leading asterisks - * will be removed. */ - /* Block comment attached to - * grault. */ - optional int32 grault = 6; - - // ignored detached comments. - - - - Gets whether the "leading_comments" field is set - - - Clears the value of the "leading_comments" field - - - Field number for the "trailing_comments" field. - - - Gets whether the "trailing_comments" field is set - - - Clears the value of the "trailing_comments" field - - - Field number for the "leading_detached_comments" field. - - - - Describes the relationship between generated code and its original source - file. A GeneratedCodeInfo message is associated with only one generated - source file, but may contain references to different source .proto files. - - - - Field number for the "annotation" field. - - - - An Annotation connects some span of text in generated code to an element - of its generating .proto file. - - - - Container for nested types declared in the GeneratedCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies the element in the original source .proto file. This field - is formatted the same as SourceCodeInfo.Location.path. - - - - Field number for the "source_file" field. - - - - Identifies the filesystem path to the original source .proto. - - - - Gets whether the "source_file" field is set - - - Clears the value of the "source_file" field - - - Field number for the "begin" field. - - - - Identifies the starting offset in bytes in the generated code - that relates to the identified object. - - - - Gets whether the "begin" field is set - - - Clears the value of the "begin" field - - - Field number for the "end" field. - - - - Identifies the ending offset in bytes in the generated code that - relates to the identified object. The end offset should be one past - the last relevant byte (so the length of the text = end - begin). - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "semantic" field. - - - Gets whether the "semantic" field is set - - - Clears the value of the "semantic" field - - - Container for nested types declared in the Annotation message type. - - - - Represents the identified object's effect on the element in the original - .proto file. - - - - - There is no effect or the effect is indescribable. - - - - - The element is set or otherwise mutated. - - - - - An alias to the element is returned. - - - - - Base class for nearly all descriptors, providing common functionality. - - - - - The feature set for this descriptor, including inherited features. - This is internal as external users should use the properties on individual - descriptor types (e.g. FieldDescriptor.IsPacked) rather than querying features directly. - - - - - The index of this descriptor within its parent descriptor. - - - This returns the index of this descriptor within its parent, for - this descriptor's type. (There can be duplicate values for different - types, e.g. one enum type with index 0 and one message type with index 0.) - - - - - Returns the name of the entity (field, message etc) being described. - - - - - The fully qualified name of the descriptor's target. - - - - - The file this descriptor was declared in. - - - - - The declaration information about the descriptor, or null if no declaration information - is available for this descriptor. - - - This information is typically only available for dynamically loaded descriptors, - for example within a protoc plugin where the full descriptors, including source info, - are passed to the code by protoc. - - - - - Retrieves the list of nested descriptors corresponding to the given field number, if any. - If the field is unknown or not a nested descriptor list, return null to terminate the search. - The default implementation returns null. - - - - - Provides additional information about the declaration of a descriptor, - such as source location and comments. - - - - - The descriptor this declaration relates to. - - - - - The start line of the declaration within the source file. This value is 1-based. - - - - - The start column of the declaration within the source file. This value is 1-based. - - - - - // The end line of the declaration within the source file. This value is 1-based. - - - - - The end column of the declaration within the source file. This value is 1-based, and - exclusive. (The final character of the declaration is on the column before this value.) - - - - - Comments appearing before the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing after the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing before the declaration, but separated from it by blank - lines. Each string represents a newline-separated paragraph of comments. - Leading whitespace and the comment marker ("//") are removed from each line. - The list is never null, but may be empty. Likewise each element is never null, but may be empty. - - - - - Contains lookup tables containing all the descriptors defined in a particular file. - - - - - Finds a symbol of the given name within the pool. - - The type of symbol to look for - Fully-qualified name to look up - The symbol with the given name and type, - or null if the symbol doesn't exist or has the wrong type - - - - Adds a package to the symbol tables. If a package by the same name - already exists, that is fine, but if some other kind of symbol - exists under the same name, an exception is thrown. If the package - has multiple components, this also adds the parent package(s). - - - - - Adds a symbol to the symbol table. - - The symbol already existed - in the symbol table. - - - - Verifies that the descriptor's name is valid (i.e. it contains - only letters, digits and underscores, and does not start with a digit). - - - - - - Returns the field with the given number in the given descriptor, - or null if it can't be found. - - - - - Adds a field to the fieldsByNumber table. - - A field with the same - containing type and number already exists. - - - - Adds an enum value to the enumValuesByNumber and enumValuesByName tables. If an enum value - with the same type and number already exists, this method does nothing to enumValuesByNumber. - (This is allowed; the first value defined with the number takes precedence.) If an enum - value with the same name already exists, this method throws DescriptorValidationException. - (It is expected that this method is called after AddSymbol, which would already have thrown - an exception in this failure case.) - - - - - Looks up a descriptor by name, relative to some other descriptor. - The name may be fully-qualified (with a leading '.'), partially-qualified, - or unqualified. C++-like name lookup semantics are used to search for the - matching descriptor. - - - This isn't heavily optimized, but it's only used during cross linking anyway. - If it starts being used more widely, we should look at performance more carefully. - - - - - Struct used to hold the keys for the enumValuesByName table. - - - - - Internal class containing utility methods when working with descriptors. - - - - - Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert - arrays. - - - - - Converts the given array into a read-only list, applying the specified conversion to - each input element. - - - - - Thrown when building descriptors fails because the source DescriptorProtos - are not valid. - - - - - The full name of the descriptor where the error occurred. - - - - - A human-readable description of the error. (The Message property - is made up of the descriptor's name and this description.) - - - - - Descriptor for an enum type in a .proto file. - - - - - Returns a clone of the underlying describing this enum. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this enum descriptor. - - - - The brief name of the descriptor's target. - - - - - The CLR type for this enum. For generated code, this will be a CLR enum type. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - An unmodifiable list of defined value descriptors for this enum. - - - - - Finds an enum value by number. If multiple enum values have the - same number, this returns the first defined value with that number. - If there is no value for the given number, this returns null. - - - - - Finds an enum value by name. - - The unqualified name of the value (e.g. "FOO"). - The value's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this enum. - - - - - The EnumOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum option for this descriptor - - - - - Gets a repeated value enum option for this descriptor - - - - - Descriptor for a single enum value within an enum in a .proto file. - - - - - Returns a clone of the underlying describing this enum value. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this enum value descriptor. - - - - Returns the name of the enum value described by this object. - - - - - Returns the number associated with this enum value. - - - - - Returns the enum descriptor that this value is part of. - - - - - The (possibly empty) set of custom options for this enum value. - - - - - The EnumValueOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum value option for this descriptor - - - - - Gets a repeated value enum value option for this descriptor - - - - - A collection to simplify retrieving the descriptors of extensions in a descriptor for a message - - - - - Returns a readonly list of all the extensions defined in this type in - the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in ascending field order - - - - - A resolved set of features for a file, message etc. - - - Only features supported by the C# runtime are exposed; currently - all enums in C# are open, and we never perform UTF-8 validation. - If either of those features are ever implemented in this runtime, - the feature settings will be exposed as properties in this class. - - - - - Only relevant to fields. Indicates if a field has explicit presence. - - - - - Only relevant to fields. Indicates how a repeated field should be encoded. - - - - - Only relevant to fields. Indicates how a message-valued field should be encoded. - - - - - Returns a new descriptor based on this one, with the specified overrides. - Multiple calls to this method that produce equivalent feature sets will return - the same instance. - - The proto representation of the "child" feature set to merge with this - one. May be null, in which case this descriptor is returned. - A descriptor based on the current one, with the given set of overrides. - - - - Base class for field accessors. - - - - - Descriptor for a field or extension within a message in a .proto file. - - - - - Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension. - - - - - Returns the oneof containing this field, or null if it is not part of a oneof. - - - - - Returns the oneof containing this field if it's a "real" oneof, or null if either this - field is not part of a oneof, or the oneof is synthetic. - - - - - The effective JSON name for this field. This is usually the lower-camel-cased form of the field name, - but can be overridden using the json_name option in the .proto file. - - - - - The name of the property in the ContainingType.ClrType class. - - - - - Indicates whether this field supports presence, either implicitly (e.g. due to it being a message - type field) or explicitly via Has/Clear members. If this returns true, it is safe to call - and - on this field's accessor with a suitable message. - - - - - Returns a clone of the underlying describing this field. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this field descriptor. - - - - An extension identifier for this field, or null if this field isn't an extension. - - - - - Returns the features from the direct parent: - - The file for top-level extensions - - The oneof for one-of fields - - Otherwise the message - - - - - Returns a feature set with inferred features for the given field, or null if no features - need to be inferred. - - - - - The brief name of the descriptor's target. - - - - - Returns the accessor for this field. - - - - While a describes the field, it does not provide - any way of obtaining or changing the value of the field within a specific message; - that is the responsibility of the accessor. - - - In descriptors for generated code, the value returned by this property will be non-null for all - regular fields. However, if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, and the value of the map field itself is represented by a dictionary in the - reflection API. There are never instances of those "hidden" messages, so no accessor is provided - and this property will return null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - - - Maps a field type as included in the .proto file to a FieldType. - - - - - Returns true if this field is a repeated field; false otherwise. - - - - - Returns true if this field is a required field; false otherwise. - - - - - Returns true if this field is a map field; false otherwise. - - - - - Returns true if this field is a packed, repeated field; false otherwise. - - - - - Returns true if this field extends another message type; false otherwise. - - - - - Returns the type of the field. - - - - - Returns the field number declared in the proto file. - - - - - Compares this descriptor with another one, ordering in "canonical" order - which simply means ascending order by field number. - must be a field of the same type, i.e. the of - both fields must be the same. - - - - - For enum fields, returns the field's type. - - - - - For embedded message and group fields, returns the field's type. - - - - - For extension fields, returns the extended type - - - - - The (possibly empty) set of custom options for this field. - - - - - The FieldOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value field option for this descriptor - - - - - Gets a repeated value field option for this descriptor - - - - - Look up and cross-link all field types etc. - - - - - Enumeration of all the possible field types. - - - - - The double field type. - - - - - The float field type. - - - - - The int64 field type. - - - - - The uint64 field type. - - - - - The int32 field type. - - - - - The fixed64 field type. - - - - - The fixed32 field type. - - - - - The bool field type. - - - - - The string field type. - - - - - The field type used for groups. - - - - - The field type used for message fields. - - - - - The bytes field type. - - - - - The uint32 field type. - - - - - The sfixed32 field type. - - - - - The sfixed64 field type. - - - - - The sint32 field type. - - - - - The sint64 field type. - - - - - The field type used for enum fields. - - - - - The syntax of a .proto file - - - - - Proto2 syntax - - - - - Proto3 syntax - - - - - Editions syntax - - - - - An unknown declared syntax - - - - - Describes a .proto file, including everything defined within. - IDescriptor is implemented such that the File property returns this descriptor, - and the FullName is the same as the Name. - - - - - Computes the full name of a descriptor within this file, with an optional parent message. - - - - - Extracts public dependencies from direct dependencies. This is a static method despite its - first parameter, as the value we're in the middle of constructing is only used for exceptions. - - - - - The descriptor in its protocol message representation. - - - - - Returns a clone of the underlying describing this file. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this file descriptor. - - - - The feature set for this file, including inherited features. - - - - - Returns the edition of the file descriptor. - - - - - The syntax of the file. - - - - - The file name. - - - - - The package as declared in the .proto file. This may or may not - be equivalent to the .NET namespace of the generated classes. - - - - - Unmodifiable list of top-level message types declared in this file. - - - - - Unmodifiable list of top-level enum types declared in this file. - - - - - Unmodifiable list of top-level services declared in this file. - - - - - Unmodifiable list of top-level extensions declared in this file. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if this descriptor was generated using a version of protoc that did not fully - support extensions in C#. - - - - - Unmodifiable list of this file's dependencies (imports). - - - - - Unmodifiable list of this file's public dependencies (public imports). - - - - - The original serialized binary form of this descriptor. - - - - - Implementation of IDescriptor.FullName - just returns the same as Name. - - - - - Implementation of IDescriptor.File - just returns this descriptor. - - - - - Pool containing symbol descriptors. - - - - - Finds a type (message, enum, service or extension) in the file by name. Does not find nested types. - - The unqualified type name to look for. - The type of descriptor to look for - The type's descriptor, or null if not found. - - - - Builds a FileDescriptor from its protocol buffer representation. - - The original serialized descriptor data. - We have only limited proto2 support, so serializing FileDescriptorProto - would not necessarily give us this. - The protocol message form of the FileDescriptor. - FileDescriptors corresponding to all of the - file's dependencies, in the exact order listed in the .proto file. May be null, - in which case it is treated as an empty array. - Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false). - Details about generated code, for the purposes of reflection. - If is not - a valid descriptor. This can occur for a number of reasons, such as a field - having an undefined type or because two messages were defined with the same name. - - - - Creates a descriptor for generated code. - - - This method is only designed to be used by the results of generating code with protoc, - which creates the appropriate dependencies etc. It has to be public because the generated - code is "external", but should not be called directly by end users. - - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The extension registry to use when parsing, or null if no extensions are required. - The file descriptors corresponding to . - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The file descriptors corresponding to . - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Returns the file descriptor for descriptor.proto. - - - This is used for protos which take a direct dependency on descriptor.proto, typically for - annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf - runtime for reflection purposes. The messages are internal to the runtime as they would require - proto2 semantics for full support, but the file descriptor is available via this property. The - C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto. - - - The file descriptor for descriptor.proto. - - - - - The (possibly empty) set of custom options for this file. - - - - - The FileOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value file option for this descriptor - - - - - Gets a repeated value file option for this descriptor - - - - - Performs initialization for the given generic type argument. - - - This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated) - to make calls into the reflection machinery of this library to express an intention to use that type - reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers - attempting to determine which generic type arguments need to be handled will spot the code path and act - accordingly. - - The type to force initialization for. - - - - Extra information provided by generated code when initializing a message or file descriptor. - These are constructed as required, and are not long-lived. Hand-written code should - never need to use this type. - - - - - Irrelevant for file descriptors; the CLR type for the message for message descriptors. - - - - - Irrelevant for file descriptors; the parser for message descriptors. - - - - - Irrelevant for file descriptors; the CLR property names (in message descriptor field order) - for fields in the message for message descriptors. - - - - - The extensions defined within this file/message descriptor - - - - - Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order) - for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo", - there will be a "FooCase" property and a "ClearFoo" method. - - - - - The reflection information for types within this file/message descriptor. Elements may be null - if there is no corresponding generated type, e.g. for map entry types. - - - - - The CLR types for enums within this file/message descriptor. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums. - - - - - Interface implemented by all descriptor types. - - - - - Returns the name of the entity (message, field etc) being described. - - - - - Returns the fully-qualified name of the entity being described. - - - - - Returns the descriptor for the .proto file that this entity is part of. - - - - - Allows fields to be reflectively accessed. - - - - - Returns the descriptor associated with this field. - - - - - Clears the field in the specified message. (For repeated fields, - this clears the list.) - - - - - Fetches the field value. For repeated values, this will be an - implementation. For map values, this will be an - implementation. - - - - - Indicates whether the field in the specified message is set. - For proto3 fields that aren't explicitly optional, this throws an - - - - - Mutator for single "simple" fields only. - - - Repeated fields are mutated by fetching the value and manipulating it as a list. - Map fields are mutated by fetching the value and manipulating it as a dictionary. - - The field is not a "simple" field. - - - - Accessor for map fields. - - - - - Describes a message type. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this message. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this message descriptor. - - - - The CLR type used to represent message instances from this descriptor. - - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, so this property will return null in such cases. - - - For wrapper types ( and the like), the type returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - A parser for this message type. - - - - As is not generic, this cannot be statically - typed to the relevant type, but it should produce objects of a type compatible with . - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. No message parser object is created for - such messages, so this property will return null in such cases. - - - For wrapper types ( and the like), the parser returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - Returns whether this message is one of the "well known types" which may have runtime/protoc support. - - - - - Returns whether this message is one of the "wrapper types" used for fields which represent primitive values - with the addition of presence. - - - - - Returns whether this message was synthetically-created to store key/value pairs in a - map field. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - A collection of fields, which can be retrieved by name or field number. - - - - - An unmodifiable list of extensions defined in this message's scope. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if they are declared in a file generated using a version of protoc that did not fully - support extensions in C#. - - - - - An unmodifiable list of this message type's nested types. - - - - - An unmodifiable list of this message type's enum types. - - - - - An unmodifiable list of the "oneof" field collections in this message type. - All "real" oneofs (where returns false) - come before synthetic ones. - - - - - The number of real "oneof" descriptors in this message type. Every element in - with an index less than this will have a property value - of false; every element with an index greater than or equal to this will have a - property value of true. - - - - - Finds a field by field name. - - The unqualified name of the field (e.g. "foo"). - The field's descriptor, or null if not found. - - - - Finds a field by field number. - - The field number within this message type. - The field's descriptor, or null if not found. - - - - Finds a nested descriptor by name. The is valid for fields, nested - message types, oneofs and enums. - - The unqualified name of the descriptor, e.g. "Foo" - The descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this message. - - - - - The MessageOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value message option for this descriptor - - - - - Gets a repeated value message option for this descriptor - - - - - Looks up and cross-links all fields and nested types. - - - - - A collection to simplify retrieving the field accessor for a particular field. - - - - - Returns the fields in the message as an immutable list, in the order in which they - are declared in the source .proto file. - - - - - Returns the fields in the message as an immutable list, in ascending field number - order. Field numbers need not be contiguous, so there is no direct mapping from the - index in the list to the field number; to retrieve a field by field number, it is better - to use the indexer. - - - - - Returns a read-only dictionary mapping the field names in this message as they're available - in the JSON representation to the field descriptors. For example, a field foo_bar - in the message would result two entries, one with a key fooBar and one with a key - foo_bar, both referring to the same field. - - - - - Retrieves the descriptor for the field with the given number. - - Number of the field to retrieve the descriptor for - The accessor for the given field - The message descriptor does not contain a field - with the given number - - - - Retrieves the descriptor for the field with the given name. - - Name of the field to retrieve the descriptor for - The descriptor for the given field - The message descriptor does not contain a field - with the given name - - - - Describes a single method in a service. - - - - - The service this method belongs to. - - - - - The method's input type. - - - - - The method's input type. - - - - - Indicates if client streams multiple requests. - - - - - Indicates if server streams multiple responses. - - - - - The (possibly empty) set of custom options for this method. - - - - - The MethodOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value method option for this descriptor - - - - - Gets a repeated value method option for this descriptor - - - - - Returns a clone of the underlying describing this method. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this method descriptor. - - - - The brief name of the descriptor's target. - - - - - Reflection access for a oneof, allowing clear and "get case" actions. - - - - - Gets the descriptor for this oneof. - - - The descriptor of the oneof. - - - - - Clears the oneof in the specified message. - - - - - Indicates which field in the oneof is set for specified message - - - - - Describes a "oneof" field collection in a message type: a set of - fields of which at most one can be set in any particular message. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this oneof. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this oneof descriptor. - - - - Gets the message type containing this oneof. - - - The message type containing this oneof. - - - - - Gets the fields within this oneof, in declaration order. - - - The fields within this oneof, in declaration order. - - - - - Returns true if this oneof is a synthetic oneof containing a proto3 optional field; - false otherwise. - - - - - Gets an accessor for reflective access to the values associated with the oneof - in a particular message. - - - - In descriptors for generated code, the value returned by this property will always be non-null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - The accessor used for reflective access. - - - - - The (possibly empty) set of custom options for this oneof. - - - - - The OneofOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value oneof option for this descriptor - - - - - Gets a repeated value oneof option for this descriptor - - - - - Specifies the original name (in the .proto file) of a named element, - such as an enum value. - - - - - The name of the element in the .proto file. - - - - - If the name is preferred in the .proto file. - - - - - Constructs a new attribute instance for the given name. - - The name of the element in the .proto file. - - - - Represents a package in the symbol table. We use PackageDescriptors - just as placeholders so that someone cannot define, say, a message type - that has the same name as an existing package. - - - - - The methods in this class are somewhat evil, and should not be tampered with lightly. - Basically they allow the creation of relatively weakly typed delegates from MethodInfos - which are more strongly typed. They do this by creating an appropriate strongly typed - delegate from the MethodInfo, and then calling that within an anonymous method. - Mind-bending stuff (at least to your humble narrator) but the resulting delegates are - very fast compared with calling Invoke later on. - - - - - Empty Type[] used when calling GetProperty to force property instead of indexer fetching. - - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to object. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to the specified type. The method is expected - to actually return an enum (because of where we're calling it - for oneof cases). Sometimes - that means we need some extra work to perform conversions. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of - the method. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - type that declares the method. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of - the method. - - - - - Creates a reflection helper for the given type arguments. Currently these are created on - demand rather than cached; this will be "busy" when initially loading a message's - descriptor, but after that they can be garbage collected. We could cache them by type if - that proves to be important, but creating an object is pretty cheap. - - - - - Accessor for repeated fields. - - - - - Describes a service type. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this service. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this service descriptor. - - - - An unmodifiable list of methods in this service. - - - - - Finds a method by name. - - The unqualified name of the method (e.g. "Foo"). - The method's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this service. - - - - - The ServiceOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value service option for this descriptor - - - - - Gets a repeated value service option for this descriptor - - - - - Accessor for single fields. - - - - - An immutable registry of types which can be looked up by their full name. - - - - - An empty type registry, containing no types. - - - - - Attempts to find a message descriptor by its full name. - - The full name of the message, which is the dot-separated - combination of package, containing messages and message name - The message descriptor corresponding to or null - if there is no such message descriptor. - - - - Creates a type registry from the specified set of file descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the specified set of file descriptors. - - - All message types within all the specified files are added to the registry, and - the dependencies of the specified files are also added, recursively. - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - The specified message descriptors are only used to identify their file descriptors; the returned registry - contains all the types within the file descriptors which contain the specified message descriptors (and - the dependencies of those files), not just the specified messages. - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls. - - - - - A set of extension methods on - - - - Adds the elements of the specified span to the end of the . - The type of elements in the . - The list to which the elements should be added. - The span whose elements should be added to the end of the . - The is null. - - - - Abstraction for reading from a stream / read only sequence. - Parsing from the buffer is a loop of reading from current buffer / refreshing the buffer once done. - - - - - Initialize an instance with a coded input stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a read only sequence. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Represents a single field in an UnknownFieldSet. - - An UnknownField consists of four lists of values. The lists correspond - to the four "wire types" used in the protocol buffer binary format. - Normally, only one of the four lists will contain any values, since it - is impossible to define a valid message type that declares two different - types for the same field number. However, the code is designed to allow - for the case where the same unknown field number is encountered using - multiple different wire types. - - - - - - Creates a new UnknownField. - - - - - Checks if two unknown field are equal. - - - - - Get the hash code of the unknown field. - - - - - Serializes the field, including the field number, and writes it to - - - The unknown field number. - The write context to write to. - - - - Computes the number of bytes required to encode this field, including field - number. - - - - - Merge the values in into this field. For each list - of values, 's values are append to the ones in this - field. - - - - - Returns a new list containing all of the given specified values from - both the and lists. - If is null and is null or empty, - null is returned. Otherwise, either a new list is created (if - is null) or the elements of are added to . - - - - - Adds a varint value. - - - - - Adds a fixed32 value. - - - - - Adds a fixed64 value. - - - - - Adds a length-delimited value. - - - - - Adds to the , creating - a new list if is null. The list is returned - either - the original reference or the new list. - - - - - Used to keep track of fields which were seen when parsing a protocol message - but whose field numbers or types are unrecognized. This most frequently - occurs when new fields are added to a message type and then messages containing - those fields are read by old software that was built before the new types were - added. - - Most users will never need to use this class directly. - - - - - Creates a new UnknownFieldSet. - - - - - Checks whether or not the given field number is present in the set. - - - - - Serializes the set and writes it to . - - - - - Serializes the set and writes it to . - - - - - Gets the number of bytes required to encode this set. - - - - - Checks if two unknown field sets are equal. - - - - - Gets the unknown field set's hash code. - - - - - Adds a field to the set. If a field with the same number already exists, it - is replaced. - - - - - Parse a single field from and merge it - into this set. - - The parse context from which to read the field - false if the tag is an "end group" tag, true otherwise - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The coded input stream containing the field - The merged UnknownFieldSet - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The parse context from which to read the field - The merged UnknownFieldSet - - - - Merges the fields from into this set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Created a new UnknownFieldSet to if - needed and merges the fields from into the first set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Adds a field to the unknown field set. If a field with the same - number already exists, the two are merged. - - - - - Clone an unknown field set from . - - - - - Provides a number of unsafe byte operations to be used by advanced applications with high performance - requirements. These methods are referred to as "unsafe" due to the fact that they potentially expose - the backing buffer of a to the application. - - - - The methods in this class should only be called if it is guaranteed that the buffer backing the - will never change! Mutation of a can lead to unexpected - and undesirable consequences in your application, and will likely be difficult to debug. Proceed with caution! - - - This can have a number of significant side affects that have spooky-action-at-a-distance-like behavior. In - particular, if the bytes value changes out from under a Protocol Buffer: - - - - serialization may throw - - - serialization may succeed but the wrong bytes may be written out - - - objects that are normally immutable (such as ByteString) are no longer immutable - - - hashCode may be incorrect - - - - - - - Constructs a new from the given bytes. The bytes are not copied, - and must not be modified while the is in use. - This API is experimental and subject to change. - - - - - An unsafe class that provides a set of methods to access the underlying data representations of - collections. - - - - - - Returns a that wraps the current backing array of the given - . - - - Values in the should not be set to null. Use - or to - remove items instead. - - - The returned is only valid until the size of the - is modified, after which its state becomes undefined. - Modifying existing elements without changing the size is safe as long as the modifications - do not set null values. - - - - The type of elements in the . - - - The for which to wrap the current backing array. Must not be - null. - - - A that wraps the current backing array of the - . - - - Thrown if is . - - - - - - Sets the count of the specified to the given value. - - - This method should only be called if the subsequent code guarantees to populate - the field with the specified number of items. - - - If count is less than , the collection is effectively - trimmed down to the first count elements. - is unchanged, meaning the underlying array remains allocated. - - - - The type of elements in the . - - - The field to set the count of. Must not be null. - - - The value to set the field's count to. Must be non-negative. - - - Thrown if is . - - - Thrown if is negative. - - - - Holder for reflection information generated from google/protobuf/any.proto - - - File descriptor for google/protobuf/any.proto - - - - `Any` contains an arbitrary serialized protocol buffer message along with a - URL that describes the type of the serialized message. - - Protobuf library provides support to pack/unpack Any values in the form - of utility functions or additional generated methods of the Any type. - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". - - JSON - ==== - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": <string>, - "lastName": <string> - } - - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - - - - Field number for the "type_url" field. - - - - A URL/resource name that uniquely identifies the type of the serialized - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical form - (e.g., leading "." is not accepted). - - In practice, teams usually precompile into the binary all types that they - expect it to use in the context of Any. However, for URLs which use the - scheme `http`, `https`, or no scheme, one can optionally set up a type - server that maps type URLs to message definitions as follows: - - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. As of May 2023, there are no widely used type server - implementations and no plans to implement one. - - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - - - - Field number for the "value" field. - - - - Must be a valid serialized protocol buffer of the above specified type. - - - - - Retrieves the type name for a type URL, matching the - of the packed message type. - - - - This is always just the last part of the URL, after the final slash. No validation of - anything before the trailing slash is performed. If the type URL does not include a slash, - an empty string is returned rather than an exception being thrown; this won't match any types, - and the calling code is probably in a better position to give a meaningful error. - - - There is no handling of fragments or queries at the moment. - - - The URL to extract the type name from - The type name - - - - Returns a bool indictating whether this Any message is of the target message type - - The descriptor of the message type - true if the type name matches the descriptor's full name or false otherwise - - - - Unpacks the content of this Any message into the target message type, - which must match the type URL within this Any message. - - The type of message to unpack the content into. - The unpacked message. - The target message type doesn't match the type URL in this message - - - - Attempts to unpack the content of this Any message into the target message type, - if it matches the type URL within this Any message. - - The type of message to attempt to unpack the content into. - true if the message was successfully unpacked; false if the type name didn't match - - - - Attempts to unpack the content of this Any message into one of the message types - in the given type registry, based on the type URL. - - The type registry to consult for messages. - The unpacked message, or null if no matching message was found. - - - - Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com". - - The message to pack. - An Any message with the content and type URL of . - - - - Packs the specified message into an Any message using the specified type URL prefix. - - The message to pack. - The prefix for the type URL. - An Any message with the content and type URL of . - - - Holder for reflection information generated from google/protobuf/api.proto - - - File descriptor for google/protobuf/api.proto - - - - Api is a light-weight descriptor for an API Interface. - - Interfaces are also described as "protocol buffer services" in some contexts, - such as by the "service" keyword in a .proto file, but they are different - from API Services, which represent a concrete implementation of an interface - as opposed to simply a description of methods and bindings. They are also - sometimes simply referred to as "APIs" in other contexts, such as the name of - this message itself. See https://cloud.google.com/apis/design/glossary for - detailed terminology. - - - - Field number for the "name" field. - - - - The fully qualified name of this interface, including package name - followed by the interface's simple name. - - - - Field number for the "methods" field. - - - - The methods of this interface, in unspecified order. - - - - Field number for the "options" field. - - - - Any metadata attached to the interface. - - - - Field number for the "version" field. - - - - A version string for this interface. If specified, must have the form - `major-version.minor-version`, as in `1.10`. If the minor version is - omitted, it defaults to zero. If the entire version field is empty, the - major version is derived from the package name, as outlined below. If the - field is not empty, the version in the package name will be verified to be - consistent with what is provided here. - - The versioning schema uses [semantic - versioning](http://semver.org) where the major version number - indicates a breaking change and the minor version an additive, - non-breaking change. Both version numbers are signals to users - what to expect from different versions, and should be carefully - chosen based on the product plan. - - The major version is also reflected in the package name of the - interface, which must end in `v<major-version>`, as in - `google.feature.v1`. For major versions 0 and 1, the suffix can - be omitted. Zero major versions must only be used for - experimental, non-GA interfaces. - - - - Field number for the "source_context" field. - - - - Source context for the protocol buffer service represented by this - message. - - - - Field number for the "mixins" field. - - - - Included interfaces. See [Mixin][]. - - - - Field number for the "syntax" field. - - - - The source syntax of the service. - - - - - Method represents a method of an API interface. - - - - Field number for the "name" field. - - - - The simple name of this method. - - - - Field number for the "request_type_url" field. - - - - A URL of the input message type. - - - - Field number for the "request_streaming" field. - - - - If true, the request is streamed. - - - - Field number for the "response_type_url" field. - - - - The URL of the output message type. - - - - Field number for the "response_streaming" field. - - - - If true, the response is streamed. - - - - Field number for the "options" field. - - - - Any metadata attached to the method. - - - - Field number for the "syntax" field. - - - - The source syntax of this method. - - - - - Declares an API Interface to be included in this interface. The including - interface must redeclare all the methods from the included interface, but - documentation and options are inherited as follows: - - - If after comment and whitespace stripping, the documentation - string of the redeclared method is empty, it will be inherited - from the original method. - - - Each annotation belonging to the service config (http, - visibility) which is not set in the redeclared method will be - inherited. - - - If an http annotation is inherited, the path pattern will be - modified as follows. Any version prefix will be replaced by the - version of the including interface plus the [root][] path if - specified. - - Example of a simple mixin: - - package google.acl.v1; - service AccessControl { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v1/{resource=**}:getAcl"; - } - } - - package google.storage.v2; - service Storage { - rpc GetAcl(GetAclRequest) returns (Acl); - - // Get a data record. - rpc GetData(GetDataRequest) returns (Data) { - option (google.api.http).get = "/v2/{resource=**}"; - } - } - - Example of a mixin configuration: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - - The mixin construct implies that all methods in `AccessControl` are - also declared with same name and request/response types in - `Storage`. A documentation generator or annotation processor will - see the effective `Storage.GetAcl` method after inheriting - documentation and annotations as follows: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/{resource=**}:getAcl"; - } - ... - } - - Note how the version in the path pattern changed from `v1` to `v2`. - - If the `root` field in the mixin is specified, it should be a - relative path under which inherited HTTP paths are placed. Example: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - root: acls - - This implies the following inherited HTTP annotation: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; - } - ... - } - - - - Field number for the "name" field. - - - - The fully qualified name of the interface which is included. - - - - Field number for the "root" field. - - - - If non-empty specifies a path under which inherited HTTP paths - are rooted. - - - - Holder for reflection information generated from google/protobuf/duration.proto - - - File descriptor for google/protobuf/duration.proto - - - - A Duration represents a signed, fixed-length span of time represented - as a count of seconds and fractions of seconds at nanosecond - resolution. It is independent of any calendar and concepts like "day" - or "month". It is related to Timestamp in that the difference between - two Timestamp values is a Duration and it can be added or subtracted - from a Timestamp. Range is approximately +-10,000 years. - - # Examples - - Example 1: Compute Duration from two Timestamps in pseudo code. - - Timestamp start = ...; - Timestamp end = ...; - Duration duration = ...; - - duration.seconds = end.seconds - start.seconds; - duration.nanos = end.nanos - start.nanos; - - if (duration.seconds < 0 && duration.nanos > 0) { - duration.seconds += 1; - duration.nanos -= 1000000000; - } else if (duration.seconds > 0 && duration.nanos < 0) { - duration.seconds -= 1; - duration.nanos += 1000000000; - } - - Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - - Timestamp start = ...; - Duration duration = ...; - Timestamp end = ...; - - end.seconds = start.seconds + duration.seconds; - end.nanos = start.nanos + duration.nanos; - - if (end.nanos < 0) { - end.seconds -= 1; - end.nanos += 1000000000; - } else if (end.nanos >= 1000000000) { - end.seconds += 1; - end.nanos -= 1000000000; - } - - Example 3: Compute Duration from datetime.timedelta in Python. - - td = datetime.timedelta(days=3, minutes=10) - duration = Duration() - duration.FromTimedelta(td) - - # JSON Mapping - - In JSON format, the Duration type is encoded as a string rather than an - object, where the string ends in the suffix "s" (indicating seconds) and - is preceded by the number of seconds, with nanoseconds expressed as - fractional seconds. For example, 3 seconds with 0 nanoseconds should be - encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - microsecond should be expressed in JSON format as "3.000001s". - - - - Field number for the "seconds" field. - - - - Signed seconds of the span of time. Must be from -315,576,000,000 - to +315,576,000,000 inclusive. Note: these bounds are computed from: - 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - - - - Field number for the "nanos" field. - - - - Signed fractions of a second at nanosecond resolution of the span - of time. Durations less than one second are represented with a 0 - `seconds` field and a positive or negative `nanos` field. For durations - of one second or more, a non-zero value for the `nanos` field must be - of the same sign as the `seconds` field. Must be from -999,999,999 - to +999,999,999 inclusive. - - - - - The number of nanoseconds in a second. - - - - - The number of nanoseconds in a BCL tick (as used by and ). - - - - - The maximum permitted number of seconds. - - - - - The minimum permitted number of seconds. - - - - - Converts this to a . - - If the duration is not a precise number of ticks, it is truncated towards 0. - The value of this duration, as a TimeSpan. - This value isn't a valid normalized duration, as - described in the documentation. - - - - Converts the given to a . - - The TimeSpan to convert. - The value of the given TimeSpan, as a Duration. - - - - Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes. - - The duration to negate. Must not be null. - The negated value of this duration. - - - - Adds the two specified values together. - - The first value to add. Must not be null. - The second value to add. Must not be null. - - - - - Subtracts one from another. - - The duration to subtract from. Must not be null. - The duration to subtract. Must not be null. - The difference between the two specified durations. - - - - Creates a duration with the normalized values from the given number of seconds and - nanoseconds, conforming with the description in the proto file. - - - - - Converts a duration specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in duration.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which - case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well - as Duration. - - - - - Given another duration, returns 0 if the durations are equivalent, -1 if this duration is shorter than the other, and 1 otherwise. - - - This method expects that both durations are normalized; that is, that the values of - and are within the documented bounds. - If either value is not normalized, the results of this method are unspecified. - - The duration to compare with this object. - An integer indicating whether this duration is shorter or longer than . - - - Holder for reflection information generated from google/protobuf/empty.proto - - - File descriptor for google/protobuf/empty.proto - - - - A generic empty message that you can re-use to avoid defining duplicated - empty messages in your APIs. A typical example is to use it as the request - or the response type of an API method. For instance: - - service Foo { - rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - } - - - - Holder for reflection information generated from google/protobuf/field_mask.proto - - - File descriptor for google/protobuf/field_mask.proto - - - - `FieldMask` represents a set of symbolic field paths, for example: - - paths: "f.a" - paths: "f.b.d" - - Here `f` represents a field in some root message, `a` and `b` - fields in the message found in `f`, and `d` a field found in the - message in `f.b`. - - Field masks are used to specify a subset of fields that should be - returned by a get operation or modified by an update operation. - Field masks also have a custom JSON encoding (see below). - - # Field Masks in Projections - - When used in the context of a projection, a response message or - sub-message is filtered by the API to only contain those fields as - specified in the mask. For example, if the mask in the previous - example is applied to a response message as follows: - - f { - a : 22 - b { - d : 1 - x : 2 - } - y : 13 - } - z: 8 - - The result will not contain specific values for fields x,y and z - (their value will be set to the default, and omitted in proto text - output): - - f { - a : 22 - b { - d : 1 - } - } - - A repeated field is not allowed except at the last position of a - paths string. - - If a FieldMask object is not present in a get operation, the - operation applies to all fields (as if a FieldMask of all fields - had been specified). - - Note that a field mask does not necessarily apply to the - top-level response message. In case of a REST get operation, the - field mask applies directly to the response, but in case of a REST - list operation, the mask instead applies to each individual message - in the returned resource list. In case of a REST custom method, - other definitions may be used. Where the mask applies will be - clearly documented together with its declaration in the API. In - any case, the effect on the returned resource/resources is required - behavior for APIs. - - # Field Masks in Update Operations - - A field mask in update operations specifies which fields of the - targeted resource are going to be updated. The API is required - to only change the values of the fields as specified in the mask - and leave the others untouched. If a resource is passed in to - describe the updated values, the API ignores the values of all - fields not covered by the mask. - - If a repeated field is specified for an update operation, new values will - be appended to the existing repeated field in the target resource. Note that - a repeated field is only allowed in the last position of a `paths` string. - - If a sub-message is specified in the last position of the field mask for an - update operation, then new value will be merged into the existing sub-message - in the target resource. - - For example, given the target message: - - f { - b { - d: 1 - x: 2 - } - c: [1] - } - - And an update message: - - f { - b { - d: 10 - } - c: [2] - } - - then if the field mask is: - - paths: ["f.b", "f.c"] - - then the result will be: - - f { - b { - d: 10 - x: 2 - } - c: [1, 2] - } - - An implementation may provide options to override this default behavior for - repeated and message fields. - - In order to reset a field's value to the default, the field must - be in the mask and set to the default value in the provided resource. - Hence, in order to reset all fields of a resource, provide a default - instance of the resource and set all fields in the mask, or do - not provide a mask as described below. - - If a field mask is not present on update, the operation applies to - all fields (as if a field mask of all fields has been specified). - Note that in the presence of schema evolution, this may mean that - fields the client does not know and has therefore not filled into - the request will be reset to their default. If this is unwanted - behavior, a specific service may require a client to always specify - a field mask, producing an error if not. - - As with get operations, the location of the resource which - describes the updated values in the request message depends on the - operation kind. In any case, the effect of the field mask is - required to be honored by the API. - - ## Considerations for HTTP REST - - The HTTP kind of an update operation which uses a field mask must - be set to PATCH instead of PUT in order to satisfy HTTP semantics - (PUT must only be used for full updates). - - # JSON Encoding of Field Masks - - In JSON, a field mask is encoded as a single string where paths are - separated by a comma. Fields name in each path are converted - to/from lower-camel naming conventions. - - As an example, consider the following message declarations: - - message Profile { - User user = 1; - Photo photo = 2; - } - message User { - string display_name = 1; - string address = 2; - } - - In proto a field mask for `Profile` may look as such: - - mask { - paths: "user.display_name" - paths: "photo" - } - - In JSON, the same mask is represented as below: - - { - mask: "user.displayName,photo" - } - - # Field Masks and Oneof Fields - - Field masks treat fields in oneofs just as regular fields. Consider the - following message: - - message SampleMessage { - oneof test_oneof { - string name = 4; - SubMessage sub_message = 9; - } - } - - The field mask can be: - - mask { - paths: "name" - } - - Or: - - mask { - paths: "sub_message" - } - - Note that oneof type names ("test_oneof" in this case) cannot be used in - paths. - - ## Field Mask Verification - - The implementation of any API method which has a FieldMask type field in the - request should verify the included field paths, and return an - `INVALID_ARGUMENT` error if any path is unmappable. - - - - Field number for the "paths" field. - - - - The set of field mask paths. - - - - - Converts a field mask specified by paths to a string. - - - If the value is a normalized duration in the range described in field_mask.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Paths in the field mask - Determines the handling of non-normalized values - The represented field mask is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Parses from a string to a FieldMask. - - - - - Parses from a string to a FieldMask and validates all field paths. - - The type to validate the field paths against. - - - - Constructs a FieldMask for a list of field paths in a certain type. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Checks whether the given path is valid for a field mask. - - true if the path is valid; false otherwise - - - - Checks whether paths in a given fields mask are valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Checks whether a given field path is valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Converts this FieldMask to its canonical form. In the canonical form of a - FieldMask, all field paths are sorted alphabetically and redundant field - paths are removed. - - - - - Creates a union of two or more FieldMasks. - - - - - Calculates the intersection of two FieldMasks. - - - - - Merges fields specified by this FieldMask from one message to another with the - specified merge options. - - - - - Merges fields specified by this FieldMask from one message to another. - - - - - Options to customize merging behavior. - - - - - Whether to replace message fields(i.e., discard existing content in - destination message fields) when merging. - Default behavior is to merge the source message field into the - destination message field. - - - - - Whether to replace repeated fields (i.e., discard existing content in - destination repeated fields) when merging. - Default behavior is to append elements from source repeated field to the - destination repeated field. - - - - - Whether to replace primitive (non-repeated and non-message) fields in - destination message fields with the source primitive fields (i.e., if the - field is set in the source, the value is copied to the - destination; if the field is unset in the source, the field is cleared - from the destination) when merging. - - Default behavior is to always set the value of the source primitive - field to the destination primitive field, and if the source field is - unset, the default value of the source field is copied to the - destination. - - - - Holder for reflection information generated from google/protobuf/source_context.proto - - - File descriptor for google/protobuf/source_context.proto - - - - `SourceContext` represents information about the source of a - protobuf element, like the file in which it is defined. - - - - Field number for the "file_name" field. - - - - The path-qualified name of the .proto file that contained the associated - protobuf element. For example: `"google/protobuf/source_context.proto"`. - - - - Holder for reflection information generated from google/protobuf/struct.proto - - - File descriptor for google/protobuf/struct.proto - - - - `NullValue` is a singleton enumeration to represent the null value for the - `Value` type union. - - The JSON representation for `NullValue` is JSON `null`. - - - - - Null value. - - - - - `Struct` represents a structured data value, consisting of fields - which map to dynamically typed values. In some languages, `Struct` - might be supported by a native representation. For example, in - scripting languages like JS a struct is represented as an - object. The details of that representation are described together - with the proto support for the language. - - The JSON representation for `Struct` is JSON object. - - - - Field number for the "fields" field. - - - - Unordered map of dynamically typed values. - - - - - `Value` represents a dynamically typed value which can be either - null, a number, a string, a boolean, a recursive struct value, or a - list of values. A producer of value is expected to set one of these - variants. Absence of any variant indicates an error. - - The JSON representation for `Value` is JSON value. - - - - Field number for the "null_value" field. - - - - Represents a null value. - - - - Gets whether the "null_value" field is set - - - Clears the value of the oneof if it's currently set to "null_value" - - - Field number for the "number_value" field. - - - - Represents a double value. - - - - Gets whether the "number_value" field is set - - - Clears the value of the oneof if it's currently set to "number_value" - - - Field number for the "string_value" field. - - - - Represents a string value. - - - - Gets whether the "string_value" field is set - - - Clears the value of the oneof if it's currently set to "string_value" - - - Field number for the "bool_value" field. - - - - Represents a boolean value. - - - - Gets whether the "bool_value" field is set - - - Clears the value of the oneof if it's currently set to "bool_value" - - - Field number for the "struct_value" field. - - - - Represents a structured value. - - - - Field number for the "list_value" field. - - - - Represents a repeated `Value`. - - - - Enum of possible cases for the "kind" oneof. - - - - Convenience method to create a Value message with a string value. - - Value to set for the StringValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a number value. - - Value to set for the NumberValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a Boolean value. - - Value to set for the BoolValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a null initial value. - - A newly-created Value message a null initial value. - - - - Convenience method to create a Value message with an initial list of values. - - The values provided are not cloned; the references are copied directly. - A newly-created Value message an initial list value. - - - - Convenience method to create a Value message with an initial struct value - - The value provided is not cloned; the reference is copied directly. - A newly-created Value message an initial struct value. - - - - `ListValue` is a wrapper around a repeated field of values. - - The JSON representation for `ListValue` is JSON array. - - - - Field number for the "values" field. - - - - Repeated field of dynamically typed values. - - - - - Extension methods on BCL time-related types, converting to protobuf types. - - - - - Converts the given to a . - - The date and time to convert to a timestamp. - The value has a other than Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts the given to a . - - The time span to convert. - The converted duration. - - - Holder for reflection information generated from google/protobuf/timestamp.proto - - - File descriptor for google/protobuf/timestamp.proto - - - - A Timestamp represents a point in time independent of any time zone or local - calendar, encoded as a count of seconds and fractions of seconds at - nanosecond resolution. The count is relative to an epoch at UTC midnight on - January 1, 1970, in the proleptic Gregorian calendar which extends the - Gregorian calendar backwards to year one. - - All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - second table is needed for interpretation, using a [24-hour linear - smear](https://developers.google.com/time/smear). - - The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - restricting to that range, we ensure that we can convert to and from [RFC - 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - - # Examples - - Example 1: Compute Timestamp from POSIX `time()`. - - Timestamp timestamp; - timestamp.set_seconds(time(NULL)); - timestamp.set_nanos(0); - - Example 2: Compute Timestamp from POSIX `gettimeofday()`. - - struct timeval tv; - gettimeofday(&tv, NULL); - - Timestamp timestamp; - timestamp.set_seconds(tv.tv_sec); - timestamp.set_nanos(tv.tv_usec * 1000); - - Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - - FILETIME ft; - GetSystemTimeAsFileTime(&ft); - UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - - // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - Timestamp timestamp; - timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - - Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - - long millis = System.currentTimeMillis(); - - Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - .setNanos((int) ((millis % 1000) * 1000000)).build(); - - Example 5: Compute Timestamp from Java `Instant.now()`. - - Instant now = Instant.now(); - - Timestamp timestamp = - Timestamp.newBuilder().setSeconds(now.getEpochSecond()) - .setNanos(now.getNano()).build(); - - Example 6: Compute Timestamp from current time in Python. - - timestamp = Timestamp() - timestamp.GetCurrentTime() - - # JSON Mapping - - In JSON format, the Timestamp type is encoded as a string in the - [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - where {year} is always expressed using four digits while {month}, {day}, - {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - is required. A proto3 JSON serializer should always use UTC (as indicated by - "Z") when printing the Timestamp type and a proto3 JSON parser should be - able to accept both UTC and other timezones (as indicated by an offset). - - For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - 01:30 UTC on January 15, 2017. - - In JavaScript, one can convert a Date object to this format using the - standard - [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - method. In Python, a standard `datetime.datetime` object can be converted - to this format using - [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - the Joda Time's [`ISODateTimeFormat.dateTime()`]( - http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() - ) to obtain a formatter capable of generating timestamps in this format. - - - - Field number for the "seconds" field. - - - - Represents seconds of UTC time since Unix epoch - 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - 9999-12-31T23:59:59Z inclusive. - - - - Field number for the "nanos" field. - - - - Non-negative fractions of a second at nanosecond resolution. Negative - second values with fractions must still have non-negative nanos values - that count forward in time. Must be from 0 to 999,999,999 - inclusive. - - - - - Returns the difference between one and another, as a . - - The timestamp to subtract from. Must not be null. - The timestamp to subtract. Must not be null. - The difference between the two specified timestamps. - - - - Adds a to a , to obtain another Timestamp. - - The timestamp to add the duration to. Must not be null. - The duration to add. Must not be null. - The result of adding the duration to the timestamp. - - - - Subtracts a from a , to obtain another Timestamp. - - The timestamp to subtract the duration from. Must not be null. - The duration to subtract. - The result of subtracting the duration from the timestamp. - - - - Converts this timestamp into a . - - - The resulting DateTime will always have a Kind of Utc. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTime. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts this timestamp into a . - - - The resulting DateTimeOffset will always have an Offset of zero. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTimeOffset. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts the specified to a . - - - The Kind of is not DateTimeKind.Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts a timestamp specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in timestamp.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - Timestamp to compare - an integer indicating whether this timestamp precedes or follows the other - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Returns whether two timestamps are equivalent - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps refer to the same nanosecond - - - - Returns whether two timestamps differ - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps differ - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - Holder for reflection information generated from google/protobuf/type.proto - - - File descriptor for google/protobuf/type.proto - - - - The syntax in which a protocol buffer element is defined. - - - - - Syntax `proto2`. - - - - - Syntax `proto3`. - - - - - Syntax `editions`. - - - - - A protocol buffer message type. - - - - Field number for the "name" field. - - - - The fully qualified message name. - - - - Field number for the "fields" field. - - - - The list of fields. - - - - Field number for the "oneofs" field. - - - - The list of types appearing in `oneof` definitions in this type. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - Field number for the "edition" field. - - - - The source edition string, only valid when syntax is SYNTAX_EDITIONS. - - - - - A single field of a message type. - - - - Field number for the "kind" field. - - - - The field type. - - - - Field number for the "cardinality" field. - - - - The field cardinality. - - - - Field number for the "number" field. - - - - The field number. - - - - Field number for the "name" field. - - - - The field name. - - - - Field number for the "type_url" field. - - - - The field type URL, without the scheme, for message or enumeration - types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - - - - Field number for the "oneof_index" field. - - - - The index of the field type in `Type.oneofs`, for message or enumeration - types. The first type has index 1; zero means the type is not in the list. - - - - Field number for the "packed" field. - - - - Whether to use alternative packed wire representation. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "json_name" field. - - - - The field JSON name. - - - - Field number for the "default_value" field. - - - - The string value of the default value of this field. Proto2 syntax only. - - - - Container for nested types declared in the Field message type. - - - - Basic field types. - - - - - Field type unknown. - - - - - Field type double. - - - - - Field type float. - - - - - Field type int64. - - - - - Field type uint64. - - - - - Field type int32. - - - - - Field type fixed64. - - - - - Field type fixed32. - - - - - Field type bool. - - - - - Field type string. - - - - - Field type group. Proto2 syntax only, and deprecated. - - - - - Field type message. - - - - - Field type bytes. - - - - - Field type uint32. - - - - - Field type enum. - - - - - Field type sfixed32. - - - - - Field type sfixed64. - - - - - Field type sint32. - - - - - Field type sint64. - - - - - Whether a field is optional, required, or repeated. - - - - - For fields with unknown cardinality. - - - - - For optional fields. - - - - - For required fields. Proto2 syntax only. - - - - - For repeated fields. - - - - - Enum type definition. - - - - Field number for the "name" field. - - - - Enum type name. - - - - Field number for the "enumvalue" field. - - - - Enum value definitions. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - Field number for the "edition" field. - - - - The source edition string, only valid when syntax is SYNTAX_EDITIONS. - - - - - Enum value definition. - - - - Field number for the "name" field. - - - - Enum value name. - - - - Field number for the "number" field. - - - - Enum value number. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - - A protocol buffer option, which can be attached to a message, field, - enumeration, etc. - - - - Field number for the "name" field. - - - - The option's name. For protobuf built-in options (options defined in - descriptor.proto), this is the short name. For example, `"map_entry"`. - For custom options, it should be the fully-qualified name. For example, - `"google.api.http"`. - - - - Field number for the "value" field. - - - - The option's value packed in an Any message. If the value is a primitive, - the corresponding wrapper type defined in google/protobuf/wrappers.proto - should be used. If the value is an enum, it should be stored as an int32 - value using the google.protobuf.Int32Value type. - - - - Holder for reflection information generated from google/protobuf/wrappers.proto - - - File descriptor for google/protobuf/wrappers.proto - - - - Field number for the single "value" field in all wrapper types. - - - - - Wrapper message for `double`. - - The JSON representation for `DoubleValue` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The double value. - - - - - Wrapper message for `float`. - - The JSON representation for `FloatValue` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The float value. - - - - - Wrapper message for `int64`. - - The JSON representation for `Int64Value` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The int64 value. - - - - - Wrapper message for `uint64`. - - The JSON representation for `UInt64Value` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The uint64 value. - - - - - Wrapper message for `int32`. - - The JSON representation for `Int32Value` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The int32 value. - - - - - Wrapper message for `uint32`. - - The JSON representation for `UInt32Value` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The uint32 value. - - - - - Wrapper message for `bool`. - - The JSON representation for `BoolValue` is JSON `true` and `false`. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The bool value. - - - - - Wrapper message for `string`. - - The JSON representation for `StringValue` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The string value. - - - - - Wrapper message for `bytes`. - - The JSON representation for `BytesValue` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The bytes value. - - - - - This class is used internally by the Protocol Buffer Library and generated - message implementations. It is public only for the sake of those generated - messages. Others should not use this class directly. - - This class contains constants and helper functions useful for dealing with - the Protocol Buffer wire format. - - - - - - Wire types within protobuf encoding. - - - - - Variable-length integer. - - - - - A fixed-length 64-bit value. - - - - - A length-delimited value, i.e. a length followed by that many bytes of data. - - - - - A "start group" value - - - - - An "end group" value - - - - - A fixed-length 32-bit value. - - - - - Given a tag value, determines the wire type (lower 3 bits). - - - - - Given a tag value, determines the field number (the upper 29 bits). - - - - - Makes a tag value given a field number and wire type. - - - - - Abstraction for writing to a steam / IBufferWriter - - - - - Initialize an instance with a coded output stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer writer. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer represented by a single span (i.e. buffer cannot be refreshed) - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Verifies that SpaceLeft returns zero. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - An opaque struct that represents the current serialization state and is passed along - as the serialization proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Creates a WriteContext instance from CodedOutputStream. - WARNING: internally this copies the CodedOutputStream's state, so after done with the WriteContext, - the CodedOutputStream's state needs to be updated. - - - - - Writes a double field value, without a tag. - - The value to write - - - - Writes a float field value, without a tag. - - The value to write - - - - Writes a uint64 field value, without a tag. - - The value to write - - - - Writes an int64 field value, without a tag. - - The value to write - - - - Writes an int32 field value, without a tag. - - The value to write - - - - Writes a fixed64 field value, without a tag. - - The value to write - - - - Writes a fixed32 field value, without a tag. - - The value to write - - - - Writes a bool field value, without a tag. - - The value to write - - - - Writes a string field value, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag. - - The value to write - - - - Writes an enum value, without a tag. - - The value to write - - - - Writes an sfixed32 value, without a tag. - - The value to write. - - - - Writes an sfixed64 value, without a tag. - - The value to write - - - - Writes an sint32 value, without a tag. - - The value to write - - - - Writes an sint64 value, without a tag. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag. - - The encoded tag - - - - Writes the given two-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Primitives for encoding protobuf wire format. - - - - - Writes a double field value, without a tag, to the stream. - - - - - Writes a float field value, without a tag, to the stream. - - - - - Writes a uint64 field value, without a tag, to the stream. - - - - - Writes an int64 field value, without a tag, to the stream. - - - - - Writes an int32 field value, without a tag, to the stream. - - - - - Writes a fixed64 field value, without a tag, to the stream. - - - - - Writes a fixed32 field value, without a tag, to the stream. - - - - - Writes a bool field value, without a tag, to the stream. - - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - - - - Given a QWORD which represents a buffer of 4 ASCII chars in machine-endian order, - narrows each WORD to a BYTE, then writes the 4-byte result to the output buffer - also in machine-endian order. - - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - - - - Writes a uint32 value, without a tag, to the stream. - - - - - Writes an enum value, without a tag, to the stream. - - - - - Writes an sfixed32 value, without a tag, to the stream. - - - - - Writes an sfixed64 value, without a tag, to the stream. - - - - - Writes an sint32 value, without a tag, to the stream. - - - - - Writes an sint64 value, without a tag, to the stream. - - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Encodes and writes a tag. - - - - - Writes an already-encoded tag. - - - - - Writes the given single-byte tag directly to the stream. - - - - - Writes the given two-byte tag directly to the stream. - - - - - Writes the given three-byte tag directly to the stream. - - - - - Writes the given four-byte tag directly to the stream. - - - - - Writes the given five-byte tag directly to the stream. - - - - - Encode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Encode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Writing messages / groups. - - - - - Writes a message, without a tag. - The data is length-prefixed. - - - - - Writes a group, without a tag. - - - - - Writes a message, without a tag. - Message will be written without a length prefix. - - - - - Indicates that certain members on a specified are accessed dynamically, - for example through . - - - This allows tools to understand which members are being accessed during the execution - of a program. - - This attribute is valid on members whose type is or . - - When this attribute is applied to a location of type , the assumption is - that the string represents a fully qualified type name. - - When this attribute is applied to a class, interface, or struct, the members specified - can be accessed dynamically on instances returned from calling - on instances of that class, interface, or struct. - - If the attribute is applied to a method it's treated as a special case and it implies - the attribute should be applied to the "this" parameter of the method. As such the attribute - should only be used on instance methods of types assignable to System.Type (or string, but no methods - will use it there). - - - - - Initializes a new instance of the class - with the specified member types. - - The types of members dynamically accessed. - - - - Gets the which specifies the type - of members dynamically accessed. - - - - - Specifies the types of members that are dynamically accessed. - - This enumeration has a attribute that allows a - bitwise combination of its member values. - - - - - Specifies no members. - - - - - Specifies the default, parameterless public constructor. - - - - - Specifies all public constructors. - - - - - Specifies all non-public constructors. - - - - - Specifies all public methods. - - - - - Specifies all non-public methods. - - - - - Specifies all public fields. - - - - - Specifies all non-public fields. - - - - - Specifies all public nested types. - - - - - Specifies all non-public nested types. - - - - - Specifies all public properties. - - - - - Specifies all non-public properties. - - - - - Specifies all public events. - - - - - Specifies all non-public events. - - - - - Specifies all interfaces implemented by the type. - - - - - Specifies all members. - - - - - Indicates that the specified method requires dynamic access to code that is not referenced - statically, for example through . - - - This allows tools to understand which methods are unsafe to call when removing unreferenced - code from an application. - - - - - Initializes a new instance of the class - with the specified message. - - - A message that contains information about the usage of unreferenced code. - - - - - Gets a message that contains information about the usage of unreferenced code. - - - - - Gets or sets an optional URL that contains more information about the method, - why it requires unreferenced code, and what options a consumer has to deal with it. - - - - - Suppresses reporting of a specific rule violation, allowing multiple suppressions on a - single code artifact. - - - is different than - in that it doesn't have a - . So it is always preserved in the compiled assembly. - - - - - Initializes a new instance of the - class, specifying the category of the tool and the identifier for an analysis rule. - - The category for the attribute. - The identifier of the analysis rule the attribute applies to. - - - - Gets the category identifying the classification of the attribute. - - - The property describes the tool or tool analysis category - for which a message suppression attribute applies. - - - - - Gets the identifier of the analysis tool rule to be suppressed. - - - Concatenated together, the and - properties form a unique check identifier. - - - - - Gets or sets the scope of the code that is relevant for the attribute. - - - The Scope property is an optional argument that specifies the metadata scope for which - the attribute is relevant. - - - - - Gets or sets a fully qualified path that represents the target of the attribute. - - - The property is an optional argument identifying the analysis target - of the attribute. An example value is "System.IO.Stream.ctor():System.Void". - Because it is fully qualified, it can be long, particularly for targets such as parameters. - The analysis tool user interface should be capable of automatically formatting the parameter. - - - - - Gets or sets an optional argument expanding on exclusion criteria. - - - The property is an optional argument that specifies additional - exclusion where the literal metadata target is not sufficiently precise. For example, - the cannot be applied within a method, - and it may be desirable to suppress a violation against a statement in the method that will - give a rule violation, but not against all statements in the method. - - - - - Gets or sets the justification for suppressing the code analysis message. - - -
-
diff --git a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.Streams.dll b/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.Streams.dll deleted file mode 100644 index 4c68abb..0000000 Binary files a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.Streams.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.Streams.xml b/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.Streams.xml deleted file mode 100644 index 4e02583..0000000 --- a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.Streams.xml +++ /dev/null @@ -1,296 +0,0 @@ - - - - K4os.Compression.LZ4.Streams - - - - - LZ4 Frame descriptor. - - - - Content length. Not always known. - - - Indicates if content checksum is provided. - - - Indicates if blocks are chained (dependent) or not (independent). - - - Indicates if block checksums are provided. - - - Dictionary id. May be null. - - - Block size. - - - - Decoder settings. - - - - Extra memory for decompression. - - - - LZ4 Decompression stream handling. - - - - Creates new instance . - Inner stream. - A function which will create appropriate decoder depending - on frame descriptor. - If true inner stream will not be closed after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of stream. Please note, this will only work if original LZ4 stream has - ContentLength field set in descriptor. Otherwise returned value will be -1. - - - - - Position within the stream. Position can be read, but cannot be set as LZ4 stream does - not have Seek capability. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 encoder settings. - - - - - Content length. It is not enforced, it can be set to any value, but it will be - written to the stream so it can be used while decoding. If you don't know the length - just leave default value. - - - - - Indicates if blocks should be chained (dependent) or not (independent). Dependent blocks - (with chaining) provide better compression ratio but are a little but slower and take - more memory. - - - - - Block size. You can use any block size, but default values for LZ4 are 64k, 256k, 1m, - and 4m. 64k is good enough for dependent blocks, but for independent blocks bigger is - better. - - - - Indicates is content checksum is provided. Not implemented yet. - - - Indicates if block checksum is provided. Not implemented yet. - - - Dictionary id. Not implemented yet. - - - Compression level. - - - Extra memory (for the process, more is usually better). - - - - LZ4 compression stream. - - - - Creates new instance of . - Inner stream. - LZ4 Descriptor. - Function which will take descriptor and return - appropriate encoder. - Indicates if stream should be left - open after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of the stream and number of bytes written so far. - - - Read-only position in the stream. Trying to set it will throw - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 frame descriptor. - - - - Content length (if available). - - - Indicates if content checksum if present. - - - Indicates if blocks are chained. - - - Indicates if block checksums are present. - - - Dictionary id (or null). - - - Block size. - - - Creates new instance of . - Content length. - Content checksum flag. - Chaining flag. - Block checksum flag. - Dictionary id. - Block size. - - - - Utility class with factory methods to create LZ4 compression and decompression streams. - - - - Created compression stream on top of inner stream. - Inner stream. - Compression settings. - Leave inner stream open after disposing. - Compression stream. - - - Created compression stream on top of inner stream. - Inner stream. - Compression level. - Extra memory used for compression. - Leave inner stream open after disposing. - Compression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Decompression settings. - Leave inner stream open after disposing. - Decompression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Extra memory used for decompression. - Leave inner stream open after disposing. - Decompression stream. - - - diff --git a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.dll b/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.dll deleted file mode 100644 index ea7a325..0000000 Binary files a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.xml b/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.xml deleted file mode 100644 index 9af6341..0000000 --- a/AUTS_DataService/bin/Debug/K4os.Compression.LZ4.xml +++ /dev/null @@ -1,794 +0,0 @@ - - - - K4os.Compression.LZ4 - - - - - Action performed by encoder using FlushAndEncode method. - - - - Nothing has happened, most likely loading 0 bytes. - - - Some bytes has been loaded into encoder. - - - Compression was not possible so bytes has been copied. - - - Compression succeeded. - - - - Interface of LZ4 decoder used by LZ4 streams. - - - - Block size. - - - Bytes already decoded and available to be read. - Always smaller than - - - - Decodes previously compressed block and caches decompressed block in decoder. - Returns number of bytes decoded. These bytes can be read with . - - Points to compressed block. - Length of compressed block. - Size of the block. Value 0 indicates default block size. - Number of decoded bytes. - - - - Inject already decompressed block and caches it in decoder. - Used with uncompressed-yet-chained blocks and pre-made dictionaries. - These bytes can be read with . - - Points to uncompressed block. - Length of uncompressed block. - Number of decoded bytes. - - - - Reads previously decoded bytes. Please note, should be - negative number, pointing to bytes before current head. - - Buffer to write to. - Offset in source buffer relatively to current head. - Please note, it should be negative value. - Number of bytes to read. - - - - Interface of LZ4 encoder used by LZ4 streams. - - - - Block size. - - - Number of bytes read for compression. - Always smaller than - - - Adds bytes to internal buffer. Increases - Source buffer. - Source buffer length. - Number of bytes topped up. If this function returns 0 it means that buffer - is full ( equals ) and - should be called to flush it. - - - - Encodes bytes in internal buffer (see: , ). - If is true then if encoded buffer is bigger than - source buffer source bytes are copied instead. In such case returned length is negative. - - Target buffer. - Target buffer length. - Indicates if copying is allowed. - Length of encoded buffer. Negative if bytes are just copied. - - - - LZ4 decoder used with independent blocks mode. Plase note, that it will fail - if input data has been compressed with chained blocks - ( and ) - - - - - - - - - - Creates new instance of block decoder. - Block size. Must be equal or greater to one used for compression. - - - - - - - - - - - - - - - - Independent block encoder. Produces larger files but uses less memory and - gives better performance. - - - - Creates new instance of - Compression level. - Block size. - - - - - - - - - LZ4 decoder handling dependent blocks. - - - Creates new instance of . - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - - - - - - - - Static class with factory methods to create LZ4 decoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Block size. - Number of extra blocks. - LZ4 decoder. - - - - Static class with factory method to create LZ4 encoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Compression level. - Block size. - Number of extra blocks. - LZ4 encoder. - - - - Base class for LZ4 encoders. Provides basic functionality shared by - , , - and encoders. Do not used directly. - - - - Creates new instance of encoder. - Needs to be true if using dependent blocks. - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - Encodes single block using appropriate algorithm. - Source buffer. - Source buffer length. - Target buffer. - Target buffer length. - Number of bytes actually written to target buffer. - - - Copies current dictionary. - Target buffer. - Dictionary length. - Dictionary length. - - - - - - - Functionality of encoders added on top of fixed interface. - - - - Tops encoder up with some data. - Encoder. - Buffer pointer, will be shifted after operation by the number of - bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset. - Length of buffer. - Number of bytes actually loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset, will be increased after operation by the number - of bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. - Length of target buffer. - if true copying bytes is allowed. - Number of bytes encoder. If bytes were copied than this value is negative. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. Will be updated after operation. - Length of target buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. Will be updated after operation. - Length of buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Source buffer length. - Target buffer (used to encode into) - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Offset within source buffer. - Source buffer length. - Target buffer (used to encode into) - Offset within target buffer. - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Offset within target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Drains decoder by reading all bytes which are ready. - Decoder. - Target buffer. - Offset within target buffer. - Offset in decoder relatively to decoder's head. - Please note, it should be negative value. - Number of bytes. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Source buffer length. - Target buffer (to drained into). - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Offset within source buffer. - Source buffer length. - Target buffer (to drained into). - Offset within target buffer. - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - - LZ4 encoder using dependent blocks with fast compression. - - - - Creates new instance of - Block size. - Number of extra blocks. - - - - - - - - - - - - - LZ4 encoder using dependent blocks with high compression. - - - - Creates new instance of - Compression level. - Block size. - Number of extra blocks. - - - - - - - - - - - - Utility class with memory related functions. - - - 1 KiB - - - 2 KiB - - - 4 KiB - - - 8 KiB - - - 16 KiB - - - 32 KiB - - - 64 KiB - - - 128 KiB - - - 256 KiB - - - 512 KiB - - - 1 MiB - - - 4 MiB - - - Empty byte array. - - - Rounds integer value up to nearest multiple of step. - A value. - A step. - Value rounded up. - - - - Copies memory block for to . - Even though it is called "copy" it actually behaves like "move" which - might be potential problem, although it shouldn't as I cannot think about - any situation when "copy" invalid behaviour (forward copy of overlapping blocks) - can be a desired. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to . - It handle "move" semantic properly handling overlapping blocks properly. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to - up to (around) . - It does not handle overlapping blocks and may copy up to 8 bytes more than expected. - - The target block address. - The source block address. - The limit (in target block). - - - Fill block of memory with zeroes. - Address. - Length. - - - Fills memory block with repeating pattern of a single byte. - Address. - A pattern. - Length. - - - - Copies memory block for to . - This is proper implementation of memcpy (with all then weird behaviour for - overlapping blocks). It is slower than "Copy" but may be required if "Copy" - causes problems. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block backwards from to . - This is needed to implement memmove It is slower than "Move" but is needed for .NET 4.5, - which does not implement Buffer.MemoryCopy. - - The target block address. - The source block address. - Length in bytes. - - - - Moves memory block for to . - It handles overlapping block properly. - - The target block address. - The source block address. - Length in bytes. - - - Copies exactly 8 bytes from source to target. - Target address. - Source address. - - - Copies exactly 16 bytes from source to target. - Target address. - Source address. - - - Copies exactly 18 bytes from source to target. - Target address. - Source address. - - - Allocated block of memory. It is NOT initialized with zeroes. - Size in bytes. - Pointer to allocated block. - - - Allocated block of memory and fills it with zeroes. - Size in bytes. - Pointer to allocated block. - - - - Free memory allocated previously with or - - - - - Reads exactly 1 byte from given address. - Address. - Byte at given address. - - - Reads exactly 2 bytes from given address. - Address. - 2 bytes at given address. - - - Reads exactly 4 bytes from given address. - Address. - 4 bytes at given address. - - - Reads exactly 8 bytes from given address. - Address. - 8 bytes at given address. - - - Writes exactly 1 byte to given address. - Address. - Value. - - - Writes exactly 2 bytes to given address. - Address. - Value. - - - Writes exactly 4 bytes to given address. - Address. - Value. - - - Writes exactly 8 bytes to given address. - Address. - Value. - - - - Skeleton for class with unmanaged resources. - Implements but also handles proper release in - case was not called. - - - - Determines if object was already disposed. - - - Throws exception is object has been disposed already. Convenience method. - Thrown if object is already disposed. - - - Method releasing unmanaged resources. - - - Method releasing managed resources. - - - - Disposed resources. - - true if dispose was explicitly called, - false if called from GC. - - - - - - Destructor. - - - - Static class exposing LZ4 block compression methods. - - - - Maximum size after compression. - Length of input buffer. - Maximum length after compression. - - - Compresses data from one buffer into another. - Input buffer. - Length of input buffer. - Output buffer. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Output buffer. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer length. - Output buffer. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Output buffer. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Compression level. - - - Fast compression. - - - High compression, level 3. - - - High compression, level 4. - - - High compression, level 5. - - - High compression, level 6. - - - High compression, level 7. - - - High compression, level 8. - - - High compression, level 9. - - - Optimal compression, level 10. - - - Optimal compression, level 11. - - - Maximum compression, level 12. - - - - Pickling support with LZ4 compression. - - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Input buffer offset. - Input buffer length. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Length of input data. - Compression level. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer length. - Output buffer. - - - diff --git a/AUTS_DataService/bin/Debug/K4os.Hash.xxHash.dll b/AUTS_DataService/bin/Debug/K4os.Hash.xxHash.dll deleted file mode 100644 index b4cb8d9..0000000 Binary files a/AUTS_DataService/bin/Debug/K4os.Hash.xxHash.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/K4os.Hash.xxHash.xml b/AUTS_DataService/bin/Debug/K4os.Hash.xxHash.xml deleted file mode 100644 index 2b84147..0000000 --- a/AUTS_DataService/bin/Debug/K4os.Hash.xxHash.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - K4os.Hash.xxHash - - - - - Adapter implementing - - - - - Creates new . - - Hash size (in bytes) - Reset function. - Update function. - Digest function. - - - - - - - - - - - - - - - - - - - Base class for both and . Do not use directly. - - - - Protected constructor to prevent instantiation. - - - - xxHash 32-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - - xxHash 64-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - diff --git a/AUTS_DataService/bin/Debug/MySql.Data.dll b/AUTS_DataService/bin/Debug/MySql.Data.dll deleted file mode 100644 index eb11cd9..0000000 Binary files a/AUTS_DataService/bin/Debug/MySql.Data.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/MySql.Data.xml b/AUTS_DataService/bin/Debug/MySql.Data.xml deleted file mode 100644 index 09316cf..0000000 --- a/AUTS_DataService/bin/Debug/MySql.Data.xml +++ /dev/null @@ -1,18808 +0,0 @@ - - - - MySql.Data - - - - - The implementation of the caching_sha2_password authentication plugin. - - - - - Generates a byte array set with the password of the user in the expected format based on the - SSL settings of the current connection. - - A byte array that contains the password of the user in the expected format. - - - - Defines the stage of the authentication. - - - - - Allows connections to a user account set with the mysql_clear_password authentication plugin. - - - - - The GSSAPI mechanism. - - - - - Obtain credentials to be used to create a security context - - username - password - host - - - - Processes the challenge data. - - A byte array containing the challenge data from the server - A byte array containing the response to be sent to the server - - - - Security context already established. - - A byte array containing the challenge data from the server - A non-null byte array containing the response to be sent to the server - - - - Enables connections to a user account set with the authentication_kerberos authentication plugin. - - - - - Defines the default behavior for an authentication plugin. - - - - - Gets or sets the authentication data returned by the server. - - - - - This is a factory method that is used only internally. It creates an auth plugin based on the method type - - - - - - - - - Gets the connection option settings. - - - - - Gets the server version associated with this authentication plugin. - - - - - Gets the encoding assigned to the native driver. - - - - - Sets the authentication data required to encode, encrypt, or convert the password of the user. - - A byte array containing the authentication data provided by the server. - This method may be overriden based on the requirements by the implementing authentication plugin. - - - - Defines the behavior when checking for constraints. - - This method is intended to be overriden. - - - - Throws a that encapsulates the original exception. - - The exception to encapsulate. - - - - Defines the behavior when authentication is successful. - - This method is intended to be overriden. - - - - Defines the behavior when more data is required from the server. - - The data returned by the server. - The data to return to the server. - This method is intended to be overriden. - - - - Gets the plugin name based on the authentication plugin type defined during the creation of this object. - - - - - Gets the user name associated to the connection settings. - - The user name associated to the connection settings. - - - - Gets the encoded, encrypted, or converted password based on the authentication plugin type defined during the creation of this object. - This method is intended to be overriden. - - An object containing the encoded, encrypted, or converted password. - - - - Provides functionality to read, decode and convert PEM files to objects supported in .NET. - - - - - Converts the binary data of a PEM file to an object. - - A binary representation of the public key provided by the server. - An object containing the data found in the public key. - - - - Allows connections to a user account set with the authentication_ldap_sasl authentication plugin. - - - - - Determines if the character is a non-ASCII space. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.1.2 - - true if the character is a non-ASCII space; otherwise, false. - The character. - - - - Determines if the character is commonly mapped to nothing. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-B.1 - - true if the character is commonly mapped to nothing; otherwise, false. - The character. - - - - Determines if the character is prohibited. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.3 - - true if the character is prohibited; otherwise, false. - The string. - The character index. - - - - Prepares the user name or password string. - - The string to prepare. - The prepared string. - - - - Allows connections to a user account set with the mysql_native_password authentication plugin. - - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Base class to handle SCRAM authentication methods - - - - - Defines the state of the authentication process. - - - - - Gets the name of the method. - - - - - Parses the server's challenge token and returns the next challenge response. - - The next challenge response. - - - - Builds up the client-first message. - - An array of bytes containig the client-first message. - - - - Processes the server response from the client-first message and - builds up the client-final message. - - Response from the server. - An array of bytes containing the client-final message. - - - - Validates the server response. - - Server-final message - - - - Creates the HMAC SHA1 context. - - The HMAC context. - The secret key. - - - - Apply the HMAC keyed algorithm. - - The results of the HMAC keyed algorithm. - The key. - The string. - - - - Applies the cryptographic hash function. - - The results of the hash. - The string. - - - - Applies the exclusive-or operation to combine two octet strings. - - The alpha component. - The blue component. - - - - The SCRAM-SHA-1 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-1 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-1 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The SCRAM-SHA-256 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-256 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-256 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The implementation of the sha256_password authentication plugin. - - - - - The byte array representation of the public key provided by the server. - - - - - Applies XOR to the byte arrays provided as input. - - A byte array that contains the results of the XOR operation. - - - - - - - - - Defines the type of the security buffer. - - - - - Defines a security handle. - - - - - Describes a buffer allocated by a transport to pass to a security package. - - - - - Specifies the size, in bytes, of the buffer. - - - - - Bit flags that indicate the type of the buffer. - - - - - Pointer to a buffer. - - - - - Hold a numeric value used in defining other data types. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Holds a pointer used to define a security handle. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Indicates the sizes of important structures used in the message support functions. - - - - - Specifies the maximum size of the security token used in the authentication changes. - - - - - Specifies the maximum size of the signature created by the MakeSignature function. - This member must be zero if integrity services are not requested or available. - - - - - Specifies the preferred integral size of the messages. - - - - - Size of the security trailer to be appended to messages. - This member should be zero if the relevant services are not requested or available. - - - - - Allows importing large amounts of data into a database with bulk loading. - - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the field terminator. - - The field terminator. - - - - Gets or sets the line terminator. - - The line terminator. - - - - Gets or sets the name of the table. - - The name of the table. - - - - Gets or sets the character set. - - The character set. - - - - Gets or sets the name of the file. - - The name of the file. - - - - Gets or sets the timeout. - - The timeout. - - - - Gets or sets a value indicating whether the file name that is to be loaded - is local to the client or not. The default value is false. - - true if local; otherwise, false. - - - - Gets or sets the number of lines to skip. - - The number of lines to skip. - - - - Gets or sets the line prefix. - - The line prefix. - - - - Gets or sets the field quotation character. - - The field quotation character. - - - - Gets or sets a value indicating whether [field quotation optional]. - - - true if [field quotation optional]; otherwise, false. - - - - - Gets or sets the escape character. - - The escape character. - - - - Gets or sets the conflict option. - - The conflict option. - - - - Gets or sets the priority. - - The priority. - - - - Gets the columns. - - The columns. - - - - Gets the expressions. - - The expressions. - - - - Executes the load operation. - - The number of rows inserted. - - - - Asynchronous version of the load operation. - - The number of rows inserted. - - - - Executes the load operation asynchronously while the cancellation isn't requested. - - The cancellation token. - The number of rows inserted. - - - - Represents the priority set for bulk loading operations. - - - - - This is the default and indicates normal priority - - - - - Low priority will cause the load operation to wait until all readers of the table - have finished. This only affects storage engines that use only table-level locking - such as MyISAM, Memory, and Merge. - - - - - Concurrent priority is only relevant for MyISAM tables and signals that if the table - has no free blocks in the middle that other readers can retrieve data from the table - while the load operation is happening. - - - - - Represents the behavior when conflicts arise during bulk loading operations. - - - - - This is the default and indicates normal operation. In the event of a LOCAL load, this - is the same as ignore. When the data file is on the server, then a key conflict will - cause an error to be thrown and the rest of the data file ignored. - - - - - Replace column values when a key conflict occurs. - - - - - Ignore any rows where the primary key conflicts. - - - - - Summary description for CharSetMap. - - - - - Returns the text encoding for a given MySQL character set name - - Version of the connection requesting the encoding - Name of the character set to get the encoding for - Encoding object for the given character set name - - - - Initializes the mapping. - - - - - Represents a character set object. - - - - Represents a SQL statement to execute against a MySQL database. This class cannot be inherited. - The object includes the following methods for executing commands at a MySQL database: - - - Item - Description - - - - - - Executes commands that return rows. - - - - - - Executes commands such as SQL INSERT, DELETE, and UPDATE statements. - - - - - - Retrieves a single value (for example, an aggregate value) from a database. - - - - You can reset the property and reuse the - object. However, you must close the object before you can execute a new or previous command. - - If an exception of type is generated by the method executing , - the instance remains open. It is the responsibility of the programmer to close the connection. - - - Using the '@' symbol for paramters is now the preferred approach although the old pattern of using - '?' is still supported. Please be aware that using '@' can cause conflicts when user variables - are also used. For more information, see the documentation on the AllowUserVariables connection string option. - - - The following example creates an instance each of and . - The object opens a connection and then is set as the - property for the . The example then calls the method, - passes to it a connection string and a query string that consists of a SQL INSERT statement, and closes the connection. - - Public Sub InsertRow(myConnectionString As String) - " If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - - Initializes a new instance of the MySqlCommand class. - - - The following example creates a MySqlCommand and sets some of its properties. - - - This example shows how to use one of the overloaded - versions of the MySqlCommand constructor. For other examples that might be available, - see the individual overload topics. - - - - Public Sub CreateMySqlCommand() - Dim myConnection As New MySqlConnection _ - ("Persist Security Info=False;database=test;server=myServer") - myConnection.Open() - Dim myTrans As MySqlTransaction = myConnection.BeginTransaction() - Dim mySelectQuery As String = "SELECT * FROM MyTable" - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection, myTrans) - myCommand.CommandTimeout = 20 - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection myConnection = new MySqlConnection("Persist Security Info=False; - database=test;server=myServer"); - myConnection.Open(); - MySqlTransaction myTrans = myConnection.BeginTransaction(); - string mySelectQuery = "SELECT * FROM myTable"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection,myTrans); - myCommand.CommandTimeout = 20; - } - - - public: - void CreateMySqlCommand() - { - MySqlConnection* myConnection = new MySqlConnection(S"Persist Security Info=False; - database=test;server=myServer"); - myConnection->Open(); - MySqlTransaction* myTrans = myConnection->BeginTransaction(); - String* mySelectQuery = S"SELECT * FROM myTable"; - MySqlCommand* myCommand = new MySqlCommand(mySelectQuery, myConnection, myTrans); - myCommand->CommandTimeout = 20; - }; - - - - Initializes a new instance of the MySqlCommand class. - - The base constructor initializes all fields to their default values. The - following table shows initial property values for an instance of . - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class with the text of the query. - The text of the query. - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query and a . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query, a , and the - . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - The in which the executes. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - conn.Open(); - Dim txn as MySqlTransaction = conn.BeginTransaction() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn, txn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - conn.Open(); - MySqlTransaction txn = conn.BeginTransaction(); - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn, txn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the last inserted id. - - - - - - Gets or sets the SQL statement to execute at the data source. - - The SQL statement or stored procedure to execute. The default is an empty string. - - - When the property is set to , - the property should be set to the name of the stored procedure. - The user may be required to use escape character syntax if the stored procedure name - contains any special characters. The command executes this stored procedure when - you call one of the execute methods. In Connector/NET 8.0 (and previous versions), having both a stored function - and stored procedure with the same name in the same database is not supported. It is - suggested that you provide unqiue names for your stored routines. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandText = "SELECT * FROM Mytable ORDER BY id" - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandText = "SELECT * FROM mytable ORDER BY id"; - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets or sets the wait time before terminating the attempt to execute a command - and generating an error. - - The time (in seconds) to wait for the command to execute. The default is 30 - seconds. - - CommandTimeout is dependent on the ability of MySQL to cancel an executing query. - Because of this, CommandTimeout is only supported when connected to MySQL - version 5.0.0 or higher. - - - - - Gets or sets a value indicating how the property is to be interpreted. - - One of the values. - The default is . - - - When you set the property to , you - should set the property to the name of the stored - procedure. The command executes this stored procedure when you call one of the - execute methods. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets a boolean value that indicates whether the Prepared method has been called. - - - - - - Gets or sets the object used by this instance of the - . - - The connection to a data source. The default value is a null reference - (Nothing in Visual Basic). - - - If you set Connection while a transaction is in progress and the - property is not null, an - is generated. If the Transaction property is not null and the transaction - has already been committed or rolled back, Transaction is set to - null. - - - The following example creates a and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim mySelectQuery As String = "SELECT * FROM mytable ORDER BY id" - Dim myConnectString As String = "Persist Security Info=False;database=test;server=myServer" - Dim myCommand As New MySqlCommand(mySelectQuery) - myCommand.Connection = New MySqlConnection(myConnectString) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string mySelectQuery = "SELECT * FROM mytable ORDER BY id"; - string myConnectString = "Persist Security Info=False;database=test;server=myServer"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery); - myCommand.Connection = new MySqlConnection(myConnectString); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the object. - - The parameters of the SQL statement or stored procedure. The default is - an empty collection. - - Connector/NET does not support unnamed parameters. Every parameter added to the collection must - have an associated name. - - Parameters can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and displays its parameters. - To accomplish this, the method is passed a , a query string - that is a SQL SELECT statement, and an array of objects. - - Public Sub CreateMySqlCommand(myConnection As MySqlConnection, _ - mySelectQuery As String, myParamArray() As MySqlParameter) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age" - myCommand.UpdatedRowSource = UpdateRowSource.Both - myCommand.Parameters.Add(myParamArray) - Dim j As Integer - For j = 0 To myCommand.Parameters.Count - 1 - myCommand.Parameters.Add(myParamArray(j)) - Next j - Dim myMessage As String = "" - Dim i As Integer - For i = 0 To myCommand.Parameters.Count - 1 - myMessage += myCommand.Parameters(i).ToString() & ControlChars.Cr - Next i - Console.WriteLine(myMessage) - End Sub - - - public void CreateMySqlCommand(MySqlConnection myConnection, string mySelectQuery, - MySqlParameter[] myParamArray) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age"; - myCommand.Parameters.Add(myParamArray); - for (int j=0; j<myParamArray.Length; j++) - { - myCommand.Parameters.Add(myParamArray[j]) ; - } - string myMessage = ""; - for (int i = 0; i < myCommand.Parameters.Count; i++) - { - myMessage += myCommand.Parameters[i].ToString() + "\n"; - } - MessageBox.Show(myMessage); - } - - - - - - Gets the object. - - The query attributes defined for the statement. The default is an empty collection. - - Connector/NET does not support unnamed query attributes. Every query attribute added to the collection must - have an associated name. - - Query Attributes can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and also a couple of - to be added later to the . Then, it prints out the values of . - - Public Sub CreateMySqlCommandWithQueryAttributes(ByVal myConnection As MySqlConnection) - Dim myCommand As MySqlCommand = New MySqlCommand() - myCommand.Connection = myConnection - Dim mySqlAttribute As MySqlAttribute = New MySqlAttribute("qa1", "qaValue") - Dim mySqlAttribute2 As MySqlAttribute = New MySqlAttribute("qa2", 2) - myCommand.Attributes.SetAttribute(mySqlAttribute) - myCommand.Attributes.SetAttribute(mySqlAttribute2) - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," & - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2" - - Using reader = myCommand.ExecuteReader() - While reader.Read() - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}") - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}") - End While - End Using - End Sub - - - public void CreateMySqlCommandWithQueryAttributes(MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = myConnection; - - MySqlAttribute mySqlAttribute = new MySqlAttribute("qa1", "qaValue"); - MySqlAttribute mySqlAttribute2 = new MySqlAttribute("qa2", 2); - - myCommand.Attributes.SetAttribute(mySqlAttribute); - myCommand.Attributes.SetAttribute(mySqlAttribute2); - - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," + - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2"; - - using (var reader = myCommand.ExecuteReader()) - { - while (reader.Read()) - { - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}"); - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}"); - } - } - } - - - - - - Gets or sets the instance of within which executes. - - The . The default value is a null reference (Nothing in Visual Basic). - - You cannot set the Transaction property if it is already set to a - specific value, and the command is in the process of executing. If you set the - transaction to use a object that is not connected - to the same as the object, - an exception will be thrown the next time you attempt to execute a statement. - - - - - Gets or sets a boolean value that indicates whether caching is enabled. - - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - - - - Gets or sets how command results are applied to the DataRow when used by the - Update method of the DbDataAdapter. - - - - - Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control. - - - - - Attempts to cancel the execution of a currently active command - - - Cancelling a currently active query only works with MySQL versions 5.0.0 and higher. - - - - - Creates a new instance of a object. - - - This method is a strongly-typed version of . - - A object. - - - - - Check the connection to make sure - - it is open - - it is not currently being used by a reader - - and we have the right version of MySQL for the requested command type - - - - - Executes a SQL statement against the connection and returns the number of rows affected. - Number of rows affected - You can use ExecuteNonQuery to perform any type of database operation, - however any resultsets returned will not be available. Any output parameters - used in calling a stored procedure will be populated with data and can be - retrieved after execution is complete. - For UPDATE, INSERT, and DELETE statements, the return value is the number - of rows affected by the command. For all other types of statements, the return - value is -1. - - The following example creates a MySqlCommand and then - executes it using ExecuteNonQuery. The example is passed a string that is a - SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to - connect to the data source. - - Public Sub CreateMySqlCommand(myExecuteQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myExecuteQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteNonQuery() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteNonQuery(); - myConnection.Close(); - } - - - - - - Reset reader to null, to avoid "There is already an open data reader" - on the next ExecuteReader(). Used in error handling scenarios. - - - - - Reset SQL_SELECT_LIMIT that could have been modified by CommandBehavior. - - - - - Sends the value to - and builds a object. - - A object. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of MySqlDataReader is called. - - - The following example creates an instance of , then executes it by - passing a string that is a SQL SELECT statement, and a string to use to connect to the - data source. - - Public Sub CreateMySqlDataReader(mySelectQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - Try - While myReader.Read() - Console.WriteLine(myReader.GetString(0)) - End While - Finally - myReader.Close - myConnection.Close - End Try - End Sub - - - public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myConnection.Open(); - MMySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - try - { - while(myReader.Read()) - { - Console.WriteLine(myReader.GetString(0)); - } - } - finally - { - myReader.Close(); - myConnection.Close(); - } - } - - - - - - Sends the to the Connection, - and builds a using one of the values. - - One of the values. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - The supports a special mode that enables large binary - values to be read efficiently. For more information, see the SequentialAccess - setting for . - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of the MySqlDataReader is called. - If the MySqlDataReader object is created with CommandBehavior set to - CloseConnection, closing the MySqlDataReader instance closes the connection - automatically. - - - When calling ExecuteReader with the SingleRow behavior, you should be aware that using a limit - clause in your SQL will cause all rows (up to the limit given) to be retrieved by the client. The - method will still return false after the first row but pulling all rows of data - into the client will have a performance impact. If the limit clause is not necessary, it should - be avoided. - - - A object. - - - - - Executes the query, and returns the first column of the first row in the - result set returned by the query. Extra columns or rows are ignored. - - The first column of the first row in the result set, or a null reference if the - result set is empty - - - Use the ExecuteScalar method to retrieve a single value (for example, - an aggregate value) from a database. This requires less code than using the - method, and then performing the operations necessary - to generate the single value using the data returned by a - - - The following example creates a and then - executes it using ExecuteScalar. The example is passed a string that is a - SQL statement that returns an aggregate result, and a string to use to - connect to the data source. - - - Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myScalarQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteScalar() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myScalarQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteScalar(); - myConnection.Close(); - } - - - public: - void CreateMySqlCommand(String* myScalarQuery, MySqlConnection* myConnection) - { - MySqlCommand* myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand->Connection->Open(); - myCommand->ExecuteScalar(); - myConnection->Close(); - } - - - - - - - - - - Creates a prepared version of the command on an instance of MySQL Server. - - - Prepared statements are only supported on MySQL version 4.1 and higher. Calling - prepare while connected to earlier versions of MySQL will succeed but will execute - the statement in the same way as unprepared. - - - The following example demonstrates the use of the Prepare method. - - public sub PrepareExample() - Dim cmd as New MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection) - cmd.Parameters.Add( "@val", 10 ) - cmd.Prepare() - cmd.ExecuteNonQuery() - - cmd.Parameters(0).Value = 20 - cmd.ExecuteNonQuery() - end sub - - - private void PrepareExample() - { - MySqlCommand cmd = new MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection); - cmd.Parameters.Add( "@val", 10 ); - cmd.Prepare(); - cmd.ExecuteNonQuery(); - - cmd.Parameters[0].Value = 20; - cmd.ExecuteNonQuery(); - } - - - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this , and retrieves one or more - result sets from the server. - - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this using one of the - CommandBehavior values. - - One of the values, indicating - options for statement execution and data retrieval. - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Finishes asynchronous execution of a SQL statement, returning the requested - . - - The returned by the call to - . - A MySqlDataReader object that can be used to retrieve the requested rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - - An delegate that is invoked when the command's - execution has completed. Pass a null reference (Nothing in Visual Basic) - to indicate that no callback is required. - A user-defined state object that is passed to the - callback procedure. Retrieve this object from within the callback procedure - using the property. - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Finishes asynchronous execution of a SQL statement. - - The returned by the call - to . - - - - - Verifies if a query is valid even if it has not spaces or is a stored procedure call - - Query to validate - If it is necessary to add call statement - - - - Creates a clone of this object. CommandText, Connection, and Transaction properties - are included as well as the entire parameter list. - - The cloned object. - - - - Summary description for API. - - - - - Summary description for CompressedStream. - - - - - Represents an open connection to a MySQL Server database. This class cannot be inherited. - - - A MySqlConnection object represents a session to a MySQL Server - data source. When you create an instance of MySqlConnection, all - properties are set to their initial values. For a list of these values, see the - MySqlConnection constructor. - - - - If the MySqlConnection goes out of scope, it is not closed. Therefore, - you must explicitly close the connection by calling - or . - - - The following example creates a and - a MySqlConnection. The MySqlConnection is opened and set as the - for the MySqlCommand. The example then calls - , and closes the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - - Public Sub InsertRow(myConnectionString As String) - ' If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - Occurs when MySQL returns warnings as a result of executing a command or query. - - - - - Initializes a new instance of the class. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class when given a string containing the connection string. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - The connection properties used to open the MySQL database. - - - - - Determines whether the connection is a clone of other connection. - - - - - Returns the id of the server thread this connection is executing on - - - - - Gets the name of the MySQL server to which to connect. - - - - - Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error. - The value set is less than 0. - A value of 0 indicates no limit, and should be avoided in a - because an attempt to connect - will wait indefinitely. - - The following example creates a MySqlConnection - and sets some of its properties in the connection string. - - Public Sub CreateSqlConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30" - myConnection.Open() - End Sub - - - public void CreateSqlConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30"; - myConnection.Open(); - } - - - - - Gets the name of the current database or the database to be used after a connection is opened.The name of the current database or the name of the database to be used after a connection is opened. The default value is an empty string. - - The Database property does not update dynamically. - If you change the current database using a SQL statement, then this property - may reflect the wrong value. If you change the current database using the - method, this property is updated to reflect the new database. - - - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Indicates if this connection should use compression when communicating with the server. - - - - Gets the current state of the connection. - A bitwise combination of the values. The default is Closed. - - The allowed state changes are: - - - From Closed to Open, using the Open method of the connection object. - - - From Open to Closed, using either the Close method or the Dispose method of the connection object. - - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - Gets a string containing the version of the MySQL server to which the client is connected.The version of the instance of MySQL.The connection is closed. - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Gets or sets the string used to connect to a MySQL Server database. - - - The ConnectionString returned may not be exactly like what was originally - set but will be indentical in terms of keyword/value pairs. Security information - will not be included unless the Persist Security Info value is set to true. - - - You can use the ConnectionString property to connect to a database. - The following example illustrates a typical connection string. - - "Persist Security Info=False;database=MyDB;server=MySqlServer;user id=myUser;Password=myPass" - - The ConnectionString property can be set only when the connection is - closed. Many of the connection string values have corresponding read-only - properties. When the connection string is set, all of these properties are - updated, except when an error is detected. In this case, none of the properties - are updated. properties return only those settings contained in the - ConnectionString. - - - To connect to a local machine, specify "localhost" for the server. If you do not - specify a server, localhost is assumed. - - - Resetting the ConnectionString on a closed connection resets all - connection string values (and related properties) including the password. For - example, if you set a connection string that includes "Database= MyDb", and - then reset the connection string to "Data Source=myserver;User Id=myUser;Password=myPass", - the property is no longer set to MyDb. - - - The connection string is parsed immediately after being set. If errors in - syntax are found when parsing, a runtime exception, such as , - is generated. Other errors can be found only when an attempt is made to open the - connection. - - - The basic format of a connection string consists of a series of keyword/value - pairs separated by semicolons. The equal sign (=) connects each keyword and its - value. To include values that contain a semicolon, single-quote character, or - double-quote character, the value must be enclosed in double quotes. If the - value contains both a semicolon and a double-quote character, the value can be - enclosed in single quotes. The single quote is also useful if the value begins - with a double-quote character. Conversely, the double quote can be used if the - value begins with a single quote. If the value contains both single-quote and - double-quote characters, the quote character used to enclose the value must be - doubled each time it occurs within the value. - - - To include preceding or trailing spaces in the string value, the value must - be enclosed in either single quotes or double quotes. Any leading or trailing - spaces around integer, Boolean, or enumerated values are ignored, even if - enclosed in quotes. However, spaces within a string literal keyword or value are - preserved. Using .NET Framework version 1.1, single or double quotes may be used - within a connection string without using delimiters (for example, Data Source= - my'Server or Data Source= my"Server), unless a quote character is the first or - last character in the value. - - - To include an equal sign (=) in a keyword or value, it must be preceded by - another equal sign. For example, in the hypothetical connection string - - "key==word=value" - - the keyword is "key=word" and the value is "value". - - If a specific keyword in a keyword= value pair occurs multiple times in a - connection string, the last occurrence listed is used in the value set. - - Keywords are not case sensitive. - - The following table lists the valid names for keyword values within the - ConnectionString. - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
- Connect Timeout -or- Connection Timeout - 15 - The length of time (in seconds) to wait for a connection to the server before - terminating the attempt and generating an error. -
- Host -or- Server -or- Data Source -or- - DataSource -or- Address -or- Addr -or- - Network Address - localhost - - The name or network address of the instance of MySQL to which to connect. Multiple hosts can be - specified separated by &. This can be useful where multiple MySQL servers are configured for replication - and you are not concerned about the precise server you are connecting to. No attempt is made by the provider to - synchronize writes to the database so care should be taken when using this option. - - - In Unix environment with Mono, this can be a fully qualified path to MySQL socket filename. With this configuration, the Unix socket will be used instead of TCP/IP socket. - Currently only a single socket name can be given so accessing MySQL in a replicated environment using Unix sockets is not currently supported. - -
Port3306 - The port MySQL is using to listen for connections. This value is ignored if the connection protocol - is anything but socket. -
Protocolsocket - Specifies the type of connection to make to the server.Values can be: - socket or tcp for a socket connection
- pipe for a named pipe connection
- unix for a Unix socket connection
- memory to use MySQL shared memory -
- CharSet -or Character Set - - - Specifies the character set that should be used to encode all queries sent to the server. - Resultsets are still returned in the character set of the data returned. -
LoggingfalseWhen true, various pieces of information is output to any configured TraceListeners.
Allow Batchtrue - When true, multiple SQL statements can be sent with one command execution.

- -Note-
- Starting with MySQL 4.1.1, batch statements should be separated by the server-defined seperator character.
- Commands sent to earlier versions of MySQL should be seperated with ';'. -
Encryptfalse - When true, SSL/TLS encryption is used for all data sent between the - client and server if the server has a certificate installed. Recognized values - are true, false, yes, and no. -
- Initial Catalog -or- Database - mysqlThe name of the database to use intially
- Password -or- pwd - - The password for the MySQL account being used.
Persist Security Infofalse - When set to false or no (strongly recommended), security-sensitive - information, such as the password, is not returned as part of the connection if - the connection is open or has ever been in an open state. Resetting the - connection string resets all connection string values including the password. - Recognized values are true, false, yes, and no. -
- User Id -or- Username -or- Uid -or- User name - - The MySQL login account being used.
Shared Memory NameMYSQLThe name of the shared memory object to use for communication if the connection protocol is set to memory.
Allow Zero Datetimefalse - True to have MySqlDataReader.GetValue() return a MySqlDateTime for date or datetime columns that have illegal values. - False will cause a DateTime object to be returned for legal values and an exception will be thrown for illegal values. -
Convert Zero Datetimefalse - True to have MySqlDataReader.GetValue() and MySqlDataReader.GetDateTime() - return DateTime.MinValue for date or datetime columns that have illegal values. -
- Pipe Name -or- Pipe - mysql - When set to the name of a named pipe, the MySqlConnection will attempt to connect to MySQL - on that named pipe.

This settings only applies to the Windows platform. -
- Use Performance Monitor -or- UsePerformanceMonitor - false - Posts performance data that can be tracked using perfmon -
- Procedure Cache Size - 25 - How many stored procedure definitions can be held in the cache -
Use Procedure Bodiestrue - Instructs the provider to attempt to call the procedure without first resolving the metadata. This - is useful in situations where the calling user does not have access to the mysql.proc table. To - use this mode, the parameters for the procedure must be added to the command in the same order - as they appear in the procedure definition and their types must be explicitly set. -
Auto Enlisttrue - Indicates whether the connection should automatically enlist in the current transaction, - if there is one. -
Respect Binary Flagstrue - Indicates whether the connection should respect all binary flags sent to the client - as part of column metadata. False will cause the connector to behave like - Connector/NET 5.0 and earlier. -
BlobAsUTF8IncludePatternnull - Pattern that should be used to indicate which blob columns should be treated as UTF-8. -
BlobAsUTF8ExcludePatternnull - Pattern that should be used to indicate which blob columns should not be treated as UTF-8. -
Default Command Timeout30 - The default timeout that new MySqlCommand objects will use unless changed. -
Allow User Variablesfalse - Should the provider expect user variables in the SQL. -
Interactive -or- Interactive Sessionfalse - Should this session be considered interactive? -
Functions Return Stringfalse - Set this option to true to force the return value of SQL functions to be string. -
Use Affected Rowsfalse - Set this option to true to cause the affected rows reported to reflect only the - rows that are actually changed. By default, the number of rows that are matched - is returned. -
-
- - The following table lists the valid names for connection pooling values within - the ConnectionString. For more information about connection pooling, see - Connection Pooling for the MySql Data Provider. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
Connection Lifetime0 - When a connection is returned to the pool, its creation time is compared with - the current time, and the connection is destroyed if that time span (in seconds) - exceeds the value specified by Connection Lifetime. This is useful in - clustered configurations to force load balancing between a running server and a - server just brought online. - - A value of zero (0) causes pooled connections to have the maximum connection - timeout. - -
Max Pool Size100The maximum number of connections allowed in the pool.
Min Pool Size0The minimum number of connections allowed in the pool.
Poolingtrue - When true, the MySqlConnection object is drawn from the appropriate - pool, or if necessary, is created and added to the appropriate pool. Recognized - values are true, false, yes, and no. -
Connection Resetfalse - Specifies whether the database connection should be reset when being - drawn from the pool. Leaving this as false will yeild much faster - connection opens but the user should understand the side effects - of doing this such as temporary tables and user variables from the previous - session not being cleared out. -
Cache Server Propertiesfalse - Specifies whether the server variables are cached between pooled connections. - On systems where the variables change infrequently and there are lots of - connection attempts, this can speed up things dramatically. -
-
- - When setting keyword or connection pooling values that require a Boolean - value, you can use 'yes' instead of 'true', and 'no' instead of 'false'. - - - Note The MySql Data Provider uses the native socket protocol to - communicate with MySQL. Therefore, it does not support the use of an ODBC data source name (DSN) when - connecting to MySQL because it does not add an ODBC layer. - - - CAUTION In this release, the application should use caution when constructing a - connection string based on user input (for example when retrieving user ID and password information from a - dialog box, and appending it to the connection string). The application should - ensure that a user cannot embed extra connection string parameters in these - values (for example, entering a password as "validpassword;database=somedb" in - an attempt to attach to a different database). - -
- The following example creates a and sets some of its properties - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - - The following example creates a in Unix environment with Mono installed. MySQL socket filename used in this example is "/var/lib/mysql/mysql.sock". The actual filename depends on your MySQL configuration. - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - -
- - - Gets a boolean value that indicates whether the password associated to the connection is expired. - - - - Begins a database transaction.An object representing the new transaction.Parallel transactions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. Also - note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Begins a database transaction with the specified isolation level.The isolation level under which the transaction should run. The scope of the transaction. An object representing the new transaction.Parallel exceptions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. - Also note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Changes the current database for an open MySqlConnection.The name of the database to use. - - The value supplied in the database parameter must be a valid database - name. The database parameter cannot contain a null value, an empty - string, or a string with only blank characters. - - - - When you are using connection pooling against MySQL, and you close - the connection, it is returned to the connection pool. The next time the - connection is retrieved from the pool, the reset connection request - executes before the user performs any operations. - - The database name is not valid.The connection is not open.Cannot change the database. - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Pings the server. - - true if the ping was successful; otherwise, false. - - - Opens a database connection with the property settings specified by the ConnectionString.Cannot open a connection without specifying a data source or server.A connection-level error occurred while opening the connection. - - The draws an open connection from the connection pool if one is available. - Otherwise, it establishes a new connection to an instance of MySQL. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Creates and returns a object associated with the . - - A object. - - - - Closes the connection to the database. This is the preferred method of closing any open connection. - - The Close method rolls back any pending transactions. It then releases - the connection to the connection pool, or closes the connection if connection - pooling is disabled. - - - An application can call Close more than one time. No exception is - generated. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Cancels the query after the specified time interval. - - The length of time (in seconds) to wait for the cancelation of the command execution. - - - - Sets query timeout. If timeout has been set prior and not - yet cleared ClearCommandTimeout(), it has no effect. - - timeout in seconds - true if - - - - Clears query timeout, allowing next SetCommandTimeout() to succeed. - - - - - Gets a schema collection based on the provided restriction values. - - The name of the collection. - The values to restrict. - A schema collection object. - - - Empties the connection pool associated with the specified connection. - The associated with the pool to be cleared. - - - ClearPool clears the connection pool that is associated with the connection. - If additional connections associated with connection are in use at the time of the call, - they are marked appropriately and are discarded (instead of being returned to the pool) - when Close is called on them. - - - - - Clears all connection pools. - - ClearAllPools essentially performs a on all current connection - pools. - - - - - - Initiates the asynchronous execution of a transaction. - - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - The cancellation token. - - - - - Asynchronous version of the Close method. - - - - - Asynchronous version of the Close method. - - The cancellation token. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - The cancellation token. - - - - Asynchronous version of the ClearAllPools method. - - - - - Asynchronous version of the ClearAllPools method. - - The cancellation token. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - A collection of schema objects. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - The cancellation token. - A collection of schema objects. - - - - Returns schema information for the data source of this . - - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name. - - Specifies the name of the schema to return. - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name and the specified string array - for the restriction values. - - Specifies the name of the schema to return. - Specifies a set of restriction values for the requested schema. - A that contains schema information. - - - - Enlists in the specified transaction. - - - A reference to an existing in which to enlist. - - - - - Creates a new MySqlConnection object with the exact same ConnectionString value - - A cloned MySqlConnection object - - - - Represents the method that will handle the event of a - . - - - - - Provides data for the InfoMessage event. This class cannot be inherited. - - - - - Gets or sets an array of objects set with the errors found. - - - - - IDisposable wrapper around SetCommandTimeout and ClearCommandTimeout functionality. - - - - - Summary description for Crypt. - - - - - Simple XOR scramble - - Source array - Index inside source array - Destination array - Index inside destination array - Password used to xor the bits - Number of bytes to scramble - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Encrypts a password using the MySql encryption scheme - - The password to encrypt - The encryption seed the server gave us - Indicates if we should use the old or new encryption scheme - - - - - Hashes a password using the algorithm from Monty's code. - The first element in the return is the result of the "old" hash. - The second element is the rest of the "new" hash. - - Password to be hashed - Two element array containing the hashed values - - - - Provides a means of reading a forward-only stream of rows from a MySQL database. This class cannot be inherited. - - - To create a MySQLDataReader, you must call the - method of the object, rather than directly using a constructor. - - - While the MySqlDataReader is in use, the associated - is busy serving the MySqlDataReader, and no other operations can be performed - on the MySqlConnection other than closing it. This is the case until the - method of the MySqlDataReader is called. - - - and - are the only properties that you can call after the MySqlDataReader is - closed. Though the RecordsAffected property may be accessed at any time - while the MySqlDataReader exists, always call Close before returning - the value of RecordsAffected to ensure an accurate return value. - - - For optimal performance, MySqlDataReader avoids creating - unnecessary objects or making unnecessary copies of data. As a result, multiple calls - to methods such as return a reference to the - same object. Use caution if you are modifying the underlying value of the objects - returned by methods such as GetValue. - - - The following example creates a , - a , and a MySqlDataReader. The example reads through - the data, writing it out to the console. Finally, the example closes the MySqlDataReader, then the - MySqlConnection. - - Public Sub ReadMyData(myConnString As String) - Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders" - Dim myConnection As New MySqlConnection(myConnString) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - ' Always call Read before accessing data. - While myReader.Read() - Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1))) - End While - ' always call Close when done reading. - myReader.Close() - ' Close the connection when done with it. - myConnection.Close() - End Sub 'ReadMyData - - - public void ReadMyData(string myConnString) { - string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; - MySqlConnection myConnection = new MySqlConnection(myConnString); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - myConnection.Open(); - MySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - // Always call Read before accessing data. - while (myReader.Read()) { - Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1)); - } - // always call Close when done reading. - myReader.Close(); - // Close the connection when done with it. - myConnection.Close(); - } - - - - - - Gets the number of columns in the current row. - - - - - Gets a value indicating whether the MySqlDataReader contains one or more rows. - - - - - Gets a value indicating whether the data reader is closed. - - - - - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - - - - - Overloaded. Gets the value of a column in its native format. - In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets the value of a column in its native format. - [C#] In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets a value indicating the depth of nesting for the current row. This method is not - supported currently and always returns 0. - - - - - Closes the MySqlDataReader object. - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset. - - The zero-based column ordinal. - The index within the field from which to begin the read operation. - The buffer into which to read the stream of bytes. - The index for buffer to begin the read operation. - The maximum length to copy into the buffer. - The actual number of bytes read. - - - - - Gets the value of the specified column as a single character. - - - - - - - Gets the value of the specified column as a single character. - - - - - - - Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset. - - - - - - - - - - - Gets the name of the source data type. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinalThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the Type that is the data type of the object. - - - - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a globally-unique identifier(GUID). - - The name of the column. - - - - - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; threfore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the name of the specified column. - - - - - - - Gets the column ordinal, given the name of the column. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column in its native format. - - - - - - - Gets all attribute columns in the collection for the current row. - - - - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets a value indicating whether the column contains non-existent or missing values. - - - - - - - Advances the data reader to the next result, when reading the results of batch SQL statements. - - - - - - Advances the MySqlDataReader to the next record. - - - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Returns an that iterates through the . - - - - - Returns a DataTable that describes the column metadata of the MySqlDataReader. - - - - - - Summary description for BaseDriver. - - - - - For pooled connections, time when the driver was - put into idle queue - - - - - Loads the properties from the connected server into a hashtable - - - - - - - Loads all the current character set names and ids for this server - into the charSets hashtable - - - - - The exception that is thrown when MySQL returns an error. This class cannot be inherited. - - - - This class is created whenever the MySql Data Provider encounters an error generated from the server. - - - Any open connections are not automatically closed when an exception is thrown. If - the client application determines that the exception is fatal, it should close any open - objects or objects. - - - The following example generates a MySqlException due to a missing server, - and then displays the exception. - - - Public Sub ShowException() - Dim mySelectQuery As String = "SELECT column1 FROM table1" - Dim myConnection As New MySqlConnection ("Data Source=localhost;Database=Sample;") - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - - Try - myCommand.Connection.Open() - Catch e As MySqlException - MessageBox.Show( e.Message ) - End Try - End Sub - - - public void ShowException() - { - string mySelectQuery = "SELECT column1 FROM table1"; - MySqlConnection myConnection = - new MySqlConnection("Data Source=localhost;Database=Sample;"); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - - try - { - myCommand.Connection.Open(); - } - catch (MySqlException e) - { - MessageBox.Show( e.Message ); - } - } - - - - - - Gets a number that identifies the type of error. - - - - - True if this exception was fatal and cause the closing of the connection, false otherwise. - - - - - Gets the SQL state. - - - - - Gets an integer that representes the MySQL error code. - - - - - Summary description for Field. - - - - - We are adding a custom installer class to our assembly so our installer - can make proper changes to the machine.config file. - - - - - We override Install so we can add our assembly to the proper - machine.config files. - - - - - - We override Uninstall so we can remove out assembly from the - machine.config files. - - - - - - Automatically generates single-table commands used to reconcile changes made to a DataSet with the associated MySQL database. This class cannot be inherited. - - - The does not automatically generate the SQL statements required to - reconcile changes made to a DataSet with the associated instance of MySQL. - However, you can create a MySqlCommandBuilder object to automatically generate SQL statements for - single-table updates if you set the SelectCommand property - of the MySqlDataAdapter. Then, any additional SQL statements that you do not set are generated by the - MySqlCommandBuilder. - - - - The MySqlCommandBuilder registers itself as a listener for RowUpdating - events whenever you set the property. You can only associate one - MySqlDataAdapter or MySqlCommandBuilder object with each other at one time. - - - - To generate INSERT, UPDATE, or DELETE statements, the MySqlCommandBuilder uses the - SelectCommand property to retrieve a required set of metadata automatically. If you change - the SelectCommand after the metadata has is retrieved (for example, after the first update), you - should call the method to update the metadata. - - - - The SelectCommand must also return at least one primary key or unique - column. If none are present, an InvalidOperation exception is generated, - and the commands are not generated. - - - - The MySqlCommandBuilder also uses the Connection, - CommandTimeout, and Transaction - properties referenced by the SelectCommand. The user should call - RefreshSchema if any of these properties are modified, or if the - SelectCommand itself is replaced. Otherwise the InsertCommand, - UpdateCommand, and - DeleteCommand properties retain - their previous values. - - - - If you call Dispose, the MySqlCommandBuilder is disassociated - from the MySqlDataAdapter, and the generated commands are no longer used. - - - - Caution must be used when using MySqlCOmmandBuilder on MySql 4.0 systems. With MySql 4.0, - database/schema information is not provided to the connector for a query. This means that - a query that pulls columns from two identically named tables in two or more different databases - will not cause an exception to be thrown but will not work correctly. Even more dangerous - is the situation where your select statement references database X but is executed in - database Y and both databases have tables with similar layouts. This situation can cause - unwanted changes or deletes. - This note does not apply to MySQL versions 4.1 and later. - - - - The following example uses the , along - and , to - select rows from a data source. The example is passed an initialized - , a connection string, a - query string that is a SQL SELECT statement, and a string that is the - name of the database table. The example then creates a MySqlCommandBuilder. - - - Public Shared Function SelectRows(myConnection As String, mySelectQuery As String, myTableName As String) As DataSet - Dim myConn As New MySqlConnection(myConnection) - Dim myDataAdapter As New MySqlDataAdapter() - myDataAdapter.SelectCommand = New MySqlCommand(mySelectQuery, myConn) - Dim cb As SqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter) - - myConn.Open() - - Dim ds As DataSet = New DataSet - myDataAdapter.Fill(ds, myTableName) - - ' Code to modify data in DataSet here - - ' Without the MySqlCommandBuilder this line would fail. - myDataAdapter.Update(ds, myTableName) - - myConn.Close() - End Function 'SelectRows - - - public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName) - { - MySqlConnection myConn = new MySqlConnection(myConnection); - MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); - myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn); - MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter); - - myConn.Open(); - - DataSet ds = new DataSet(); - myDataAdapter.Fill(ds, myTableName); - - //code to modify data in DataSet here - - //Without the MySqlCommandBuilder this line would fail - myDataAdapter.Update(ds, myTableName); - - myConn.Close(); - - return ds; - } - - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with the associated object. - - The to use. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Gets or sets a object for which SQL statements are automatically generated. - - A object. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Retrieves parameter information from the stored procedure specified - in the MySqlCommand and populates the Parameters collection of the - specified MySqlCommand object. - This method is not currently supported since stored procedures are - not available in MySql. - - The MySqlCommand referencing the stored - procedure from which the parameter information is to be derived. - The derived parameters are added to the Parameters collection of the - MySqlCommand. - The command text is not - a valid stored procedure name. - - - - Gets the delete command. - - - - - - Gets the update command. - - - - - - Gets the insert command. - - - - - - - - - - - - - Represents a set of data commands and a database connection that are used to fill a dataset and update a MySQL database. This class cannot be inherited. - - - The MySQLDataAdapter, serves as a bridge between a - and MySQL for retrieving and saving data. The MySQLDataAdapter provides this - bridge by mapping , which changes the data in the - DataSet to match the data in the data source, and , - which changes the data in the data source to match the data in the DataSet, - using the appropriate SQL statements against the data source. - - - When the MySQLDataAdapter fills a DataSet, it will create the necessary - tables and columns for the returned data if they do not already exist. However, primary - key information will not be included in the implicitly created schema unless the - property is set to . - You may also have the MySQLDataAdapter create the schema of the DataSet, - including primary key information, before filling it with data using . - - - MySQLDataAdapter is used in conjunction with - and to increase performance when connecting to a MySQL database. - - - The MySQLDataAdapter also includes the , - , , - , and - properties to facilitate the loading and updating of data. - - - When an instance of MySQLDataAdapter is created, the read/write properties - are set to initial values. For a list of these values, see the MySQLDataAdapter - constructor. - - - Please be aware that the class allows only - Int16, Int32, and Int64 to have the AutoIncrement property set. - If you plan to use autoincremement columns with MySQL, you should consider - using signed integer columns. - - - The following example creates a and a . - The MySqlConnection is opened and set as the for the - MySqlCommand. The example then calls , and closes - the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - Public Function SelectRows(dataSet As DataSet, connection As String, query As String) As DataSet - Dim conn As New MySqlConnection(connection) - Dim adapter As New MySqlDataAdapter() - adapter.SelectCommand = new MySqlCommand(query, conn) - adapter.Fill(dataset) - Return dataset - End Function - - - public DataSet SelectRows(DataSet dataset,string connection,string query) - { - MySqlConnection conn = new MySqlConnection(connection); - MySqlDataAdapter adapter = new MySqlDataAdapter(); - adapter.SelectCommand = new MySqlCommand(query, conn); - adapter.Fill(dataset); - return dataset; - } - - - - - - Occurs during Update before a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Occurs during Update after a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Initializes a new instance of the MySqlDataAdapter class. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.SelectCommand = New MySqlCommand("SELECT id, name FROM mytable", conn) - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter(); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.SelectCommand = new MySqlCommand("SELECT id, name FROM mytable", conn); - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - the specified as the - property. - - that is a SQL SELECT statement or stored procedure and is set - as the property of the . - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - When SelectCommand (or any of the other command properties) is assigned - to a previously created , the MySqlCommand is not cloned. - The SelectCommand maintains a reference to the previously created MySqlCommand - object. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim cmd as new MySqlCommand("SELECT id, name FROM mytable", conn) - Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlCommand cmd = new MySqlCommand("SELECT id, name FROM mytable", conn); - MySqlDataAdapter da = new MySqlDataAdapter(cmd); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a object. - - A String that is a SQL SELECT statement or stored procedure to be used by - the property of the . - - A that represents the connection. - - - This implementation of the opens and closes a - if it is not already open. This can be useful in a an application that must call the - method for two or more MySqlDataAdapter objects. - If the MySqlConnection is already open, you must explicitly call - or to close it. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", conn) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", conn); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a connection string. - - A that is a SQL SELECT statement or stored procedure to - be used by the property of the . - The connection string - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test") - Dim conn As MySqlConnection = da.SelectCommand.Connection - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test"); - MySqlConnection conn = da.SelectCommand.Connection; - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Gets or sets a SQL statement or stored procedure used to delete records from the data set. - - A used during to delete records in the - database that correspond to deleted rows in the . - - - During , if this property is not set and primary key information - is present in the , the DeleteCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When DeleteCommand is assigned to a previously created , - the MySqlCommand is not cloned. The DeleteCommand maintains a reference - to the previously created MySqlCommand object. - - - The following example creates a and sets the - and DeleteCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the DeleteCommand. - cmd = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - parm.SourceVersion = DataRowVersion.Original - - da.DeleteCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the DeleteCommand. - cmd = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - parm.SourceVersion = DataRowVersion.Original; - - da.DeleteCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to insert records into the data set. - - A used during to insert records into the - database that correspond to new rows in the . - - - During , if this property is not set and primary key information - is present in the , the InsertCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When InsertCommand is assigned to a previously created , - the MySqlCommand is not cloned. The InsertCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be added to the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to select records in the data source. - - A used during to select records from the - database for placement in the . - - - When SelectCommand is assigned to a previously created , - the MySqlCommand is not cloned. The SelectCommand maintains a reference to the - previously created MySqlCommand object. - - - If the SelectCommand does not return any rows, no tables are added to the - , and no exception is raised. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to updated records in the data source. - - A used during to update records in the - database with data from the . - - - During , if this property is not set and primary key information - is present in the , the UpdateCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When UpdateCommand is assigned to a previously created , - the MySqlCommand is not cloned. The UpdateCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be merged with the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and UpdateCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the UpdateCommand. - cmd = New MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - - parm = cmd.Parameters.Add("@oldId", MySqlDbType.VarChar, 15, "id") - parm.SourceVersion = DataRowVersion.Original - - da.UpdateCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the UpdateCommand. - cmd = new MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - parm = cmd.Parameters.Add( "@oldId", MySqlDbType.VarChar, 15, "id" ); - parm.SourceVersion = DataRowVersion.Original; - - da.UpdateCommand = cmd; - - return da; - } - - - - - - Open connection if it was closed. - Necessary to workaround "connection must be open and valid" error - with batched updates. - - Row state - list of opened connections - If connection is opened by this function, the list is updated - - true if connection was opened - - - - Overridden. See . - - - - - - - - - - Overridden. See . - - - - - - - - - - Overridden. Raises the RowUpdating event. - - A MySqlRowUpdatingEventArgs that contains the event data. - - - - Overridden. Raises the RowUpdated event. - - A MySqlRowUpdatedEventArgs that contains the event data. - - - - Asynchronous version of the Fill method. - - The to fill records with. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill records with. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The cancellation token. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Async version of FillSchema - - DataSet to use - Schema Type - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataReader to use - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - DBCommand to use - Source Table - Command Behavior - DataTable[] - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataReader to use - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DBCommand to use - Command Behavior - DataTable - - - - Async version of Update - - DataRow[] to use - int - - - - Async version of Update - - DataSet to use - int - - - - Async version of Update - - DataTable to use - int - - - - Async version of Update - - DataRow[] to use - Data Table Mapping - int - - - - Async version of Update - - DataSet to use - Source Table - - - - - Represents the method that will handle the event of a . - - - - - Represents the method that will handle the event of a . - - - - - Provides data for the RowUpdating event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatingEventArgs class. - - The to - . - The to execute during . - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand to execute when performing the Update. - - - - - Provides data for the RowUpdated event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatedEventArgs class. - - The sent through an . - The executed when is called. - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand executed when Update is called. - - - - - Enables the provider to help ensure that a user has a security level adequate for accessing data. - - - - - Adds a new connection string with set of restricted keywords to the MySqlClientPermission object - - Settings to be used for the connection - Keywords to define the restrictions - KeyRestrictionBehavior to be used - - - - Returns MySqlClientPermission as an IPermission - - - - - - Associates a security action with a custom security attribute. - - - - - Represents a section within a configuration file. - - - - - Gets the MySQL configuations associated to the current configuration. - - - - - Gets a collection of the exception interceptors available in the current configuration. - - - - - Gets a collection of the command interceptors available in the current configuration. - - - - - Gets a collection of the authentication plugins available in the current configuration. - - - - - Gets or sets the replication configurations. - - - - - Defines the configurations allowed for an authentication plugin. - - - - - Gets or sets the name of the authentication plugin. - - - - - Gets or sets the type of the authentication plugin. - - - - - Defines the configurations allowed for an interceptor. - - - - - Gets or sets the name of the interceptor. - - - - - Gets or sets the type of the interceptor. - - - - - Represents a generic configuration element. - - - - - - Gets an enumerator that iterates through the returned list. - - An enumerator that iterates through the returned list. - - - - Helper class that makes it easier to work with the provider. - - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The cancellation token. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Executes a single SQL command and returns the first row of the resultset. A new MySqlConnection object - is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - DataRow containing the first row of the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Updates the given table with data from the given - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of UpdateDataset - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Executes a single command against a MySQL database. The is assumed to be - open when the method is called and remains open after the method completes. - - The object to use - The SQL command to be executed. - An array of objects to use with the command. - The number of affected records. - - - - Executes a single command against a MySQL database. - - to use. - The SQL command to be executed. - An rray of objects to use with the command. - The number of affected records. - A new is created using the given. - - - - Executes a single command against a MySQL database, possibly inside an existing transaction. - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Execute a single command against a MySQL database. - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Escapes the string. - - The string to escape. - The string with all quotes escaped. - - - - Replaces quotes with double quotes. - - The string to modidify. - A string containing double quotes instead of single quotes. - - - - Async version of ExecuteNonQuery - - object to use - SQL command to be executed - Array of objects to use with the command. - Rows affected - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - An array of objects to use with the command. - The number of rows affected. - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - The cancellation token. - An array of objects to use with the command. - The number of rows affected. - - - - Async version of ExecuteReader - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteReader - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteScalar - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Represents a parameter to a , This class cannot be inherited. - - - - - Gets or sets the to use when loading . - - - - - CLoses this object. - - An object that is a clone of this object. - - - - Initializes a new instance of the class with the parameter name, the , the size, and the source column name. - - The name of the parameter to map. - One of the values. - The length of the parameter. - The name of the source column. - - - - Initializes a new instance of the class with the parameter name and a value of the new MySqlParameter. - - The name of the parameter to map. - An that is the value of the . - - - - Initializes a new instance of the class with the parameter name and the data type. - - The name of the parameter to map. - One of the values. - - - - Initializes a new instance of the class with the parameter name, the , and the size. - - The name of the parameter to map. - One of the values. - The length of the parameter. - - - - Initializes a new instance of the class with the parameter name, the type of the parameter, the size of the parameter, a , the precision of the parameter, the scale of the parameter, the source column, a to use, and the value of the parameter. - - The name of the parameter to map. - One of the values. - The length of the parameter. - One of the values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which is resolved. - The total number of decimal places to which is resolved. - The name of the source column. - One of the values. - An that is the value of the . - - - - - Gets or sets a value indicating whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter. - As of MySql version 4.1 and earlier, input-only is the only valid choice. - - - - - Gets or sets a value indicating whether the parameter accepts null values. - - - - - Gets or sets the of the parameter. - - - - - Gets or sets the maximum number of digits used to represent the property. - - - - - Gets or sets the number of decimal places to which is resolved. - - - - - Gets or sets the maximum size, in bytes, of the data within the column. - - - - - Gets or sets the value of the parameter. - - - - - Returns the possible values for this parameter if this parameter is of type - SET or ENUM. Returns null otherwise. - - - - - Gets or sets the name of the source column that is mapped to the and used for loading or returning the . - - - - - Sets or gets a value which indicates whether the source column is nullable. - This allows to correctly generate Update statements - for nullable columns. - - - - - Gets or sets the of the parameter. - - - - - Overridden. Gets a string containing the . - - - - - - Resets the DbType property to its original settings. - - - - - Represents a collection of parameters relevant to a as well as their respective mappings to columns in a . This class cannot be inherited. - - - The number of the parameters in the collection must be equal to the number of - parameter placeholders within the command text, or an exception will be generated. - - The following example creates multiple instances of - that are exposed as a collection through the - object within . - These parameters are used to select data within the data source and place the data in - the . This code example assumes that a DataSet - object and an instance of were created properly - with the appropriate schema, commands, and connection. - - Public Sub AddParameters() - ' ... - ' create myDataSet and myDataAdapter - ' ... - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters" - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239 - - myDataAdapter.Fill(myDataSet) - End Sub 'AddSqlParameters - - - public void AddSqlParameters() - { - // ... - // create myDataSet and myDataAdapter - // ... - - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters"; - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239; - myDataAdapter.Fill(myDataSet); - - } - - - - - - Gets a value that indicates whether the - has a fixed size. - - - - - Gets a value that indicates whether the - is read-only. - - - - - Gets a value that indicates whether the - is synchronized. - - - - - Gets the number of MySqlParameter objects in the collection. - - - - - Gets the at the specified index. - - Gets the with a specified attribute. - [C#] In C#, this property is the indexer for the class. - - - - - Gets the with the specified name. - - - - - Adds a to the with the parameter name, the data type, the column length, and the source column name. - - The name of the parameter. - One of the values. - The length of the column. - The name of the source column. - The newly added object. - - - - Adds the specified object to the . - - The to add to the collection. - The newly added object. - - - - Adds a parameter and its value. - - The name of the parameter. - The value of the parameter. - A object representing the provided values. - - - - Adds a to the given the parameter name and the data type. - - The name of the parameter. - One of the values. - The newly added object. - - - - Adds a to the with the parameter name, the data type, and the column length. - - The name of the parameter. - One of the values. - The length of the column. - The newly added object. - - - - Removes all items from the collection. - - - - - Gets the location of the in the collection with a specific parameter name. - - The name of the object to retrieve. - The zero-based location of the in the collection. - - - - Gets the location of a in the collection. - - The object to locate. - The zero-based location of the in the collection. - Gets the location of a in the collection. - - - - This method will update all the items in the index hashes when - we insert a parameter somewhere in the middle - - - - - - - Adds an array of values to the end of the . - - - - - - Retrieve the parameter with the given name. - - - - - - - Adds the specified object to the . - - The to add to the collection. - The index of the new object. - - - - Gets a value indicating whether a with the specified parameter name exists in the collection. - - The name of the object to find. - true if the collection contains the parameter; otherwise, false. - - - - Gets a value indicating whether a MySqlParameter exists in the collection. - - The value of the object to find. - true if the collection contains the object; otherwise, false. - Gets a value indicating whether a exists in the collection. - - - - Copies MySqlParameter objects from the MySqlParameterCollection to the specified array. - - - - - - - Returns an enumerator that iterates through the . - - - - - - Inserts a MySqlParameter into the collection at the specified index. - - - - - - - Removes the specified MySqlParameter from the collection. - - - - - - Removes the specified from the collection using the parameter name. - - The name of the object to retrieve. - - - - Removes the specified from the collection using a specific index. - - The zero-based index of the parameter. - Removes the specified from the collection. - - - - Gets an object that can be used to synchronize access to the - . - - - - - Represents a single(not nested) TransactionScope - - - - - Defines security permissions assigned to a MySQL object. - - - - - Creates a set of permissions. - - A flag indicating if the reflection permission should be included. - A object representing a collection of permissions. - - - - BaseCommandInterceptor is the base class that should be used for all userland - command interceptors - - - - - Gets the active connection. - - - - - Executes an SQL statements that returns a scalar value such as a calculation. - - The SQL statement to execute. - A scalar value that represents the result returned by the execution of the SQL statement. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that returns the number of affected rows. - - The SQL statement to execute. - The number of affected rows. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that will return a resultset. - - The SQL statement to execute. - A value that describes the results of the query and its effect on the database. - A object containing the result of the statement execution. - false. - This method is intended to be overriden. - - - - Sets the active connection. - - The active connection. - - - - CommandInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - BaseExceptionInterceptor is the base class that should be used for all userland - exception interceptors. - - - - - Returns the received exception. - - The exception to be returned. - The exception originally received. - - - - Gets the active connection. - - - - - Initilizes this object by setting the active connection. - - The connection to become active. - - - - StandardExceptionInterceptor is the standard interceptor that simply returns the exception. - It is the default action. - - - - - Returns the received exception, which is the default action - - The exception to be returned. - The exception originally received. - - - - ExceptionInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - Interceptor is the base class for the "manager" classes such as ExceptionInterceptor, - CommandInterceptor, etc - - - - - Return schema information about procedures and functions - Restrictions supported are: - schema, name, type - - - - - - - Return schema information about parameters for procedures and functions - Restrictions supported are: - schema, name, type, parameter name - - - - - Initializes a new row for the procedure parameters table. - - - - - Parses out the elements of a procedure parameter data type. - - - - - Implementation of memcached binary client protocol. - - According to http://code.google.com/p/memcached/wiki/BinaryProtocolRevamped - - - - Sends an store command (add, replace, set). - - - - - - - - - - - Sends a get command. - - - - - - - - - Sends a delete command. - - - - - - - - Sends a command without args (like flush). - - - - - - - - Sends a command with amount (INCR/DECR) - - - - - - - - - Encodes in the binary protocol the a command of the kind set, add or replace. - - - - - - - If true applies to set, add or replace commands; if false applies to append and prepend commands. - - - - - An interface of the client memcached protocol. This class is abstract for - implementation of the Memcached client interface see for the - text protocol version and for the binary protocol version. - - - - - The port used by the connection. - - - - - The server DNS or IP address used by the connection. - - - - - The network stream used by the connecition. - - - - - Factory method for creating instances of that implement a connection with the requested features. - The connection object returned must be explicitely opened see method . - - The Memcached server DNS or IP address. - The port for the Memcached server - A set of flags indicating characterestics requested. - An instance of a client connection ready to be used. - - - - Opens the client connection. - - - - - Closes the client connection. - - - - - Adds a new key/value pair with the given TimeSpan expiration. - - The key for identifying the entry. - The data to associate with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Appens the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Executes the Check-and-set Memcached operation. - - The key for identifying the entry. - The data to use in the CAS. - The interval of timespan, use TimeSpan.Zero for no expiration. - The CAS unique value to use. - - - - - Decrements the value associated with a key by the given amount. - - The key associated with the value to decrement. - The amount to decrement the value. - - - - Removes they pair key/value given the specified key. - - - - - - Removes all entries from the storage, effectively invalidating the whole cache. - - The interval after which the cache will be cleaned. Can be TimeSpan.Zero for immediately. - - - - Get the key/value pair associated with a given key. - - The key for which to returm the key/value. - The key/value associated with the key or a MemcachedException if it does not exists. - - - - Increments the value associated with a key by the given amount. - - The key associated with the value to increment. - The amount to increment the value. - - - - Prepends the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Replaces the value associated with the given key with another value. - - The key for identifying the entry. - The data to replace the value associated with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Set the value of a given key. - - The key for identifying the entry. - The data to associate with the given key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - A set of flags for requesting new instances of connections - - - - - Requests a connection implememting the text protocol. - - - - - Requests a connection implementing the binary protocol. - - - - - Requests a TCP connection. Currently UDP is not supported. - - - - - The base exception class for all Memcached exceptions. - - - - - Implementation of the Memcached text client protocol. - - - - - Sends a command to the memcached server. - - - - - - - This version is for commands that take a key, data, expiration and casUnique. - - - - Sends a command to the memcached server. - - - - - - This version is for commands that take a key, data and expiration - - - - Send a command to memcached server. - - - - - This version is for commands that don't need flags neither expiration fields. - - - - Sends a command to the server. - - - - This version is for commands that only require a key - - - - Sends a command to the server. - - - - - This version is for commands that only require a key and an integer value. - - - - Sends a command to the server. - - - - This version is for commands that only require a key and expiration. - - - - Represents a query attribute to a . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the attribute name and its value. - - Name of the attribute. - Value of the attribute. - - - - Name of the query attribute. - - - - - Value of the query attribute. - - - - - Gets or sets the of the attribute. - - - - - Sets the MySqlDbType from the Value - - - - - Gets the value for the attribute type. - - - - - Serialize the value of the query attribute. - - - - - Represents a collection of query attributes relevant to a . - - - The following example creates multiple instances of - that are exposed as a collection through the - object within . This code example assumes that an instance - of was created - properly. - - Public Sub AddQueryAttributes() - ' ... - ' create MySqlCommand - ' ... - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute") - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now) - End Sub - - - public void AddQueryAttributes() - { - // ... - // create MySqlCommand - // ... - - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute"); - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now); - } - - - - - - Gets the at the specified index. - - - - - Gets the number of objects in the collection. - - - - - Adds the specified object to the . - - object to add. - - - - Adds a query attribute and its value. - - Name of the query attribute. - Value of the query attribute. - - - - Removes all items from the collection. - - - - - Returns an enumerator that iterates through the . - - - - - Abstract class that provides common functionality for connection options that apply for all protocols. - - - - - Readonly field containing a collection of protocol shared connection options. - - - - - Gets or sets a flag indicating if the object has access to procedures. - - - - - Gets or sets a dictionary representing key-value pairs for each connection option. - - - - - Gets or sets the name of the server. - - The server. - - - - Gets or sets the name of the database for the initial connection. - - - - - Gets or sets the protocol that should be used for communicating - with MySQL. - - - - - Gets or sets the port number that is used when the socket - protocol is being used. - - - - - Gets or sets a boolean value that indicates whether this connection - should resolve DNS SRV records. - - - - - Gets or sets the user ID that should be used to connect with. - - - - - Gets or sets the password that should be used to make a connection. - - - - - Gets or sets the path to the certificate file to be used. - - - - - Gets or sets the password to be used in conjunction with the certificate file. - - - - - Gets or sets the location to a personal store where a certificate is held. - - - - - Gets or sets a certificate thumbprint to ensure correct identification of a certificate contained within a personal store. - - - - - Indicates whether to use SSL connections and how to handle server certificate errors. - - - - - Sets the TLS versions to use in a SSL connection to the server. - - - Tls version=TLSv1.1,TLSv1.2; - - - - - Gets or sets the path to a local key file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the path to a local certificate file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the idle connection time(seconds) for TCP connections. - - - - - Gets or sets the character set that should be used for sending queries to the server. - - - - - Analyzes the connection string for potential duplicated or invalid connection options. - - Connection string. - Flag that indicates if the connection is using X Protocol. - Flag that indicates if the default port is used. - - - - Represents a set of methods for creating instances of the MySQL client implementation of the data source classes. - - - - - Gets an instance of the . - This can be used to retrieve strongly typed data objects. - - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommand. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnection. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbParameter. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnectionStringBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommandBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbDataAdapter. - - - - Provide a simple caching layer - - - - - Aids in the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the Classic protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the name of the named pipe that should be used - for communicating with MySQL. - - - - - Gets or sets a boolean value that indicates whether this connection - should use compression. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - commands to send multiple SQL statements in one execution. - - - - - Gets or sets a boolean value that indicates whether logging is enabled. - - - - - Gets or sets the base name of the shared memory objects used to - communicate with MySQL when the shared memory protocol is being used. - - - - - Gets or sets the default command timeout. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - to load data local infile. - - - - - Gets or sets the safe path where files can be read and uploaded to the server. - - - - - Gets or sets a boolean value that indicates if the password should be persisted - in the connection string. - - - - - Gets or sets a boolean value that indicates if the connection should be encrypted. - - Obsolte. Use instead. - - - - Gets or sets a boolean value that indicates if RSA public keys should be retrieved from the server. - - This option is only relevant when SSL is disabled. Setting this option to true in - 8.0 servers that have the caching_sha2_password authentication plugin as the default plugin will - cause the connection attempt to fail if the user hasn't successfully connected to the server on a - previous occasion. - - - - Gets or sets the default authentication plugin to be used. This plugin takes precedence over - the server-side default authentication plugin when a valid authentication plugin is specified. - - - The default authentication plugin is mandatory for supporting user-less and password-less Kerberos authentications. - If no value is set, it uses the server-side default authentication plugin. - - - - - Gets or sets a boolean value that indicates if zero date time values are supported. - - Default value is false. - - - - Gets or sets a boolean value that indicates if zero datetime values should be - converted to DateTime.MinValue. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the Usage Advisor should be enabled. - - Default value is false. - - - - Gets or sets the size of the stored procedure cache. - - Default value is 25. - - - - Gets or sets a boolean value that indicates if the performance monitor hooks should be enabled. - - Default value is false. - - - - Gets or sets a boolean value that indicates if an opened connection should particiapte in the current scope. - - Default value is true. - - - - Gets or sets a boolean value that indicates if security asserts must be included. - - Must be set to true when using the class in a partial trust environment, - with the library installed in the GAC of the hosting environment. Not supported in .NET Core. - Default value is false. - - - - Gets or sets a boolean value that indicates if column binary flags set by the server are ignored. - - Default value is true. - - - - Gets or sets a boolean value that indicates if TINYINT(1) shound be treated as a BOOLEAN. - - Default value is true. - - - - Gets or sets a boolean value that indicates if the provider expects user variables in the SQL. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the session should be interactive. - - Default value is false. - - - - Gets or sets a boolean value that indicates if server functions should be treated as returning a string. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the server should report affected rows instead of found rows. - - Default value is false. - - - - Gets or sets a boolean value that indicates if items of data type BINARY(16) should be treated as guids. - - Default value is false. - - - - Gets or sets a boolean value that indicates if SQL Server syntax should be allowed by supporting square brackets - around symbols instead of backticks. - - Default value is false. - - - - Gets or sets a boolean value that indicates if caching of TableDirect commands is enabled. - - Default value is false. - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - Default value is 0. - - - - Gets or sets a boolean value that indicates if stored routine parameters should be checked against the server. - - Default value is true. - - - - Gets or sets a boolean value that indicates if this connection will use replication. - - Default value is false. - - - - Gets or sets the list of interceptors that can triage thrown MySqlExceptions. - - - - - Gets or sets the list of interceptors that can intercept command operations. - - - - - Gets or sets the lifetime of a pooled connection. - - Default value is 0. - - - - Gets or sets a boolean value indicating if connection pooling is enabled. - - Default value is true. - - - - Gets the minimum connection pool size. - - Default value is 0. - - - - Gets or sets the maximum connection pool setting. - - Default value is 100. - - - - Gets or sets a boolean value that indicates if the connection should be reset when retrieved - from the pool. - - Default value is false. - - - - Gets or sets a boolean value that indicates whether the server variable settings are updated by a - SHOW VARIABLES command each time a pooled connection is returned. - - Default value is false. - - - - Indicates whether the driver should treat binary BLOBs as UTF8. - - Default value is false. - - - - Gets or sets the pattern to match for the columns that should be treated as UTF8. - - - - - Gets or sets the pattern to match for the columns that should not be treated as UTF8. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Summary description for ClientParam. - - - - - DB Operations Code - - - - - Specifies MySQL specific data type of a field, property, for use in a . - - - - - - A fixed precision and scale numeric value between -1038 - -1 and 10 38 -1. - - - - - The signed range is -128 to 127. The unsigned - range is 0 to 255. - - - - - A 16-bit signed integer. The signed range is - -32768 to 32767. The unsigned range is 0 to 65535 - - - - - Specifies a 24 (3 byte) signed or unsigned value. - - - - - A 32-bit signed integer - - - - - A 64-bit signed integer. - - - - - A small (single-precision) floating-point - number. Allowable values are -3.402823466E+38 to -1.175494351E-38, - 0, and 1.175494351E-38 to 3.402823466E+38. - - - - - A normal-size (double-precision) - floating-point number. Allowable values are -1.7976931348623157E+308 - to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to - 1.7976931348623157E+308. - - - - - A timestamp. The range is '1970-01-01 00:00:00' to sometime in the - year 2037 - - - - - Date The supported range is '1000-01-01' to '9999-12-31'. - - - - - Time The range is '-838:59:59' to '838:59:59'. - - - - - DateTime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - Datetime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - A year in 2- or 4-digit format (default is 4-digit). The - allowable values are 1901 to 2155, 0000 in the 4-digit year - format, and 1970-2069 if you use the 2-digit format (70-69). - - - - - Obsolete Use Datetime or Date type - - - - - A variable-length string containing 0 to 65535 characters - - - - - Bit-field data type - - - - - JSON - - - - - New Decimal - - - - - An enumeration. A string object that can have only one value, - chosen from the list of values 'value1', 'value2', ..., NULL - or the special "" error value. An ENUM can have a maximum of - 65535 distinct values - - - - - A set. A string object that can have zero or more values, each - of which must be chosen from the list of values 'value1', 'value2', - ... A SET can have a maximum of 64 members. - - - - - A binary column with a maximum length of 255 (2^8 - 1) - characters - - - - - A binary column with a maximum length of 16777215 (2^24 - 1) bytes. - - - - - A binary column with a maximum length of 4294967295 or - 4G (2^32 - 1) bytes. - - - - - A binary column with a maximum length of 65535 (2^16 - 1) bytes. - - - - - A variable-length string containing 0 to 255 bytes. - - - - - A fixed-length string. - - - - - Geometric (GIS) data type. - - - - - Unsigned 8-bit value. - - - - - Unsigned 16-bit value. - - - - - Unsigned 24-bit value. - - - - - Unsigned 32-bit value. - - - - - Unsigned 64-bit value. - - - - - Fixed length binary string. - - - - - Variable length binary string. - - - - - A text column with a maximum length of 255 (2^8 - 1) characters. - - - - - A text column with a maximum length of 16777215 (2^24 - 1) characters. - - - - - A text column with a maximum length of 4294967295 or - 4G (2^32 - 1) characters. - - - - - A text column with a maximum length of 65535 (2^16 - 1) characters. - - - - - A guid column. - - - - - Allows the user to specify the type of connection that should - be used. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - SSL options for connection. - - - - - Do not use SSL. - - - - - Use SSL, if server supports it. This option is only available for the classic protocol. - - - - - Always use SSL. Deny connection if server does not support SSL. - Do not perform server certificate validation. - This is the default SSL mode when the same isn't specified as part of the connection string. - - - - - Always use SSL. Validate server SSL certificate, but different host name mismatch. - - - - - Always use SSL and perform full certificate validation. - - - - - Specifies the connection types supported - - - - - Use TCP/IP sockets. - - - - - Use client library. - - - - - Use MySQL embedded server. - - - - - Defines the location of the certificate store. - - - - - Do not use certificate store. - - - - - Use certificate store for the current user. - - - - - User certificate store for the machine. - - - - - Specifies the authentication mechanism that should be used. - - - - - If SSL is enabled or Unix sockets are being used, sets PLAIN as the authentication mechanism; - otherwise, it tries to use MYSQL41 and then SHA256_MEMORY. - - - - - Authenticate using PLAIN. - - - - - Authenticate using MYSQL41. - - - - - Authenticate using EXTERNAL. - - - - - Authenticate using SHA256_MEMORY. - - - - - Defines waiting options that may be used with row locking options. - - - - - Waits until the blocking transaction releases the row lock. - - - - - Never waits to acquire a row lock. The query executes immediately, - failing with an error if a requested row is locked. - - - - - Never waits to acquire a row lock. The query executes immediately, - removing locked rows from the result set. - - - - - Defines the type of compression used when data is exchanged between client and server. - - - - - Uses compression if client and server are able to reach a concensus. Otherwise, compression - is not used. - - - - - Enforces the use of compression. If no concensus is reached, an error is raised. - - - - - Disables compression. - - - - - Defines the compression algorithms that can be used. - - - - - The warnings that cause a connection to close. - - - - - Controls which column type should be read as type System.Guid. - - - - - Same as Char36 when OldGuids equals False, otherwise, the same as LittleEndianBinary16. - - - - - No column types are read or written as type Guid. - - - - - Char(36) columns are read or written as type Guid using lowercase hex with hyphens, which match UUID(). - - - - - Char(32) columns are read or written as type Guid using lowercase hex without hyphens. - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order, which matches UUID_TO_BIN(x). - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order - with time parts swapped, which matches UUID_TO_BIN(x,1). - - - - - Binary(16) columns are read or written as type Guid using little-endian byte order, - that is, the byte order used by System.Guid.ToByteArray and System.Guid.#ctor(System.Byte[]). - - - - - Collection of error codes that can be returned by the server - - - - - - - - - - - Error level - - - - - Error code - - - - - Error message - - - - - Provides a reference to error codes returned by MySQL. - - - - - ER_HASHCHK - - - - ER_NISAMCHK - - - - ER_NO - - - - ER_YES - - - The file couldn't be created. - ER_CANT_CREATE_FILE - - - The table couldn't be created. - ER_CANT_CREATE_TABLE - - - The database couldn't be created. - ER_CANT_CREATE_DB - - - The database couldn't be created, it already exists. - ER_DB_CREATE_EXISTS - - - The database couldn't be dropped, it doesn't exist. - ER_DB_DROP_EXISTS - - - The database couldn't be dropped, the file can't be deleted. - ER_DB_DROP_DELETE - - - The database couldn't be dropped, the directory can't be deleted. - ER_DB_DROP_RMDIR - - - The file couldn't be deleted. - ER_CANT_DELETE_FILE - - - The record couldn't be read from the system table. - ER_CANT_FIND_SYSTEM_REC - - - The status couldn't be retrieved. - ER_CANT_GET_STAT - - - The working directory couldn't be retrieved. - ER_CANT_GET_WD - - - The file couldn't be locked. - ER_CANT_LOCK - - - The file couldn't be opened. - ER_CANT_OPEN_FILE - - - The file couldn't be found. - ER_FILE_NOT_FOUND - - - The directory couldn't be read. - ER_CANT_READ_DIR - - - The working directory couldn't be entered. - ER_CANT_SET_WD - - - The record changed since it was last read. - ER_CHECKREAD - - - The disk is full. - ER_DISK_FULL - - - - There is already a key with the given values. - - - - An error occurred when closing the file. - ER_ERROR_ON_CLOSE - - - An error occurred when reading from the file. - ER_ERROR_ON_READ - - - An error occurred when renaming then file. - ER_ERROR_ON_RENAME - - - An error occurred when writing to the file. - ER_ERROR_ON_WRITE - - - The file is in use. - ER_FILE_USED - - - Sorting has been aborted. - ER_FILSORT_ABORT - - - The view doesn't exist. - ER_FORM_NOT_FOUND - - - Got the specified error from the table storage engine. - ER_GET_ERRNO - - - The table storage engine doesn't support the specified option. - ER_ILLEGAL_HA - - - - The specified key was not found. - - - - The file contains incorrect information. - ER_NOT_FORM_FILE - - - The key file is incorrect for the table, it should be repaired. - ER_NOT_KEYFILE - - - The key file is old for the table, it should be repaired. - ER_OLD_KEYFILE - - - The table is read-only - ER_OPEN_AS_READONLY - - - The server is out of memory, it should be restarted. - ER_OUTOFMEMORY - - - The server is out of sort-memory, the sort buffer size should be increased. - ER_OUT_OF_SORTMEMORY - - - An unexpected EOF was found when reading from the file. - ER_UNEXPECTED_EOF - - - Too many connections are open. - ER_CON_COUNT_ERROR - - - The server is out of resources, check if MySql or some other process is using all available memory. - ER_OUT_OF_RESOURCES - - - - Given when the connection is unable to successfully connect to host. - - - - The handshake was invalid. - ER_HANDSHAKE_ERROR - - - Access was denied for the specified user using the specified database. - ER_DBACCESS_DENIED_ERROR - - - - Normally returned when an incorrect password is given - - - - No database has been selected. - ER_NO_DB_ERROR - - - The command is unknown. - ER_UNKNOWN_COM_ERROR - - - The specified column cannot be NULL. - ER_BAD_NULL_ERROR - - - The specified database is not known. - - - The specified table already exists. - ER_TABLE_EXISTS_ERROR - - - The specified table is unknown. - ER_BAD_TABLE_ERROR - - - The specified column is ambiguous. - ER_NON_UNIQ_ERROR - - - The server is currently being shutdown. - ER_SERVER_SHUTDOWN - - - The specified columns is unknown. - ER_BAD_FIELD_ERROR - - - The specified column isn't in GROUP BY. - ER_WRONG_FIELD_WITH_GROUP - - - The specified columns cannot be grouped on. - ER_WRONG_GROUP_FIELD - - - There are sum functions and columns in the same statement. - ER_WRONG_SUM_SELECT - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT - - - The identifier name is too long. - ER_TOO_LONG_IDENT - - - The column name is duplicated. - ER_DUP_FIELDNAME - - - - Duplicate Key Name - - - - - Duplicate Key Entry - - - - The column specifier is incorrect. - ER_WRONG_FIELD_SPEC - - - An error occurred when parsing the statement. - ER_PARSE_ERROR - - - The statement is empty. - ER_EMPTY_QUERY - - - The table alias isn't unique. - ER_NONUNIQ_TABLE - - - The default value is invalid for the specified field. - ER_INVALID_DEFAULT - - - The table has multiple primary keys defined. - ER_MULTIPLE_PRI_KEY - - - Too many keys were defined for the table. - ER_TOO_MANY_KEYS - - - Too many parts to the keys were defined for the table. - ER_TOO_MANY_KEY_PARTS - - - The specified key is too long - ER_TOO_LONG_KEY - - - The specified key column doesn't exist in the table. - ER_KEY_COLUMN_DOES_NOT_EXITS - - - The BLOB column was used as a key, this can't be done. - ER_BLOB_USED_AS_KEY - - - The column length is too big for the specified column type. - ER_TOO_BIG_FIELDLENGTH - - - There can only be one auto-column, and it must be defined as a PK. - ER_WRONG_AUTO_KEY - - - The server is ready to accept connections. - ER_READY - - - - ER_NORMAL_SHUTDOWN - - - The server received the specified signal and is aborting. - ER_GOT_SIGNAL - - - The server shutdown is complete. - ER_SHUTDOWN_COMPLETE - - - The server is forcing close of the specified thread. - ER_FORCING_CLOSE - - - An error occurred when creating the IP socket. - ER_IPSOCK_ERROR - - - The table has no index like the one used in CREATE INDEX. - ER_NO_SUCH_INDEX - - - The field separator argument is not what is expected, check the manual. - ER_WRONG_FIELD_TERMINATORS - - - The BLOB columns must terminated, fixed row lengths cannot be used. - ER_BLOBS_AND_NO_TERMINATED - - - The text file cannot be read. - ER_TEXTFILE_NOT_READABLE - - - The specified file already exists. - ER_FILE_EXISTS_ERROR - - - Information returned by the LOAD statement. - ER_LOAD_INFO - - - Information returned by an UPDATE statement. - ER_ALTER_INFO - - - The prefix key is incorrect. - ER_WRONG_SUB_KEY - - - All columns cannot be removed from a table, use DROP TABLE instead. - ER_CANT_REMOVE_ALL_FIELDS - - - Cannot DROP, check that the column or key exists. - ER_CANT_DROP_FIELD_OR_KEY - - - Information returned by an INSERT statement. - ER_INSERT_INFO - - - The target table cannot be specified for update in FROM clause. - ER_UPDATE_TABLE_USED - - - The specified thread ID is unknown. - ER_NO_SUCH_THREAD - - - The thread cannot be killed, the current user is not the owner. - ER_KILL_DENIED_ERROR - - - No tables used in the statement. - ER_NO_TABLES_USED - - - Too many string have been used for the specified column and SET. - ER_TOO_BIG_SET - - - A unique filename couldn't be generated. - ER_NO_UNIQUE_LOGFILE - - - The specified table was locked with a READ lock, and can't be updated. - ER_TABLE_NOT_LOCKED_FOR_WRITE - - - The specified table was not locked with LOCK TABLES. - ER_TABLE_NOT_LOCKED - - - BLOB and Text columns cannot have a default value. - ER_BLOB_CANT_HAVE_DEFAULT - - - The specified database name is incorrect. - ER_WRONG_DB_NAME - - - The specified table name is incorrect. - ER_WRONG_TABLE_NAME - - - The SELECT command would examine more than MAX_JOIN_SIZE rows, check the WHERE clause and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is ok. - ER_TOO_BIG_SELECT - - - An unknown error occurred. - ER_UNKNOWN_ERROR - - - The specified procedure is unknown. - ER_UNKNOWN_PROCEDURE - - - The number of parameters provided for the specified procedure is incorrect. - ER_WRONG_PARAMCOUNT_TO_PROCEDURE - - - The parameters provided for the specified procedure are incorrect. - ER_WRONG_PARAMETERS_TO_PROCEDURE - - - The specified table is unknown. - ER_UNKNOWN_TABLE - - - The specified column has been specified twice. - ER_FIELD_SPECIFIED_TWICE - - - The group function has been incorrectly used. - ER_INVALID_GROUP_FUNC_USE - - - The specified table uses an extension that doesn't exist in this MySQL version. - ER_UNSUPPORTED_EXTENSION - - - The table must have at least one column. - ER_TABLE_MUST_HAVE_COLUMNS - - - The specified table is full. - ER_RECORD_FILE_FULL - - - The specified character set is unknown. - ER_UNKNOWN_CHARACTER_SET - - - Too many tables, MySQL can only use the specified number of tables in a JOIN. - ER_TOO_MANY_TABLES - - - Too many columns - ER_TOO_MANY_FIELDS - - - The row size is too large, the maximum row size for the used tables (not counting BLOBS) is specified, change some columns or BLOBS. - ER_TOO_BIG_ROWSIZE - - - A thread stack overrun occurred. Stack statistics are specified. - ER_STACK_OVERRUN - - - A cross dependency was found in the OUTER JOIN, examine the ON conditions. - ER_WRONG_OUTER_JOIN - - - The table handler doesn't support NULL in the given index, change specified column to be NOT NULL or use another handler. - ER_NULL_COLUMN_IN_INDEX - - - The specified user defined function cannot be loaded. - ER_CANT_FIND_UDF - - - The specified user defined function cannot be initialised. - ER_CANT_INITIALIZE_UDF - - - No paths are allowed for the shared library. - ER_UDF_NO_PATHS - - - The specified user defined function already exists. - ER_UDF_EXISTS - - - The specified shared library cannot be opened. - ER_CANT_OPEN_LIBRARY - - - The specified symbol cannot be found in the library. - ER_CANT_FIND_DL_ENTRY - - - The specified function is not defined. - ER_FUNCTION_NOT_DEFINED - - - The specified host is blocked because of too many connection errors, unblock with 'mysqladmin flush-hosts'. - ER_HOST_IS_BLOCKED - - - - The given host is not allowed to connect - - - - - The anonymous user is not allowed to connect - - - - - The given password is not allowed - - - - - The given password does not match - - - - Information returned by an UPDATE statement. - ER_UPDATE_INFO - - - A new thread couldn't be created. - ER_CANT_CREATE_THREAD - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT_ON_ROW - - - The specified table can't be re-opened. - ER_CANT_REOPEN_TABLE - - - The NULL value has been used incorrectly. - ER_INVALID_USE_OF_NULL - - - The regular expression contains an error. - ER_REGEXP_ERROR - - - GROUP columns (MIN(), MAX(), COUNT(), ...) cannot be mixes with no GROUP columns if there is not GROUP BY clause. - ER_MIX_OF_GROUP_FUNC_AND_FIELDS - - - - ER_NONEXISTING_GRANT - - - - ER_TABLEACCESS_DENIED_ERROR - - - - ER_COLUMNACCESS_DENIED_ERROR - - - - ER_ILLEGAL_GRANT_FOR_TABLE - - - - ER_GRANT_WRONG_HOST_OR_USER - - - - ER_NO_SUCH_TABLE - - - - ER_NONEXISTING_TABLE_GRANT - - - - ER_NOT_ALLOWED_COMMAND - - - - ER_SYNTAX_ERROR - - - - ER_DELAYED_CANT_CHANGE_LOCK - - - - ER_TOO_MANY_DELAYED_THREADS - - - - ER_ABORTING_CONNECTION - - - - An attempt was made to send or receive a packet larger than - max_allowed_packet_size - - - - - ER_NET_READ_ERROR_FROM_PIPE - - - - ER_NET_FCNTL_ERROR - - - - ER_NET_PACKETS_OUT_OF_ORDER - - - - ER_NET_UNCOMPRESS_ERROR - - - - ER_NET_READ_ERROR - - - - ER_NET_READ_INTERRUPTED - - - - ER_NET_ERROR_ON_WRITE - - - - ER_NET_WRITE_INTERRUPTED - - - - ER_TOO_LONG_STRING - - - - ER_TABLE_CANT_HANDLE_BLOB - - - - ER_TABLE_CANT_HANDLE_AUTO_INCREMENT - - - - ER_DELAYED_INSERT_TABLE_LOCKED - - - - ER_WRONG_COLUMN_NAME - - - - ER_WRONG_KEY_COLUMN - - - - ER_WRONG_MRG_TABLE - - - - ER_DUP_UNIQUE - - - - ER_BLOB_KEY_WITHOUT_LENGTH - - - - ER_PRIMARY_CANT_HAVE_NULL - - - - ER_TOO_MANY_ROWS - - - - ER_REQUIRES_PRIMARY_KEY - - - - ER_NO_RAID_COMPILED - - - - ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE - - - - ER_KEY_DOES_NOT_EXITS - - - - ER_CHECK_NO_SUCH_TABLE - - - - ER_CHECK_NOT_IMPLEMENTED - - - - ER_CANT_DO_THIS_DURING_AN_TRANSACTION - - - - ER_ERROR_DURING_COMMIT - - - - ER_ERROR_DURING_ROLLBACK - - - - ER_ERROR_DURING_FLUSH_LOGS - - - - ER_ERROR_DURING_CHECKPOINT - - - - ER_NEW_ABORTING_CONNECTION - - - - ER_DUMP_NOT_IMPLEMENTED - - - - ER_FLUSH_SOURCE_BINLOG_CLOSED - - - - ER_INDEX_REBUILD - - - - ER_SOURCE - - - - ER_SOURCE_NET_READ - - - - ER_SOURCE_NET_WRITE - - - - ER_FT_MATCHING_KEY_NOT_FOUND - - - - ER_LOCK_OR_ACTIVE_TRANSACTION - - - - ER_UNKNOWN_SYSTEM_VARIABLE - - - - ER_CRASHED_ON_USAGE - - - - ER_CRASHED_ON_REPAIR - - - - ER_WARNING_NOT_COMPLETE_ROLLBACK - - - - ER_TRANS_CACHE_FULL - - - - ER_REPLICA_MUST_STOP - - - - ER_REPLICA_NOT_RUNNING - - - - ER_BAD_REPLICA - - - - ER_SOURCE_INFO - - - - ER_REPLICA_THREAD - - - - ER_TOO_MANY_USER_CONNECTIONS - - - - ER_SET_CONSTANTS_ONLY - - - - ER_LOCK_WAIT_TIMEOUT - - - - ER_LOCK_TABLE_FULL - - - - ER_READ_ONLY_TRANSACTION - - - - ER_DROP_DB_WITH_READ_LOCK - - - - ER_CREATE_DB_WITH_READ_LOCK - - - - ER_WRONG_ARGUMENTS - - - - ER_NO_PERMISSION_TO_CREATE_USER - - - - ER_UNION_TABLES_IN_DIFFERENT_DIR - - - - ER_LOCK_DEADLOCK - - - - ER_TABLE_CANT_HANDLE_FT - - - - ER_CANNOT_ADD_FOREIGN - - - - ER_NO_REFERENCED_ROW - - - - ER_ROW_IS_REFERENCED - - - - ER_CONNECT_TO_SOURCE - - - - ER_QUERY_ON_SOURCE - - - - ER_ERROR_WHEN_EXECUTING_COMMAND - - - - ER_WRONG_USAGE - - - - ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT - - - - ER_CANT_UPDATE_WITH_READLOCK - - - - ER_MIXING_NOT_ALLOWED - - - - ER_DUP_ARGUMENT - - - - ER_USER_LIMIT_REACHED - - - - ER_SPECIFIC_ACCESS_DENIED_ERROR - - - - ER_LOCAL_VARIABLE - - - - ER_GLOBAL_VARIABLE - - - - ER_NO_DEFAULT - - - - ER_WRONG_VALUE_FOR_VAR - - - - ER_WRONG_TYPE_FOR_VAR - - - - ER_VAR_CANT_BE_READ - - - - ER_CANT_USE_OPTION_HERE - - - - ER_NOT_SUPPORTED_YET - - - - ER_SOURCE_FATAL_ERROR_READING_BINLOG - - - - ER_REPLICA_IGNORED_TABLE - - - - ER_INCORRECT_GLOBAL_LOCAL_VAR - - - - ER_WRONG_FK_DEF - - - - ER_KEY_REF_DO_NOT_MATCH_TABLE_REF - - - - ER_OPERAND_COLUMNS - - - - ER_SUBQUERY_NO_1_ROW - - - - ER_UNKNOWN_STMT_HANDLER - - - - ER_CORRUPT_HELP_DB - - - - ER_CYCLIC_REFERENCE - - - - ER_AUTO_CONVERT - - - - ER_ILLEGAL_REFERENCE - - - - ER_DERIVED_MUST_HAVE_ALIAS - - - - ER_SELECT_REDUCED - - - - ER_TABLENAME_NOT_ALLOWED_HERE - - - - ER_NOT_SUPPORTED_AUTH_MODE - - - - ER_SPATIAL_CANT_HAVE_NULL - - - - ER_COLLATION_CHARSET_MISMATCH - - - - ER_REPLICA_WAS_RUNNING - - - - ER_REPLICA_WAS_NOT_RUNNING - - - - ER_TOO_BIG_FOR_UNCOMPRESS - - - - ER_ZLIB_Z_MEM_ERROR - - - - ER_ZLIB_Z_BUF_ERROR - - - - ER_ZLIB_Z_DATA_ERROR - - - - ER_CUT_VALUE_GROUP_CONCAT - - - - ER_WARN_TOO_FEW_RECORDS - - - - ER_WARN_TOO_MANY_RECORDS - - - - ER_WARN_NULL_TO_NOTNULL - - - - ER_WARN_DATA_OUT_OF_RANGE - - - - WARN_DATA_TRUNCATED - - - - ER_WARN_USING_OTHER_HANDLER - - - - ER_CANT_AGGREGATE_2COLLATIONS - - - - ER_DROP_USER - - - - ER_REVOKE_GRANTS - - - - ER_CANT_AGGREGATE_3COLLATIONS - - - - ER_CANT_AGGREGATE_NCOLLATIONS - - - - ER_VARIABLE_IS_NOT_STRUCT - - - - ER_UNKNOWN_COLLATION - - - - ER_REPLICA_IGNORED_SSL_PARAMS - - - - ER_SERVER_IS_IN_SECURE_AUTH_MODE - - - - ER_WARN_FIELD_RESOLVED - - - - ER_BAD_REPLICA_UNTIL_COND - - - - ER_MISSING_SKIP_REPLICA - - - - ER_UNTIL_COND_IGNORED - - - - ER_WRONG_NAME_FOR_INDEX - - - - ER_WRONG_NAME_FOR_CATALOG - - - - ER_WARN_QC_RESIZE - - - - ER_BAD_FT_COLUMN - - - - ER_UNKNOWN_KEY_CACHE - - - - ER_WARN_HOSTNAME_WONT_WORK - - - - ER_UNKNOWN_STORAGE_ENGINE - - - - ER_WARN_DEPRECATED_SYNTAX - - - - ER_NON_UPDATABLE_TABLE - - - - ER_FEATURE_DISABLED - - - - ER_OPTION_PREVENTS_STATEMENT - - - - ER_DUPLICATED_VALUE_IN_TYPE - - - - ER_TRUNCATED_WRONG_VALUE - - - - ER_TOO_MUCH_AUTO_TIMESTAMP_COLS - - - - ER_INVALID_ON_UPDATE - - - - ER_UNSUPPORTED_PS - - - - ER_GET_ERRMSG - - - - ER_GET_TEMPORARY_ERRMSG - - - - ER_UNKNOWN_TIME_ZONE - - - - ER_WARN_INVALID_TIMESTAMP - - - - ER_INVALID_CHARACTER_STRING - - - - ER_WARN_ALLOWED_PACKET_OVERFLOWED - - - - ER_CONFLICTING_DECLARATIONS - - - - ER_SP_NO_RECURSIVE_CREATE - - - - ER_SP_ALREADY_EXISTS - - - - ER_SP_DOES_NOT_EXIST - - - - ER_SP_DROP_FAILED - - - - ER_SP_STORE_FAILED - - - - ER_SP_LILABEL_MISMATCH - - - - ER_SP_LABEL_REDEFINE - - - - ER_SP_LABEL_MISMATCH - - - - ER_SP_UNINIT_VAR - - - - ER_SP_BADSELECT - - - - ER_SP_BADRETURN - - - - ER_SP_BADSTATEMENT - - - - ER_UPDATE_LOG_DEPRECATED_IGNORED - - - - ER_UPDATE_LOG_DEPRECATED_TRANSLATED - - - - ER_QUERY_INTERRUPTED - - - - ER_SP_WRONG_NO_OF_ARGS - - - - ER_SP_COND_MISMATCH - - - - ER_SP_NORETURN - - - - ER_SP_NORETURNEND - - - - ER_SP_BAD_CURSOR_QUERY - - - - ER_SP_BAD_CURSOR_SELECT - - - - ER_SP_CURSOR_MISMATCH - - - - ER_SP_CURSOR_ALREADY_OPEN - - - - ER_SP_CURSOR_NOT_OPEN - - - - ER_SP_UNDECLARED_VAR - - - - ER_SP_WRONG_NO_OF_FETCH_ARGS - - - - ER_SP_FETCH_NO_DATA - - - - ER_SP_DUP_PARAM - - - - ER_SP_DUP_VAR - - - - ER_SP_DUP_COND - - - - ER_SP_DUP_CURS - - - - ER_SP_CANT_ALTER - - - - ER_SP_SUBSELECT_NYI - - - - ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_SP_VARCOND_AFTER_CURSHNDLR - - - - ER_SP_CURSOR_AFTER_HANDLER - - - - ER_SP_CASE_NOT_FOUND - - - - ER_FPARSER_TOO_BIG_FILE - - - - ER_FPARSER_BAD_HEADER - - - - ER_FPARSER_EOF_IN_COMMENT - - - - ER_FPARSER_ERROR_IN_PARAMETER - - - - ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER - - - - ER_VIEW_NO_EXPLAIN - - - - ER_FRM_UNKNOWN_TYPE - - - - ER_WRONG_OBJECT - - - - ER_NONUPDATEABLE_COLUMN - - - - ER_VIEW_SELECT_DERIVED - - - - ER_VIEW_SELECT_CLAUSE - - - - ER_VIEW_SELECT_VARIABLE - - - - ER_VIEW_SELECT_TMPTABLE - - - - ER_VIEW_WRONG_LIST - - - - ER_WARN_VIEW_MERGE - - - - ER_WARN_VIEW_WITHOUT_KEY - - - - ER_VIEW_INVALID - - - - ER_SP_NO_DROP_SP - - - - ER_SP_GOTO_IN_HNDLR - - - - ER_TRG_ALREADY_EXISTS - - - - ER_TRG_DOES_NOT_EXIST - - - - ER_TRG_ON_VIEW_OR_TEMP_TABLE - - - - ER_TRG_CANT_CHANGE_ROW - - - - ER_TRG_NO_SUCH_ROW_IN_TRG - - - - ER_NO_DEFAULT_FOR_FIELD - - - - ER_DIVISION_BY_ZERO - - - - ER_TRUNCATED_WRONG_VALUE_FOR_FIELD - - - - ER_ILLEGAL_VALUE_FOR_TYPE - - - - ER_VIEW_NONUPD_CHECK - - - - ER_VIEW_CHECK_FAILED - - - - ER_PROCACCESS_DENIED_ERROR - - - - ER_RELAY_LOG_FAIL - - - - ER_PASSWD_LENGTH - - - - ER_UNKNOWN_TARGET_BINLOG - - - - ER_IO_ERR_LOG_INDEX_READ - - - - ER_BINLOG_PURGE_PROHIBITED - - - - ER_FSEEK_FAIL - - - - ER_BINLOG_PURGE_FATAL_ERR - - - - ER_LOG_IN_USE - - - - ER_LOG_PURGE_UNKNOWN_ERR - - - - ER_RELAY_LOG_INIT - - - - ER_NO_BINARY_LOGGING - - - - ER_RESERVED_SYNTAX - - - - ER_WSAS_FAILED - - - - ER_DIFF_GROUPS_PROC - - - - ER_NO_GROUP_FOR_PROC - - - - ER_ORDER_WITH_PROC - - - - ER_LOGGING_PROHIBIT_CHANGING_OF - - - - ER_NO_FILE_MAPPING - - - - ER_WRONG_MAGIC - - - - ER_PS_MANY_PARAM - - - - ER_KEY_PART_0 - - - - ER_VIEW_CHECKSUM - - - - ER_VIEW_MULTIUPDATE - - - - ER_VIEW_NO_INSERT_FIELD_LIST - - - - ER_VIEW_DELETE_MERGE_VIEW - - - - ER_CANNOT_USER - - - - ER_XAER_NOTA - - - - ER_XAER_INVAL - - - - ER_XAER_RMFAIL - - - - ER_XAER_OUTSIDE - - - - ER_XAER_RMERR - - - - ER_XA_RBROLLBACK - - - - ER_NONEXISTING_PROC_GRANT - - - - ER_PROC_AUTO_GRANT_FAIL - - - - ER_PROC_AUTO_REVOKE_FAIL - - - - ER_DATA_TOO_LONG - - - - ER_SP_BAD_SQLSTATE - - - - ER_STARTUP - - - - ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR - - - - ER_CANT_CREATE_USER_WITH_GRANT - - - - ER_WRONG_VALUE_FOR_TYPE - - - - ER_TABLE_DEF_CHANGED - - - - ER_SP_DUP_HANDLER - - - - ER_SP_NOT_VAR_ARG - - - - ER_SP_NO_RETSET - - - - ER_CANT_CREATE_GEOMETRY_OBJECT - - - - ER_FAILED_ROUTINE_BREAK_BINLOG - - - - ER_BINLOG_UNSAFE_ROUTINE - - - - ER_BINLOG_CREATE_ROUTINE_NEED_SUPER - - - - ER_EXEC_STMT_WITH_OPEN_CURSOR - - - - ER_STMT_HAS_NO_OPEN_CURSOR - - - - ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_NO_DEFAULT_FOR_VIEW_FIELD - - - - ER_SP_NO_RECURSION - - - - ER_TOO_BIG_SCALE - - - - ER_TOO_BIG_PRECISION - - - - ER_M_BIGGER_THAN_D - - - - ER_WRONG_LOCK_OF_SYSTEM_TABLE - - - - ER_CONNECT_TO_FOREIGN_DATA_SOURCE - - - - ER_QUERY_ON_FOREIGN_DATA_SOURCE - - - - ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST - - - - ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE - - - - ER_FOREIGN_DATA_STRING_INVALID - - - - ER_CANT_CREATE_FEDERATED_TABLE - - - - ER_TRG_IN_WRONG_SCHEMA - - - - ER_STACK_OVERRUN_NEED_MORE - - - - ER_TOO_LONG_BODY - - - - ER_WARN_CANT_DROP_DEFAULT_KEYCACHE - - - - ER_TOO_BIG_DISPLAYWIDTH - - - - ER_XAER_DUPID - - - - ER_DATETIME_FUNCTION_OVERFLOW - - - - ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG - - - - ER_VIEW_PREVENT_UPDATE - - - - ER_PS_NO_RECURSION - - - - ER_SP_CANT_SET_AUTOCOMMIT - - - - ER_MALFORMED_DEFINER - - - - ER_VIEW_FRM_NO_USER - - - - ER_VIEW_OTHER_USER - - - - ER_NO_SUCH_USER - - - - ER_FORBID_SCHEMA_CHANGE - - - - ER_ROW_IS_REFERENCED_2 - - - - ER_NO_REFERENCED_ROW_2 - - - - ER_SP_BAD_VAR_SHADOW - - - - ER_TRG_NO_DEFINER - - - - ER_OLD_FILE_FORMAT - - - - ER_SP_RECURSION_LIMIT - - - - ER_SP_PROC_TABLE_CORRUPT - - - - ER_SP_WRONG_NAME - - - - ER_TABLE_NEEDS_UPGRADE - - - - ER_SP_NO_AGGREGATE - - - - ER_MAX_PREPARED_STMT_COUNT_REACHED - - - - ER_VIEW_RECURSIVE - - - - ER_NON_GROUPING_FIELD_USED - - - - ER_TABLE_CANT_HANDLE_SPKEYS - - - - ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA - - - - ER_REMOVED_SPACES - - - - ER_AUTOINC_READ_FAILED - - - - ER_USERNAME - - - - ER_HOSTNAME - - - - ER_WRONG_STRING_LENGTH - - - - ER_NON_INSERTABLE_TABLE - - - - ER_ADMIN_WRONG_MRG_TABLE - - - - ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT - - - - ER_NAME_BECOMES_EMPTY - - - - ER_AMBIGUOUS_FIELD_TERM - - - - ER_FOREIGN_SERVER_EXISTS - - - - ER_FOREIGN_SERVER_DOESNT_EXIST - - - - ER_ILLEGAL_HA_CREATE_OPTION - - - - ER_PARTITION_REQUIRES_VALUES_ERROR - - - - ER_PARTITION_WRONG_VALUES_ERROR - - - - ER_PARTITION_MAXVALUE_ERROR - - - - ER_PARTITION_SUBPARTITION_ERROR - - - - ER_PARTITION_SUBPART_MIX_ERROR - - - - ER_PARTITION_WRONG_NO_PART_ERROR - - - - ER_PARTITION_WRONG_NO_SUBPART_ERROR - - - - ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR - - - - ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR - - - - ER_FIELD_NOT_FOUND_PART_ERROR - - - - ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR - - - - ER_INCONSISTENT_PARTITION_INFO_ERROR - - - - ER_PARTITION_FUNC_NOT_ALLOWED_ERROR - - - - ER_PARTITIONS_MUST_BE_DEFINED_ERROR - - - - ER_RANGE_NOT_INCREASING_ERROR - - - - ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR - - - - ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR - - - - ER_PARTITION_ENTRY_ERROR - - - - ER_MIX_HANDLER_ERROR - - - - ER_PARTITION_NOT_DEFINED_ERROR - - - - ER_TOO_MANY_PARTITIONS_ERROR - - - - ER_SUBPARTITION_ERROR - - - - ER_CANT_CREATE_HANDLER_FILE - - - - ER_BLOB_FIELD_IN_PART_FUNC_ERROR - - - - ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF - - - - ER_NO_PARTS_ERROR - - - - ER_PARTITION_MGMT_ON_NONPARTITIONED - - - - ER_FOREIGN_KEY_ON_PARTITIONED - - - - ER_DROP_PARTITION_NON_EXISTENT - - - - ER_DROP_LAST_PARTITION - - - - ER_COALESCE_ONLY_ON_HASH_PARTITION - - - - ER_REORG_HASH_ONLY_ON_SAME_NO - - - - ER_REORG_NO_PARAM_ERROR - - - - ER_ONLY_ON_RANGE_LIST_PARTITION - - - - ER_ADD_PARTITION_SUBPART_ERROR - - - - ER_ADD_PARTITION_NO_NEW_PARTITION - - - - ER_COALESCE_PARTITION_NO_PARTITION - - - - ER_REORG_PARTITION_NOT_EXIST - - - - ER_SAME_NAME_PARTITION - - - - ER_NO_BINLOG_ERROR - - - - ER_CONSECUTIVE_REORG_PARTITIONS - - - - ER_REORG_OUTSIDE_RANGE - - - - ER_PARTITION_FUNCTION_FAILURE - - - - ER_PART_STATE_ERROR - - - - ER_LIMITED_PART_RANGE - - - - ER_PLUGIN_IS_NOT_LOADED - - - - ER_WRONG_VALUE - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE - - - - ER_FILEGROUP_OPTION_ONLY_ONCE - - - - ER_CREATE_FILEGROUP_FAILED - - - - ER_DROP_FILEGROUP_FAILED - - - - ER_TABLESPACE_AUTO_EXTEND_ERROR - - - - ER_WRONG_SIZE_NUMBER - - - - ER_SIZE_OVERFLOW_ERROR - - - - ER_ALTER_FILEGROUP_FAILED - - - - ER_BINLOG_ROW_LOGGING_FAILED - - - - ER_BINLOG_ROW_WRONG_TABLE_DEF - - - - ER_BINLOG_ROW_RBR_TO_SBR - - - - ER_EVENT_ALREADY_EXISTS - - - - ER_EVENT_STORE_FAILED - - - - ER_EVENT_DOES_NOT_EXIST - - - - ER_EVENT_CANT_ALTER - - - - ER_EVENT_DROP_FAILED - - - - ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG - - - - ER_EVENT_ENDS_BEFORE_STARTS - - - - ER_EVENT_EXEC_TIME_IN_THE_PAST - - - - ER_EVENT_OPEN_TABLE_FAILED - - - - ER_EVENT_NEITHER_M_EXPR_NOR_M_AT - - - - ER_COL_COUNT_DOESNT_MATCH_CORRUPTED - - - - ER_CANNOT_LOAD_FROM_TABLE - - - - ER_EVENT_CANNOT_DELETE - - - - ER_EVENT_COMPILE_ERROR - - - - ER_EVENT_SAME_NAME - - - - ER_EVENT_DATA_TOO_LONG - - - - ER_DROP_INDEX_FK - - - - ER_WARN_DEPRECATED_SYNTAX_WITH_VER - - - - ER_CANT_WRITE_LOCK_LOG_TABLE - - - - ER_CANT_LOCK_LOG_TABLE - - - - ER_FOREIGN_DUPLICATE_KEY - - - - ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE - - - - ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR - - - - ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT - - - - ER_NDB_CANT_SWITCH_BINLOG_FORMAT - - - - ER_PARTITION_NO_TEMPORARY - - - - ER_PARTITION_CONST_DOMAIN_ERROR - - - - ER_PARTITION_FUNCTION_IS_NOT_ALLOWED - - - - ER_DDL_LOG_ERROR - - - - ER_NULL_IN_VALUES_LESS_THAN - - - - ER_WRONG_PARTITION_NAME - - - - ER_CANT_CHANGE_TRANSACTION_ISOLATION - - - - ER_DUP_ENTRY_AUTOINCREMENT_CASE - - - - ER_EVENT_MODIFY_QUEUE_ERROR - - - - ER_EVENT_SET_VAR_ERROR - - - - ER_PARTITION_MERGE_ERROR - - - - ER_CANT_ACTIVATE_LOG - - - - ER_RBR_NOT_AVAILABLE - - - - ER_BASE64_DECODE_ERROR - - - - ER_EVENT_RECURSION_FORBIDDEN - - - - ER_EVENTS_DB_ERROR - - - - ER_ONLY_INTEGERS_ALLOWED - - - - ER_UNSUPORTED_LOG_ENGINE - - - - ER_BAD_LOG_STATEMENT - - - - ER_CANT_RENAME_LOG_TABLE - - - - ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_STORED_FCT - - - - ER_NATIVE_FCT_NAME_COLLISION - - - - ER_DUP_ENTRY_WITH_KEY_NAME - - - - ER_BINLOG_PURGE_EMFILE - - - - ER_EVENT_CANNOT_CREATE_IN_THE_PAST - - - - ER_EVENT_CANNOT_ALTER_IN_THE_PAST - - - - ER_REPLICA_INCIDENT - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT - - - - ER_BINLOG_UNSAFE_STATEMENT - - - - ER_REPLICA_FATAL_ERROR - - - - ER_REPLICA_RELAY_LOG_READ_FAILURE - - - - ER_REPLICA_RELAY_LOG_WRITE_FAILURE - - - - ER_REPLICA_CREATE_EVENT_FAILURE - - - - ER_REPLICA_SOURCE_COM_FAILURE - - - - ER_BINLOG_LOGGING_IMPOSSIBLE - - - - ER_VIEW_NO_CREATION_CTX - - - - ER_VIEW_INVALID_CREATION_CTX - - - - ER_SR_INVALID_CREATION_CTX - - - - ER_TRG_CORRUPTED_FILE - - - - ER_TRG_NO_CREATION_CTX - - - - ER_TRG_INVALID_CREATION_CTX - - - - ER_EVENT_INVALID_CREATION_CTX - - - - ER_TRG_CANT_OPEN_TABLE - - - - ER_CANT_CREATE_SROUTINE - - - - ER_REPLICA_AMBIGOUS_EXEC_MODE - - - - ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT - - - - ER_REPLICA_CORRUPT_EVENT - - - - ER_LOAD_DATA_INVALID_COLUMN - - - - ER_LOG_PURGE_NO_FILE - - - - ER_XA_RBTIMEOUT - - - - ER_XA_RBDEADLOCK - - - - ER_NEED_REPREPARE - - - - ER_DELAYED_NOT_SUPPORTED - - - - WARN_NO_SOURCE_INFO - - - - WARN_OPTION_IGNORED - - - - WARN_PLUGIN_DELETE_BUILTIN - - - - WARN_PLUGIN_BUSY - - - - ER_VARIABLE_IS_READONLY - - - - ER_WARN_ENGINE_TRANSACTION_ROLLBACK - - - - ER_REPLICA_HEARTBEAT_FAILURE - - - - ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE - - - - ER_NDB_REPLICATION_SCHEMA_ERROR - - - - ER_CONFLICT_FN_PARSE_ERROR - - - - ER_EXCEPTIONS_WRITE_ERROR - - - - ER_TOO_LONG_TABLE_COMMENT - - - - ER_TOO_LONG_FIELD_COMMENT - - - - ER_FUNC_INEXISTENT_NAME_COLLISION - - - - ER_DATABASE_NAME - - - - ER_TABLE_NAME - - - - ER_PARTITION_NAME - - - - ER_SUBPARTITION_NAME - - - - ER_TEMPORARY_NAME - - - - ER_RENAMED_NAME - - - - ER_TOO_MANY_CONCURRENT_TRXS - - - - WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED - - - - ER_DEBUG_SYNC_TIMEOUT - - - - ER_DEBUG_SYNC_HIT_LIMIT - - - - ER_ERROR_LAST - - - - ER_CLIENT_INTERACTION_TIMEOUT - - - - WriteInteger - - - - - - - Summary description for MySqlPool. - - - - - It is assumed that this property will only be used from inside an active - lock. - - - - - Indicates whether this pool is being cleared. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - Removes a connection from the in use pool. The only situations where this method - would be called are when a connection that is in use gets some type of fatal exception - or when the connection is being returned to the pool and it's too old to be - returned. - - - - - - Clears this pool of all idle connections and marks this pool and being cleared - so all other connections are closed when they are returned. - - - - - Remove expired drivers from the idle pool - - - - Closing driver is a potentially lengthy operation involving network - IO. Therefore we do not close expired drivers while holding - idlePool.SyncRoot lock. We just remove the old drivers from the idle - queue and return them to the caller. The caller will need to close - them (or let GC close them) - - - - - Summary description for MySqlPoolManager. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove drivers that have been idle for too long. - - - - - Remove hosts that have been on the demoted list for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Provides a class capable of executing a SQL script containing - multiple SQL statements including CREATE PROCEDURE statements - that require changing the delimiter - - - - - Handles the event raised whenever a statement is executed. - - - - - Handles the event raised whenever an error is raised by the execution of a script. - - - - - Handles the event raised whenever a script execution is finished. - - - - - Initializes a new instance of the - class. - - - - - Initializes a new instance of the - class. - - The connection. - - - - Initializes a new instance of the - class. - - The query. - - - - Initializes a new instance of the - class. - - The connection. - The query. - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the query. - - The query. - - - - Gets or sets the delimiter. - - The delimiter. - - - - Executes this instance. - - The number of statements executed as part of the script. - - - - Initiates the asynchronous execution of SQL statements. - - The number of statements executed as part of the script inside. - - - - Initiates the asynchronous execution of SQL statements. - - The cancellation token. - The number of statements executed as part of the script inside. - - - - Represents the method that will handle errors when executing MySQL statements. - - - - - Represents the method that will handle errors when executing MySQL scripts. - - - - - Sets the arguments associated to MySQL scripts. - - - - - Gets the statement text. - - The statement text. - - - - Gets the line. - - The line. - - - - Gets the position. - - The position. - - - - Sets the arguments associated to MySQL script errors. - - - - - Initializes a new instance of the class. - - The exception. - - - - Gets the exception. - - The exception. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignore; otherwise, false. - - - - Summary description for MySqlStream. - - - - - ReadPacket is called by NativeDriver to start reading the next - packet on the stream. - - - - - Reads the specified number of bytes from the stream and stores them at given - offset in the buffer. - Throws EndOfStreamException if not all bytes can be read. - - Stream to read from - Array to store bytes read from the stream - The offset in buffer at which to begin storing the data read from the current stream. - Number of bytes to read - - - - LoadPacket loads up and decodes the header of the incoming packet. - - - - - Traces information about the client execution. - - - - - Gets the list of trace listeners. - - - - - Gets or sets the switch to control tracing and debugging. - - - - - Gets or sets a flag indicating if query analysis is enabled. - - - - - Enables query analysis. - - The host on which to enable query analysis. - The interval of time for logging trace information. - - - - Disables query analysis. - - - - - Specifies the types of warning flags. - - - - - No index exists. - - - - - Bad index exists. - - - - - Rows have been excluded from the result. - - - - - Columns have been excluded from the result. - - - - - Type conversions took place. - - - - - Specifies the event that triggered the trace. - - - - - A connection has been opened. - - - - - A connection has been closed. - - - - - A query has been executed. - - - - - Data has been retrieved from the resultset. - - - - - Data retrieval has ended. - - - - - Query execution has ended. - - - - - The statement to be executed has been created. - - - - - The statement has been executed. - - - - - The statement is no longer required. - - - - - The query provided is of a nonquery type. - - - - - Usage advisor warnings have been requested. - - - - - Noncritical problem. - - - - - An error has been raised during data retrieval. - - - - - The query has been normalized. - - - - - Summary description for Driver. - - - - - Sets the current database for the this connection - - - - - - Return the appropriate set of connection flags for our - server capabilities and our user requested options. - - - - - Query is the method that is called to send all queries to the server - - - - - Verify that the file to upload is in a valid directory - according to the safe path entered by a user under - "AllowLoadLocalInfileInPath" connection option. - - File to validate against the safe path. - - - - Sends the specified file to the server. - This supports the LOAD DATA LOCAL INFILE - - - - - - FetchDataRow is the method that the data reader calls to see if there is another - row to fetch. In the non-prepared mode, it will simply read the next data packet. - In the prepared mode (statementId > 0), it will - - - - - Execution timeout, in milliseconds. When the accumulated time for network IO exceeds this value - TimeoutException is thrown. This timeout needs to be reset for every new command - - - - - - Summary description for PreparedStatement. - - - - - Prepares CommandText for use with the Prepare method - - Command text stripped of all paramter names - - Takes the output of TokenizeSql and creates a single string of SQL - that only contains '?' markers for each parameter. It also creates - the parameterMap array list that includes all the paramter names in the - order they appeared in the SQL - - - - - Defines a replication configurarion element in the configuration file. - - - - - Gets a collection of objects representing the server groups. - - - - - Defines a replication server group in the configuration file. - - - - - Gets or sets the name of the replication server group configuration. - - - - - Gets or sets the group type of the replication server group configuration. - - - - - Gets or sets the number of seconds to wait for retry. - - - - - Gets a collection of objects representing the - server configurations associated to this group configuration. - - - - - Defines a replication server in configuration file. - - - - - Gets or sets the name of the replication server configuration. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets the connection string associated to this replication server. - - - - - Manager for Replication and Load Balancing features - - - - - Returns Replication Server Group List - - - - - Adds a Default Server Group to the list - - Group name - Time between reconnections for failed servers - Replication Server Group added - - - - Adds a Server Group to the list - - Group name - ServerGroup type reference - Time between reconnections for failed servers - Server Group added - - - - Gets the next server from a replication group - - Group name - True if the server to return must be a source - Replication Server defined by the Load Balancing plugin - - - - Gets a Server Group by name - - Group name - Server Group if found, otherwise throws an MySqlException - - - - Validates if the replication group name exists - - Group name to validate - true if the replication group name is found; otherwise, false - - - - Assigns a new server driver to the connection object - - Group name - True if the server connection to assign must be a source - MySqlConnection object where the new driver will be assigned - - - - Class that implements Round Robing Load Balancing technique. - - - - - Gets an available server based on Round Robin load balancing. - - Flag indicating if the server to return must be a source. - A object representing the next available server. - - - - Represents a server in a Replication environment. - - - - - Gets the server name. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets the connection string used to connect to the server. - - - - - Gets a flag indicating if the server is available to be considered in load balancing. - - - - - Base class used to implement load balancing features. - - - - - List of servers available for replication. - - - - The group name. - The number of seconds to perform a retry. - - - - Gets the group name. - - - - - Gets the retry time between connections to failed servers. - - - - - Gets the server list in the group. - - - - - Adds a server into the group. - - The server name. - A flag indicating if the server to add is source or replica. - The connection string used by this server. - A object representing the recently added object. - - - - Removes a server from the group. - - The server name. - - - - Gets a server by name. - - The server name. - The replication server. - - - - Must be implemented. Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - Currently not being used. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Handles a failed connection to a server. - - The failed server. - This method can be overrided to implement a custom failover handling. - - - - Handles a failed connection to a server. - - The failed server. - The exception that caused the failover. - - - - return the ordinal for the given column name - - - - - - - Retrieve the value as the given column index - - The column value to retrieve - The value as the given column - - - - Closes the current resultset, dumping any data still on the wire - - - - - Loads the column metadata for the current resultset - - - - - Represents a schema and its contents. - - - - - Gets or sets the name of the schema. - - - - - Gets the list of columns in the schema. - - - - - Gets the list of rows in the schema. - - - - - Represents a row within a schema. - - - - - Represents a column within a schema. - - - - - The name of the column. - - - - - The type of the column. - - - - - GetForeignKeysOnTable retrieves the foreign keys on the given table. - Since MySQL supports foreign keys on versions prior to 5.0, we can't use - information schema. MySQL also does not include any type of SHOW command - for foreign keys so we have to resort to use SHOW CREATE TABLE and parsing - the output. - - The table to store the key info in. - The table to get the foeign key info for. - Only get foreign keys that match this name. - Should column information be included in the table. - - - - Builds the initial part of the COM_QUERY packet - - Collection of parameters - Collection of attributes - A - - - - Serializes the given parameter to the given memory stream - - - This method is called by PrepareSqlBuffers to convert the given - parameter to bytes and write those bytes to the given memory stream. - - - True if the parameter was successfully serialized, false otherwise. - - - - Summary description for StoredProcedure. - - - - - Defines the basic operations to be performed on the table cache. - - - - - The maximum age allowed for cache entries. - - - - - Adds the given command and result set to the cache. - - The command to store in the cache. - The resultset associated to the stored command. - - - - Retrieves the specified command from the cache. - - The command to retrieve. - The allowed age for the cache entry. - - - - - Removes the specified command from the cache. - - The command to remove from the cache. - - - - Clears the cache. - - - - - Removes cache entries older than the value defined by . - - - - - Stream that supports timeout of IO operations. - This class is used is used to support timeouts for SQL command, where a - typical operation involves several network reads/writes. - Timeout here is defined as the accumulated duration of all IO operations. - - - - - Construct a TimedStream - - Undelying stream - - - - Figure out whether it is necessary to reset timeout on stream. - We track the current value of timeout and try to avoid - changing it too often, because setting Read/WriteTimeout property - on network stream maybe a slow operation that involves a system call - (setsockopt). Therefore, we allow a small difference, and do not - reset timeout if current value is slightly greater than the requested - one (within 0.1 second). - - - - - Common handler for IO exceptions. - Resets timeout to infinity if timeout exception is - detected and stops the times. - - original exception - - - - Represents a SQL transaction to be made in a MySQL database. This class cannot be inherited. - - The application creates a MySqlTransaction object by calling - on the object. All subsequent operations associated with the - transaction (for example, committing or aborting the transaction), are performed on the - MySqlTransaction object. - - The following example creates a and a MySqlTransaction. - It also demonstrates how to use the , - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub 'RunTransaction - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Gets the object associated with the transaction, or a null reference (Nothing in Visual Basic) if the transaction is no longer valid. - - The object associated with this transaction. - - A single application may have multiple database connections, each - with zero or more transactions. This property enables you to - determine the connection object associated with a particular - transaction created by . - - - - - Specifies the for this transaction. - - - The for this transaction. The default is ReadCommitted. - - - Parallel transactions are not supported. Therefore, the IsolationLevel - applies to the entire transaction. - - - - - Commits the database transaction. - - The Commit method is equivalent to the MySQL SQL statement - COMMIT. - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Rolls back a transaction from a pending state. - - The Rollback method is equivalent to the MySQL statement ROLLBACK. - The transaction can only be rolled back from a pending state - (after BeginTransaction has been called, but before Commit is - called). - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Defines the type of the column. - - - - - GSS API constants - - - - - GSS_C_NT_HOSTBASED_SERVICE (1.2.840.113554.1.2.1.4) - - - - - GSS_KRB5_NT_PRINCIPAL_NAME (1.2.840.113554.1.2.2.1) - - - - - GSS_C_NT_USER_NAME (1.2.840.113554.1.2.1.1) - - - - - GSS_KRB5_MECH_OID_DESC (1.2.840.113554.1.2.2) - - - - - GSS_KRB5_MECH_OID_DESC Set - - - - - Defines a security context - - - - - Sets the main properties to create and initiate a security context. - - Service Principal Name. - Credentials. - Requested flags. - - - - Initiate the security context - - Challenge received by the server. - A byte array containing the response to be sent to the server - - - - Unwrap a message. - - Message acquired from the server. - Unwrapped message. - - - - Wrap a message. - - Message to be wrapped. - A byte array containing the wrapped message. - - - - Allocate a clr byte array and copy the token data over - - Buffer. - A byte array - - - - Cleanups unmanaged resources - - - - - No flags provided - - - - - Delegates credentials to a remote peer. Do not delegate the credentials if the value is false. - - - - - Requests that the peer authenticate itself. If false, authenticate to the remote peer only. - - - - - Enables replay detection for messages protected with gss_wrap(3GSS) or gss_get_mic(3GSS). Do not attempt to detect replayed messages if false. - - - - - Enables detection of out-of-sequence protected messages. Do not attempt to detect out-of-sequence messages if false. - - - - - Requests that confidential service be made available by means of gss_wrap(3GSS). If false, no per-message confidential service is required. - - - - - Requests that integrity service be made available by means of gss_wrap(3GSS) or gss_get_mic(3GSS). If false, no per-message integrity service is required. - - - - - Does not reveal the initiator's identify to the acceptor. Otherwise, authenticate normally. - - - - - (Returned only) If true, the protection services specified by the states of GSS_C_CONF_FLAG and GSS_C_INTEG_FLAG are available - if the accompanying major status return value is either GSS_S_COMPLETE or GSS_S_CONTINUE_NEEDED. If false, the protection services are available - only if the accompanying major status return value is GSS_S_COMPLETE. - - - - - (Returned only) If true, the resultant security context may be transferred to other processes by means of a call to gss_export_sec_context(3GSS). If false, the security context cannot be transferred. - - - - - Credentials to use to establish the context - - - - - Acquires credentials for the supplied principal using the supplied password - - Username - Password - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires credentials for the supplied principal using material stored in a valid keytab - - Username - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires default credentials stored in the cache - - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Translates a name in internal form to a textual representation. - - Name in internal form (GSSAPI). - - - - size_t->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - - Converts a contiguous string name to GSS_API internal format - The gss_import_name() function converts a contiguous string name to internal form. In general, - the internal name returned by means of the output_name parameter will not be a mechanism name; the exception to this is if the input_name_type - indicates that the contiguous string provided by means of the input_name_buffer parameter is of type GSS_C_NT_EXPORT_NAME, in which case, - the returned internal name will be a mechanism name for the mechanism that exported the name. - - Status code returned by the underlying mechanism. - The gss_buffer_desc structure containing the name to be imported. - A gss_OID that specifies the format that the input_name_buffer is in. - The gss_name_t structure to receive the returned name in internal form. Storage associated with this name must be freed by the application after use with a call to gss_release_name(). - - The gss_import_name() function may return the following status codes: - GSS_S_COMPLETE: The gss_import_name() function completed successfully. - GSS_S_BAD_NAMETYPE: The input_name_type was unrecognized. - GSS_S_BAD_NAME: The input_name parameter could not be interpreted as a name of the specified type. - GSS_S_BAD_MECH: The input_name_type was GSS_C_NT_EXPORT_NAME, but the mechanism contained within the input_name is not supported. - - - - - Allows an application to acquire a handle for a pre-existing credential by name. GSS-API implementations must impose a local access-control - policy on callers of this routine to prevent unauthorized callers from acquiring credentials to which they are not entitled. - This routine is not intended to provide a "login to the network" function, as such a function would involve the creation of new credentials - rather than merely acquiring a handle to existing credentials - - Mechanism specific status code. - Name of principal whose credential should be acquired. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Acquires a credential for use in establishing a security context using a password. - - Mechanism specific status code. - Name of principal whose credential should be acquired. - The password. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred_with_password() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Obtains information about a credential. - - Mechanism specific status code. - A handle that refers to the target credential. - The name whose identity the credential asserts. - The number of seconds for which the credential remain valid. - If the credential has expired, this parameter is set to zero. - How the credential may be used. - Set of mechanisms supported by the credential. - - gss_init_sec_context() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: The referenced credentials could not be accessed. - GSS_S_DEFECTIVE_CREDENTIAL: The referenced credentials were invalid. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - If the lifetime parameter is not passed in as NULL, then its value is set to 0. - - - - - Initiates the establishment of a security context between the application and a remote peer. - Initially, the input_token parameter should be specified either as GSS_C_NO_BUFFER, or as a pointer to a gss_buffer_desc object whose length field - contains the value zero. The routine may return a output_token which should be transferred to the peer application, where the peer application will - present it to gss_accept_sec_context. If no token need be sent, gss_init_sec_context will indicate this by setting the length field of the output_token - argument to zero. To complete the context establishment, one or more reply tokens may be required from the peer application; if so, gss_init_sec_context - will return a status containing the supplementary information bit GSS_S_CONTINUE_NEEDED. In this case, gss_init_sec_context should be called again when the - reply token is received from the peer application, passing the reply token to gss_init_sec_context via the input_token parameters. - - Mechanism specific status code. - Handle for credentials claimed. Supply GSS_C_NO_CREDENTIAL to act as a default initiator principal. - If no default initiator is defined, the function will return GSS_S_NO_CRED. - Context handle for new context. Supply GSS_C_NO_CONTEXT for first call; use value returned by first call in continuation calls. - Resources associated with this context-handle must be released by the application after use with a call to gss_delete_sec_context(). - Name of target. - Object ID of desired mechanism. Supply GSS_C_NO_OID to obtain an implementation specific default. - Contains various independent flags, each of which requests that the context support a specific service option. - Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be logically-ORed together to form the bit-mask value. - Desired number of seconds for which context should remain valid. Supply 0 to request a default validity period. - Application-specified bindings. Allows application to securely bind channel identification information to the security context. - Specify GSS_C_NO_CHANNEL_BINDINGS if channel bindings are not used. - Token received from peer application. Supply GSS_C_NO_BUFFER, or a pointer to a buffer containing the value GSS_C_EMPTY_BUFFER on initial call. - Actual mechanism used. The OID returned via this parameter will be a pointer to static storage that should be treated as read-only; - In particular the application should not attempt to free it. Specify NULL if not required. - Token to be sent to peer application. If the length field of the returned buffer is zero, no token need be sent to the peer application. - Storage associated with this buffer must be freed by the application after use with a call to gss_release_buffer(). - Contains various independent flags, each of which indicates that the context supports a specific service option. - Specify NULL if not required. Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be - logically-ANDed with the ret_flags value to test whether a given option is supported by the context. - Number of seconds for which the context will remain valid. If the implementation does not support context expiration, - the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_init_sec_context() may return the following status codes: - - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTINUE_NEEDED: A token from the peer application is required to complete the context, and gss_init_sec_context() must be called again with that token. - GSS_S_DEFECTIVE_TOKEN: Consistency checks performed on the input_token failed. - GSS_S_DEFECTIVE_CREDENTIAL: Consistency checks performed on the credential failed. - GSS_S_NO_CRED: The supplied credentials are not valid for context acceptance, or the credential handle does not reference any credentials. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - GSS_S_BAD_BINDINGS: The input_token contains different channel bindings than those specified by means of the input_chan_bindings parameter. - GSS_S_BAD_SIG: The input_token contains an invalid MIC or a MIC that cannot be verified. - GSS_S_OLD_TOKEN: The input_token is too old. This is a fatal error while establishing context. - GSS_S_DUPLICATE_TOKEN: The input_token is valid, but it is a duplicate of a token already processed.This is a fatal error while establishing context. - GSS_S_NO_CONTEXT: The supplied context handle does not refer to a valid context. - GSS_S_BAD_NAMETYPE: The provided target_name parameter contains an invalid or unsupported name type. - GSS_S_BAD_NAME: The supplied target_name parameter is ill-formed. - GSS_S_BAD_MECH: The token received specifies a mechanism that is not supported by the implementation or the provided credential. - - - - - Allows an application to obtain a textual representation of a GSS-API status code, for display to the user or for logging purposes. - Since some status values may indicate multiple conditions, applications may need to call gss_display_status multiple times, - each call generating a single text string. The message_context parameter is used by gss_display_status to store state information about which - error messages have already been extracted from a given status_value; message_context must be initialized to 0 by the application prior to the first call, - and gss_display_status will return a non-zero value in this parameter if there are further messages to extract. - - Mechanism specific status code. - Status value to be converted. - GSS_C_GSS_CODE - status_value is a GSS status code. GSS_C_MECH_CODE - status_value is a mechanism status code. - Underlying mechanism (used to interpret a minor status value). Supply GSS_C_NO_OID to obtain the system default. - Should be initialized to zero by the application prior to the first call. - On return from gss_display_status(), a non-zero status_value parameter indicates that additional messages may be extracted from the status code via - subsequent calls to gss_display_status(), passing the same status_value, status_type, mech_type, and message_context parameters. - Textual interpretation of the status_value. Storage associated with this parameter must be freed by the application - after use with a call to gss_release_buffer(). - - gss_display_status() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Indicates that translation in accordance with an unsupported mechanism type was requested. - GSS_S_BAD_STATUS: The status value was not recognized, or the status type was neither GSS_C_GSS_CODE nor GSS_C_MECH_CODE. - - - - - Allows an application to obtain a textual representation of an opaque internal-form name for display purposes. - The syntax of a printable name is defined by the GSS-API implementation. - - Mechanism specific status code. - Name to be displayed. - Buffer to receive textual name string. - The type of the returned name. - - gss_display_name() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: input_name was ill-formed. - - - - - Free storage associated with a buffer. The storage must have been allocated by a GSS-API routine. - In addition to freeing the associated storage, the routine will zero the length field in the descriptor to which the buffer parameter refers, - and implementations are encouraged to additionally set the pointer field in the descriptor to NULL. Any buffer object returned by a GSS-API routine - may be passed to gss_release_buffer (even if there is no storage associated with the buffer). - - Mechanism-specific status code. - The storage associated with the buffer will be deleted. The gss_buffer_desc object will not be freed, - but its length field will be zeroed. - - The gss_release_buffer() function may return the following status codes: - GSS_S_COMPLETE: Successful completion - - - - - Delete a security context. gss_delete_sec_context will delete the local data structures associated with the specified security context, - and may generate an output_token, which when passed to the peer gss_process_context_token will instruct it to do likewise. - If no token is required by the mechanism, the GSS-API should set the length field of the output_token (if provided) to zero. - No further security services may be obtained using the context specified by context_handle. - - Mechanism specific status code. - Context handle identifying context to delete. After deleting the context, - the GSS-API will set this context handle to GSS_C_NO_CONTEXT. - - The gss_delete_sec_context() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CONTEXT: No valid context was supplied. - - - - - Free GSSAPI-allocated storage associated with an internal-form name. The name is set to GSS_C_NO_NAME on successful completion of this call. - - Mechanism specific status code. - The name to be deleted. - - The gss_release_name() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: The name parameter did not contain a valid name. - - - - - Informs GSS-API that the specified credential handle is no longer required by the application, and frees associated resources. - The cred_handle is set to GSS_C_NO_CREDENTIAL on successful completion of this call. - - Mechanism specific status code. - Opaque handle identifying credential to be released. If GSS_C_NO_CREDENTIAL is supplied, - the routine will complete successfully, but will do nothing. - - The gss_release_cred() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: Credentials could not be accessed. - - - - - Converts a message previously protected by gss_wrap back to a usable form, verifying the embedded MIC. - The conf_state parameter indicates whether the message was encrypted; the qop_state parameter indicates the strength of - protection that was used to provide the confidentiality and integrity services. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Protected message. - Buffer to receive unwrapped message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_DEFECTIVE_TOKEN: The token failed consistency checks. - GSS_S_BAD_SIG: The MIC was incorrect. - GSS_S_DUPLICATE_TOKEN: The token was valid, and contained a correct MIC for the message, but it had already been processed. - GSS_S_OLD_TOKEN: The token was valid, and contained a correct MIC for the message, but it is too old to check for duplication. - GSS_S_UNSEQ_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - a later token has already been received. - GSS_S_GAP_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - an earlier expected token has not yet been received. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - - - - - Attaches a cryptographic MIC and optionally encrypts the specified input_message. The output_message contains both the MIC and the message. - The qop_req parameter allows a choice between several cryptographic algorithms, if supported by the chosen mechanism. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Message to be protected. - Buffer to receive protected message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - GSS_S_BAD_QOP: The specified QOP is not supported by the mechanism. - - - - - MIT Kerberos 5 GSS Bindings Linux - - - - - Automatic dynamic disposable - - - - - Automatic dynamic disposable storing - - - - - Automatic dynamic disposable storing , will be called at dispose - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Automatic dynamic disposable - - - - - Original value, can be used with ref - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Returns stored value - - - - - Gets the Kerberos configuration from the "krb5.conf/krb5.ini" file - - - - - Memory pinned object - - - - - Create memory pinned object from - - Any class type - Value to pin - Pinned value - - - - Memory pinned object - - Any class type - - - - Original object value, can be used with ref - - - - - In memory address of the object - - - - - Create memory pinned object from - - Value to pin - - - - Returns address of object in memory - - - - - Returns original object value - - - - - DNS resolver that runs queries against a server. - - - - - Initializes a new instance of the class. - - - - - Gets the DNS SVR records of the service name that is provided. - - A list of s sorted as described in RFC2782. - - - - Sorts a list of DNS SRV records according to the sorting rules described in RFC2782. - - List of s to sort. - A new list of sorted s. - - - - Resets the DnsSrvResolver - - - - - Class that represents a DNS SRV record. - RFC 2782 (https://tools.ietf.org/html/rfc2782) - - - - - Gets the port. - - - - - Gets the priority. - - - - - Gets the target domain name. - - - - - Gets the weight. - - - - - Initializes a new instance of class. - - The port. - The priority. - The target. - The weight. - - - - Initializes a new instance of class. - - The DNS SRV record. - - - - Compare two objects. First, using their priority and - if both have the same, then using their weights. - - A to compare. - A to compare. - - - - - Initializes a new instance of the class from a . - - The DNS SRV record. - - - - This class is modeled after .NET Stopwatch. It provides better - performance (no system calls).It is however less precise than - .NET Stopwatch, measuring in milliseconds. It is adequate to use - when high-precision is not required (e.g for measuring IO timeouts), - but not for other tasks. - - - - - Wrapper around NetworkStream. - - MyNetworkStream is equivalent to NetworkStream, except - 1. It throws TimeoutException if read or write timeout occurs, instead - of IOException, to match behavior of other streams (named pipe and - shared memory). This property comes handy in TimedStream. - - 2. It implements workarounds for WSAEWOULDBLOCK errors, that can start - occuring after stream has times out. For a discussion about the CLR bug, - refer to http://tinyurl.com/lhgpyf. This error should never occur, as - we're not using asynchronous operations, but apparerntly it does occur - directly after timeout has expired. - The workaround is hinted in the URL above and implemented like this: - For each IO operation, if it throws WSAEWOULDBLOCK, we explicitely set - the socket to Blocking and retry the operation once again. - - - - - Determines whether the connection state is closed or open. - - true if connection is closed; otherwise, false. - - - - Set keepalive + timeout on socket. - - socket - keepalive timeout, in seconds - - - - Read a single quoted identifier from the stream - - - - - - - Helper class to encapsulate shared memory functionality - Also cares of proper cleanup of file mapping object and cew - - - - - Summary description for SharedMemoryStream. - - - - - By creating a private ctor, we keep the compiler from creating a default ctor - - - - - Mark - or + signs that are unary ops as no output - - - - - - Handles SSL connections for the Classic and X protocols. - - - - - Contains the connection options provided by the user. - - - - - A flag to establish how certificates are to be treated and validated. - - - - - Defines the supported TLS protocols. - - - - - Retrieves a collection containing the client SSL PFX certificates. - - Dependent on connection string settings. - Either file or store based certificates are used. - - - - Initiates the SSL connection. - - The base stream. - The encoding used in the SSL connection. - The connection string used to establish the connection. - A instance ready to initiate an SSL connection. - - - - Verifies the SSL certificates used for authentication. - - An object that contains state information for this validation. - The MySQL server certificate used to authenticate the remote party. - The chain of certificate authorities associated with the remote certificate. - One or more errors associated with the remote certificate. - true if no errors were found based on the selected SSL mode; false, otherwise. - - - - Gets the extension of the specified file. - - The path of the file. - Flag to indicate if the result should be converted to lower case. - The . character is ommited from the result. - - - - - Summary description for StreamCreator. - - - - - Set the keepalive timeout on the socket. - - The socket object. - The keepalive timeout, in seconds. - - - - Summary description for Version. - - - - - Provides functionality to read SSL PEM certificates and to perform multiple validations via Bouncy Castle. - - - - - Raises an exception if the specified connection option is null, empty or whitespace. - - The connection option to verify. - The name of the connection option. - - - - Reads the specified file as a byte array. - - The path of the file to read. - A byte array representing the read file. - - - - Reads the SSL certificate file. - - The path to the certificate file. - A instance representing the SSL certificate file. - - - - Reads the SSL certificate key file. - - The path to the certificate key file. - A instance representing the SSL certificate key file. - - - - Verifies that the certificate has not yet expired. - - The certificate to verify. - - - - Verifies a certificate CA status. - - The certificate to validate. - A flag indicating the expected CA status. - - - - Verifies that the certificate was signed using the private key that corresponds to the specified public key - - The client side certificate containing the public key. - The server certificate. - - - - Verifies that no SSL policy errors regarding the identitfy of the host were raised. - - A instance set with the raised SSL errors. - - - - Verifies that the issuer matches the CA by comparing the CA certificate issuer and the server certificate issuer. - - The CA certificate. - The server certificate. - - - - - Gets and sets the host list. - - - - - Gets the active host. - - - - - Active host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - object that represents the next available host. - - - - Implements common elements that allow to manage the hosts available for client side failover. - - - - - Gets and sets the failover group which consists of a host list. - - - - - Resets the manager. - - - - - Sets the host list to be used during failover operations. - - The host list. - The failover method. - - - - Attempts to establish a connection to a host specified from the list. - - The original connection string set by the user. - An out parameter that stores the updated connection string. - A object in case this is a pooling scenario. - A flag indicating if the default port is used in the connection. - An instance if the connection was succesfully established, a exception is thrown otherwise. - - - - - Creates a if more than one host is found. - - A string containing an unparsed list of hosts. - true if the connection is X Protocol; otherwise false. - true if the connection data is a URI; otherwise false. - The number of hosts found, -1 if an error was raised during parsing. - - - - Creates a object based on the provided parameters. - - The host string that can be a simple host name or a host name and port. - The priority of the host. - The port number of the host. - true if the connection data is a URI; otherwise false. - - - - - Attempts the next host in the list. Moves to the first element if the end of the list is reached. - - - - - Determines the next host on which to attempt a connection by checking the value of the Priority property in descending order. - - - - - Determines the next host on which to attempt a connection randomly. - - - - - Depicts a host which can be failed over to. - - - - - Gets and sets the name or address of the host. - - - - - Gets and sets the port number. - - - - - Gets a value between 0 and 100 which represents the priority of the host. - - - - - Flag to indicate if this host is currently being used. - - - - - Flag to indicate if this host has been attempted to connection. - - - - - Time since the host has been demoted. - - - - - Initializes a object. - - The host. - The port. - The priority. - - - - Compares two objects of type . - - FailoverServer object to compare. - True if host properties are the same. Otherwise, false. - - - - Manages the hosts available for client side failover using the Random Failover method. - The Random Failover method attempts to connect to the hosts specified in the list randomly until all the hosts have been attempted. - - - - - The initial host taken from the list. - - - - - The host for the current connection attempt. - - - - - Random object to get the next host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - Manages the hosts available for client side failover using the Sequential Failover method. - The Sequential Failover method attempts to connect to the hosts specified in the list one after another until the initial host is reached. - - - - - The initial host taken from the list. - - - - - The index of the current host. - - - - - The host for the current connection attempt. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter is null. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter's SelectCommand is null. - - - - - Looks up a localized string similar to Invalid attempt to access a field before calling Read(). - - - - - Looks up a localized string similar to Authentication to host '{0}' for user '{1}' using method '{2}' failed with message: {3}. - - - - - Looks up a localized string similar to Authentication method '{0}' not supported by any of the available plugins.. - - - - - Looks up a localized string similar to Authentication plugin '{0}' is currently not supported.. - - - - - Looks up a localized string similar to Version string not in acceptable format. - - - - - Looks up a localized string similar to The buffer cannot be null. - - - - - Looks up a localized string similar to The buffer is not large enough. - - - - - Looks up a localized string similar to Canceling an executing query requires MySQL 5.0 or higher.. - - - - - Looks up a localized string similar to Canceling an active query is only supported on MySQL 5.0.0 and above. . - - - - - Looks up a localized string similar to Parameters can only be derived for commands using the StoredProcedure command type.. - - - - - Looks up a localized string similar to MySqlCommandBuilder does not support multi-table statements. - - - - - Looks up a localized string similar to MySqlCommandBuilder cannot operate on tables with no unique or key columns. - - - - - Looks up a localized string similar to Chaos isolation level is not supported . - - - - - Looks up a localized string similar to Clear-password authentication is not supported over insecure channels.. - - - - - Looks up a localized string similar to The CommandText property has not been properly initialized.. - - - - - Looks up a localized string similar to Compression is not supported.. - - - - - Looks up a localized string similar to The connection is already open.. - - - - - Looks up a localized string similar to Connection unexpectedly terminated.. - - - - - Looks up a localized string similar to Connection must be valid and open. - - - - - Looks up a localized string similar to The connection is not open.. - - - - - Looks up a localized string similar to The connection property has not been set or is null.. - - - - - Looks up a localized string similar to Could not find specified column in results: {0}. - - - - - Looks up a localized string similar to Count cannot be negative. - - - - - Looks up a localized string similar to SetLength is not a valid operation on CompressedStream. - - - - - Looks up a localized string similar to The given value was not in a supported format.. - - - - - Looks up a localized string similar to There is already an open DataReader associated with this Connection which must be closed first.. - - - - - Looks up a localized string similar to The default connection encoding was not found. Please report this as a bug along with your connection string and system details.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not currently support distributed transactions.. - - - - - Looks up a localized string similar to Specifying multiple host names with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Specifying a port number with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Using Unix domain sockets with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Unable to locate any hosts for {0}.. - - - - - Looks up a localized string similar to Connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to SSL connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to Encoding error during validation.. - - - - - Looks up a localized string similar to Error creating socket connection. - - - - - Looks up a localized string similar to Verify that user '{0}'@'{1}' has enough privileges to execute.. - - - - - Looks up a localized string similar to Fatal error encountered during command execution.. - - - - - Looks up a localized string similar to Fatal error encountered during data read.. - - - - - Looks up a localized string similar to Fatal error encountered attempting to read the resultset.. - - - - - Looks up a localized string similar to File based certificates are only supported when connecting to MySQL Server 5.1 or greater.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a certificate.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a key.. - - - - - Looks up a localized string similar to Failed to read file at the specified location.. - - - - - Looks up a localized string similar to No file path has been provided for the connection option {0}.. - - - - - Looks up a localized string similar to From index and length use more bytes than from contains. - - - - - Looks up a localized string similar to From index must be a valid index inside the from buffer. - - - - - Looks up a localized string similar to Call to GetHostEntry failed after {0} while querying for hostname '{1}': SocketErrorCode={2}, ErrorCode={3}, NativeErrorCode={4}.. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from server.. - - - - - Looks up a localized string similar to Value has an unsupported format.. - - - - - Looks up a localized string similar to An incorrect response was received from the server.. - - - - - Looks up a localized string similar to Index and length use more bytes than to has room for. - - - - - Looks up a localized string similar to Index must be a valid position in the buffer. - - - - - Looks up a localized string similar to The provided key is invalid.. - - - - - Looks up a localized string similar to Certificate with Thumbprint '{0}' not found.. - - - - - Looks up a localized string similar to You have specified an invalid column ordinal.. - - - - - Looks up a localized string similar to The requested value '{0}' is invalid for the given keyword '{1}'.. - - - - - Looks up a localized string similar to The host name or IP address is invalid.. - - - - - Looks up a localized string similar to Microsecond must be a value between 0 and 999999.. - - - - - Looks up a localized string similar to Millisecond must be a value between 0 and 999. For more precision use Microsecond.. - - - - - Looks up a localized string similar to No other SSL options are accepted when SSL Mode is set to None.. - - - - - Looks up a localized string similar to Either provide a valid path for 'allowloadlocalinfileinpath' or enable 'allowloadlocalinfile'.. - - - - - Looks up a localized string similar to Procedure or function '{0}' cannot be found in database '{1}'.. - - - - - Looks up a localized string similar to The certificate is invalid.. - - - - - Looks up a localized string similar to Unable to validate the signature.. - - - - - Looks up a localized string similar to Unable to verify the signature.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to Option "tls-version" can not be specified when SSL connections are disabled.. - - - - - Looks up a localized string similar to '{0}' not recognized as a valid TLS protocol version (should be one of TLSv1, TLSv1.1, TLSv1.2{1}).. - - - - - Looks up a localized string similar to '{0}' is an illegal value for a boolean option.. - - - - - Looks up a localized string similar to Keyword does not allow null values.. - - - - - Looks up a localized string similar to Option not supported.. - - - - - Looks up a localized string similar to Server asked for stream in response to LOAD DATA LOCAL INFILE, but the functionality is disabled by the client setting 'allowlocalinfile' to 'false'.. - - - - - Looks up a localized string similar to Mixing named and unnamed parameters is not allowed.. - - - - - Looks up a localized string similar to INTERNAL ERROR: More than one output parameter row detected.. - - - - - Looks up a localized string similar to Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.. - - - - - Looks up a localized string similar to NamedPipeStream does not support seeking. - - - - - Looks up a localized string similar to NamedPipeStream doesn't support SetLength. - - - - - Looks up a localized string similar to The new value must be a MySqlParameter object.. - - - - - Looks up a localized string similar to Invalid attempt to call NextResult when the reader is closed.. - - - - - Looks up a localized string similar to When calling stored procedures and 'Use Procedure Bodies' is false, all parameters must have their type explicitly set.. - - - - - Looks up a localized string similar to Nested transactions are not supported.. - - - - - Looks up a localized string similar to The host {0} does not support SSL connections.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows.. - - - - - Looks up a localized string similar to Cannot retrieve Windows identity for current user. Connections that use IntegratedSecurity cannot be pooled. Use either 'ConnectionReset=true' or 'Pooling=false' in the connection string to fix.. - - - - - Looks up a localized string similar to The object is not open or has been disposed.. - - - - - Looks up a localized string similar to The offset cannot be negative. - - - - - Looks up a localized string similar to Offset must be a valid position in buffer. - - - - - Looks up a localized string similar to Authentication with old password no longer supported, use 4.1 style passwords.. - - - - - Looks up a localized string similar to The option '{0}' is not currently supported.. - - - - - Looks up a localized string similar to Parameter '{0}' has already been defined.. - - - - - Looks up a localized string similar to Parameter cannot have a negative value. - - - - - Looks up a localized string similar to Parameter cannot be null. - - - - - Looks up a localized string similar to Parameter '{0}' can't be null or empty.. - - - - - Looks up a localized string similar to Parameter index was not found in Parameter Collection.. - - - - - Looks up a localized string similar to Parameter is invalid.. - - - - - Looks up a localized string similar to Parameter '{0}' must be defined.. - - - - - Looks up a localized string similar to Parameter '{0}' was not found during prepare.. - - - - - Looks up a localized string similar to Parameter can't be null or empty.. - - - - - Looks up a localized string similar to Password must be valid and contain length characters. - - - - - Looks up a localized string similar to This category includes a series of counters for MySQL. - - - - - Looks up a localized string similar to .NET Data Provider for MySQL. - - - - - Looks up a localized string similar to The number of times a procedures metadata had to be queried from the server.. - - - - - Looks up a localized string similar to Hard Procedure Queries. - - - - - Looks up a localized string similar to The number of times a procedures metadata was retrieved from the client-side cache.. - - - - - Looks up a localized string similar to Soft Procedure Queries. - - - - - Looks up a localized string similar to same name are not supported.. - - - - - Looks up a localized string similar to MySQL Server {0} dos not support query attributes.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not support query attributes with prepared statements for this version of MySQL Server.. - - - - - Looks up a localized string similar to Packets larger than max_allowed_packet are not allowed.. - - - - - Looks up a localized string similar to Reading from the stream has failed.. - - - - - Looks up a localized string similar to Invalid attempt to read a prior column using SequentialAccess. - - - - - Looks up a localized string similar to Replicated connections allow only readonly statements.. - - - - - Looks up a localized string similar to Attempt to connect to '{0}' server failed.. - - - - - Looks up a localized string similar to No available server found.. - - - - - Looks up a localized string similar to Replication group '{0}' not found.. - - - - - Looks up a localized string similar to Replicated server not found: '{0}'. - - - - - Looks up a localized string similar to Routine '{0}' cannot be found. Either check the spelling or make sure you have sufficient rights to execute the routine.. - - - - - Looks up a localized string similar to Attempt to call stored function '{0}' without specifying a return parameter. - - - - - Looks up a localized string similar to Retrieval of the RSA public key is not enabled for insecure connections.. - - - - - Looks up a localized string similar to Connector/NET no longer supports server versions prior to 5.0. - - - - - Looks up a localized string similar to Snapshot isolation level is not supported.. - - - - - Looks up a localized string similar to Socket streams do not support seeking. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from procedure cache.. - - - - - Looks up a localized string similar to Stored procedures are not supported on this version of MySQL. - - - - - Looks up a localized string similar to The certificate authority (CA) does not match.. - - - - - Looks up a localized string similar to The host name does not match the name on the certificate.. - - - - - Looks up a localized string similar to The certificate is not a certificate authority (CA).. - - - - - Looks up a localized string similar to SSL Connection error.. - - - - - Looks up a localized string similar to Connection protocol '{0}' does not support SSL connections.. - - - - - Looks up a localized string similar to The stream has already been closed. - - - - - Looks up a localized string similar to The stream does not support reading. - - - - - Looks up a localized string similar to The stream does not support writing. - - - - - Looks up a localized string similar to String can't be empty.. - - - - - Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. - - - - - Looks up a localized string similar to error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} seconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to This connection is using {0}, which is now deprecated and will be removed in a future release of Connector/NET.. - - - - - Looks up a localized string similar to TLSv1.3 is supported in .NET Framework 4.8 or .NET Core 3.0.. - - - - - Looks up a localized string similar to No supported TLS protocol version found in the 'tls-versions' list.. - - - - - Looks up a localized string similar to {0}: Connection Closed. - - - - - Looks up a localized string similar to Unable to trace. There are more than Int32.MaxValue connections in use.. - - - - - Looks up a localized string similar to {0}: Error encountered during row fetch. Number = {1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Connection Opened: connection string = '{1}'. - - - - - Looks up a localized string similar to {0}: Error encountered attempting to open result: Number={1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Query Closed. - - - - - Looks up a localized string similar to {0}: Query Normalized: {2}. - - - - - Looks up a localized string similar to {0}: Query Opened: {2}. - - - - - Looks up a localized string similar to {0}: Resultset Opened: field(s) = {1}, affected rows = {2}, inserted id = {3}. - - - - - Looks up a localized string similar to {0}: Resultset Closed. Total rows={1}, skipped rows={2}, size (bytes)={3}. - - - - - Looks up a localized string similar to {0}: Set Database: {1}. - - - - - Looks up a localized string similar to {0}: Statement closed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement executed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement prepared: sql='{1}', statement id={2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query is using a bad index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The field '{2}' was converted to the following types: {3}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query does not use an index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The following columns were not accessed: {2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Skipped {2} rows. Consider a more focused query.. - - - - - Looks up a localized string similar to {0}: MySql Warning: Level={1}, Code={2}, Message={3}. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseCommandInterceptor. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseExceptionInterceptor. - - - - - Looks up a localized string similar to Unable to connect to any of the specified MySQL hosts.. - - - - - Looks up a localized string similar to Unable to create plugin for authentication method '{0}'. Please see inner exception for details.. - - - - - Looks up a localized string similar to Unable to derive stored routine parameters. The 'Parameters' information schema table is not available and access to the stored procedure body has been disabled.. - - - - - Looks up a localized string similar to Unable to enable query analysis. Be sure the MySql.Data.EMTrace assembly is properly located and registered.. - - - - - Looks up a localized string similar to An error occured attempting to enumerate the user-defined functions. Do you have SELECT privileges on the mysql.func table?. - - - - - Looks up a localized string similar to Unable to execute stored procedure '{0}'.. - - - - - Looks up a localized string similar to There was an error parsing the foreign key definition.. - - - - - Looks up a localized string similar to Error encountered reading the RSA public key.. - - - - - Looks up a localized string similar to Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string.. - - - - - Looks up a localized string similar to Unable to start a second async operation while one is running.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows. - - - - - Looks up a localized string similar to Unknown authentication method '{0}' was requested.. - - - - - Looks up a localized string similar to Unknown connection protocol. - - - - - Looks up a localized string similar to Trying to upload a file from outside the path set on 'allowloadlocalinfileinpath' is invalid.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to The requested column value could not be treated as or conveted to a Guid.. - - - - - Looks up a localized string similar to Windows authentication connections are not supported on {0}. - - - - - Looks up a localized string similar to Writing to the stream failed.. - - - - - Looks up a localized string similar to Parameter '{0}' is not found but a parameter with the name '{1}' is found. Parameter names must include the leading parameter marker.. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Appdata path is not defined.. - - - - - Looks up a localized string similar to Authentication failed using MYSQL41 and SHA256_MEMORY. Check the user name and password or try using a secure connection.. - - - - - Looks up a localized string similar to You can't get more sessions because Client is closed.. - - - - - Looks up a localized string similar to Client option '{0}' does not support value '{1}'.. - - - - - Looks up a localized string similar to Client option '{0}' is not recognized as valid.. - - - - - Looks up a localized string similar to {0} '{1}' does not exist in schema '{2}'.. - - - - - Looks up a localized string similar to Compression requested but the compression algorithm negotiation failed.. - - - - - Looks up a localized string similar to Compression using {0} is not supported.. - - - - - Looks up a localized string similar to Failed to load libzstd.dll. Removing zstd_stream from the client supported compression algorithms.. - - - - - Looks up a localized string similar to Compression using {0} is not supported in .NET Framework.. - - - - - Looks up a localized string similar to The connection property 'compression' acceptable values are: 'preferred', 'required' or 'disabled'. The value '{0}' is not acceptable.. - - - - - Looks up a localized string similar to Compression is not enabled.. - - - - - Looks up a localized string similar to Compression requested but the server does not support it.. - - - - - Looks up a localized string similar to There are still decompressed messages pending to be processed.. - - - - - Looks up a localized string similar to '{0}' cannot be set to false with DNS SRV lookup enabled.. - - - - - Looks up a localized string similar to Scheme '{0}' is not valid.. - - - - - Looks up a localized string similar to Duplicate key '{0}' used in "connection-attributes".. - - - - - Looks up a localized string similar to Key name in connection attribute cannot be an empty string.. - - - - - Looks up a localized string similar to At least one option must be specified.. - - - - - Looks up a localized string similar to This feature is currently not supported.. - - - - - Looks up a localized string similar to This functionality is only supported in MySQL {0} and higher.. - - - - - Looks up a localized string similar to Collation with id '{0}' not found.. - - - - - Looks up a localized string similar to The value of "connection-attributes" must be either a boolean or a list of key-value pairs.. - - - - - Looks up a localized string similar to Connection Data is incorrect.. - - - - - Looks up a localized string similar to The connection string is invalid.. - - - - - Looks up a localized string similar to '{0}' is not a valid connection string attribute.. - - - - - Looks up a localized string similar to The connection timeout value must be a positive integer (including 0).. - - - - - Looks up a localized string similar to Decimal (BCD) format is invalid.. - - - - - Looks up a localized string similar to Field type with name '{0}' not found.. - - - - - Looks up a localized string similar to Index type with name '{0}' not found.. - - - - - Looks up a localized string similar to The value provided is not a valid JSON document. {0}. - - - - - Looks up a localized string similar to {0} is not a valid column name in the row.. - - - - - Looks up a localized string similar to {0} is not a valid index for the row.. - - - - - Looks up a localized string similar to Session state is not valid.. - - - - - Looks up a localized string similar to Invalid Uri . - - - - - Looks up a localized string similar to Invalid uri query value. - - - - - Looks up a localized string similar to Key names in "connection-attributes" cannot start with "_".. - - - - - Looks up a localized string similar to Json configuration must contain 'uri' or 'host' but not both.. - - - - - Looks up a localized string similar to Keyword '{0}' not found.. - - - - - Looks up a localized string similar to Keyword not supported.. - - - - - Looks up a localized string similar to Field '{0}' is mandatory.. - - - - - Looks up a localized string similar to Missed required schema option.. - - - - - Looks up a localized string similar to More than one document id was generated. Please use the DocumentIds property instead.. - - - - - Looks up a localized string similar to There is no data at index {0}. - - - - - Looks up a localized string similar to No 'host' has been specified.. - - - - - Looks up a localized string similar to No more data in resultset.. - - - - - Looks up a localized string similar to Object '{0}' not found. - - - - - Looks up a localized string similar to No placeholders.. - - - - - Looks up a localized string similar to Connection closed. Reason: connection idle was too long. - - - - - Looks up a localized string similar to Connection closed. Reason: connection was killed by a different session. - - - - - Looks up a localized string similar to Connection closed. Reason: server was shutdown. - - - - - Looks up a localized string similar to {0} must be a value greater than 0.. - - - - - Looks up a localized string similar to Path not found '{0}'.. - - - - - Looks up a localized string similar to Queue timeout expired. The timeout period elapsed prior to getting a session from the pool.. - - - - - Looks up a localized string similar to Providing a port number as part of the host address isn't supported when using connection strings in basic format or anonymous objects. Use URI format instead.. - - - - - Looks up a localized string similar to You must either assign no priority to any of the hosts or give a priority for every host.. - - - - - Looks up a localized string similar to The priority must be between 0 and 100.. - - - - - Looks up a localized string similar to ProgramData path is not defined.. - - - - - Looks up a localized string similar to Replacement document has an '_id' that is - different from the matched document.. - - - - - Looks up a localized string similar to The server doesn't support the requested operation. Please update the MySQL Server, client library, or both.. - - - - - Looks up a localized string similar to The process of closing the resultset and resulted in results being lost.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} milliseconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout was exceeded for each selected server.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout of {0} milliseconds was exceeded.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout was exceeded.. - - - - - Looks up a localized string similar to Unable to connect to any specified host.. - - - - - Looks up a localized string similar to Unable to read or decode data value.. - - - - - Looks up a localized string similar to Unable to open a session.. - - - - - Looks up a localized string similar to Unexpected end of packet found while reading data values. - - - - - Looks up a localized string similar to Field name '{0}' is not allowed.. - - - - - Looks up a localized string similar to Unknown placeholder :{0}. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Summary description for MySqlUInt64. - - - - - An exception thrown by MySQL when a type conversion does not succeed. - - - - Initializes a new instance of the class with a specified error message. - Message describing the error. - - - - Represents a datetime data type object in a MySql database. - - - - - Defines whether the UTF or local timezone will be used. - - - - - Constructs a new MySqlDateTime object by setting the individual time properties to - the given values. - - The year to use. - The month to use. - The day to use. - The hour to use. - The minute to use. - The second to use. - The microsecond to use. - - - - Constructs a new MySqlDateTime object by using values from the given object. - - The object to copy. - - - - Constructs a new MySqlDateTime object by copying the current value of the given object. - - The MySqlDateTime object to copy. - - - - Enables the contruction of a MySqlDateTime object by parsing a string. - - - - - Indicates if this object contains a value that can be represented as a DateTime - - - - Returns the year portion of this datetime - - - Returns the month portion of this datetime - - - Returns the day portion of this datetime - - - Returns the hour portion of this datetime - - - Returns the minute portion of this datetime - - - Returns the second portion of this datetime - - - - Returns the milliseconds portion of this datetime - expressed as a value between 0 and 999 - - - - - Returns the microseconds portion of this datetime (6 digit precision) - - - - - Returns true if this datetime object has a null value - - - - - Retrieves the value of this as a DateTime object. - - - - Returns this value as a DateTime - - - Returns a MySQL specific string representation of this value - - - - - - - - - Represents a decimal data type object in a MySql database. - - - - - Gets a boolean value signaling if the type is null. - - - - - Gets or sets the decimal precision of the type. - - - - - Gets or sets the scale of the type. - - - - - Gets the decimal value associated to this type. - - - - - Converts this decimal value to a double value. - - The value of this type converted to a dobule value. - - - - Represents a geometry data type object in a MySql database. - - - - - Gets the x coordinate. - - - - - Gets the y coordinate. - - - - - Gets the SRID value. - - - - - Gets a boolean value that signals if the type is null. - - - - - Gets the value associated to this type. - - - - - Gets the value associated to this type. - - - - Returns the Well-Known Text representation of this value - POINT({0} {1})", longitude, latitude - http://dev.mysql.com/doc/refman/4.1/en/gis-wkt-format.html - - - - Get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - - - - Try to get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - Out mysqlGeometryValue - - - - Sets the DSInfo when GetSchema is called for the DataSourceInformation collection. - - - - - Gets the well-known text representation of the geomtry object. - - A string representation of the WKT. - - - - Enables X Protocol packets from the network stream to be retrieved and processed - - - - - The instance of the stream that holds the network connection with MySQL Server. - - - - - This field is used to enable compression and decompression actions in the communication channel. - - - - - A Queue to store the pending packets removed from the - - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - The XCompressionController to be used for compression actions. - - - - Identifies the kind of packet received over the network and execute - the corresponding processing. - - - - - Reads data from the network stream and create a packet of type . - - A . - - - - Sends the read/write actions to the MyNetworkStream class. - - - - - Reads the pending packets present in the network channel and processes them accordingly. - - - - - Implementation of EXTERNAL authentication type. - - - - - Implementation of MySQL41 authentication type. - - - - - Implementation of PLAIN authentication type. - - - - - Compares two Guids in string format. - - The first string to compare. - The first string to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Compares two objects. - - The first to compare. - The second to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Provides functionality for loading unmanaged libraries. - - - - - Loads the specified unmanaged library from the embedded resources. - - The application name. - The library name. - - - - Provides support for configuring X Protocol compressed messages. - - - - - The capabilities sub-key used to specify the compression algorithm. - - - - - The capabilities key used to specify the compression capability. - - - - - Messages with a value lower than this threshold will not be compressed. - - - - - Default value for enabling or disabling combined compressed messages. - - - - - Default value for the maximum number of combined compressed messages contained in a compression message. - - - - - The capabilities sub-key used to specify if combining compressed messages is permitted. - - - - - The capabilities sub-key used to specify the maximum number of compressed messages contained in a compression message. - - - - - Buffer used to store the data received from the server. - - - - - Deflate stream used for compressing data. - - - - - Deflate stream used for decompressing data. - - - - - Flag indicating if the initialization is for compression or decompression. - - - - - Stores the communication packet generated the last time ReadNextBufferedMessage method was called. - - - - - Indicates if the libzstd.dll has been loaded. - - - - - Stream used to store multiple X Protocol messages. - - - - - ZStandard stream used for decompressing data. - - - - - Main constructor used to set the compression algorithm and initialize the list of messages to - be compressed by the client. - - The compression algorithm to use. - Flag indicating if the initialization is for compression or decompression. - - - - Gets or sets the list of messages that should be compressed by the client when compression is enabled. - - - - - Gets or sets the compression algorithm. - - - - - Flag indicating if compression is enabled. - - - - - Flag indicating if the last decompressed message contains multiple messages. - - - - - General method used to compress data using the compression algorithm defined in the constructor. - - The data to compress. - A compressed byte array. - - - - Compresses data using the deflate_stream algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the lz4_message algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the zstd_stream algorithm. - - The data to compress. - A compressed byte array. - - - - General method used to decompress data using the compression algorithm defined in the constructor. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the deflate_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the lz4_message compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the zstd_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Closes and disposes of any open streams. - - - - - Gets the byte array representing the next X Protocol frame that is stored in cache. - - A byte array representing an X Protocol frame. - - - - Gets a representing the next X Protocol frame that is stored in cache. - - A with the next X Protocol frame. - - - - Loads the libzstd.dll assembly. - - - - - Constructor that sets the stream used to read or write data. - - The stream used to read or write data. - - - - Constructor that sets the stream used to read or write data and the compression controller. - - The stream used to read or write data. - The compression controller. - - - - Gets or sets the compression controller uses to manage compression operations. - - - - - Writes X Protocol frames to the X Plugin. - - The integer representation of the client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Writes X Protocol frames to the X Plugin. - - The client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Reads X Protocol frames incoming from the X Plugin. - - A instance representing the X Protocol frame that was read. - - - - Abstract class for the protocol base operations in client/server communication. - - - - - Expression parser for MySQL-X protocol. - - - string being parsed. - - - Token stream produced by lexer. - - - Parser's position in token stream. - - - Mapping of names to positions for named placeholders. Used for both string values ":arg" and numeric values ":2". - - - Number of positional placeholders. - - - Are relational columns identifiers allowed? - - - Token types used by the lexer. - - - Token. Includes type and string value of the token. - - - Mapping of reserved words to token types. - - - Does the next character equal the given character? (respects bounds) - - - Helper function to match integer or floating point numbers. This function should be called when the position is on the first character of the number (a - digit or '.'). - - @param i The current position in the string - @return the next position in the string after the number. - - - Lexer for MySQL-X expression language. - - - Assert that the token at pos is of type type. - - - Does the current token have type `t'? - - - Does the next token have type `t'? - - - Does the token at position `pos' have type `t'? - - - Consume token. - - @return the string value of the consumed token - - - Parse a paren-enclosed expression list. This is used for function params or IN params. - - @return a List of expressions - - - Parse a function call of the form: IDENTIFIER PAREN_EXPR_LIST. - - @return an Expr representing the function call. - - - Parse an identifier for a function call: [schema.]name - - - Parse a document path member. - - - Parse a document path array index. - - - Parse a JSON-style document path, like WL#7909, but prefix by @. instead of $. - - - Parse a document field. - - - Parse a column identifier (which may optionally include a JSON document path). - - - Build a unary operator expression. - - - Parse an atomic expression. (c.f. grammar at top) - - - Parse a left-associated binary operator. - - @param types - The token types that denote this operator. - @param innerParser - The inner parser that should be called to parse operands. - @return an expression tree of the binary operator or a single operand - - - Parse the entire string as an expression. - - @return an X-protocol expression tree - - - - Parse an ORDER BY specification which is a comma-separated list of expressions, each may be optionally suffixed by ASC/DESC. - - - Parse a SELECT projection which is a comma-separated list of expressions, each optionally suffixed with a target alias. - - - Parse an INSERT field name. - @todo unit test - - - Parse an UPDATE field which can include can document paths. - - - Parse a document projection which is similar to SELECT but with document paths as the target alias. - - - Parse a list of expressions used for GROUP BY. - - - @return the number of positional placeholders in the expression. - - - @return a mapping of parameter names to positions. - - - Proto-buf helper to build a LITERAL Expr with a Scalar NULL type. - - - Proto-buf helper to build a LITERAL Expr with a Scalar DOUBLE type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar SINT (signed int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar UINT (unsigned int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar STRING type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar OCTETS type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar BOOL type (wrapped in Any). - - - Wrap an Any value in a LITERAL expression. - - - Build an Any with a string value. - - - - Parses an anonymous object into a dictionary. - - The object to parse. - A dictionary if the provided object is an anonymous object; otherwise, null. - - - List of operators which will be serialized as infix operators. - - - Scalar to string. - - - JSON document path to string. - - - Column identifier (or JSON path) to string. - - - Function call to string. - - - Create a string from a list of (already stringified) parameters. Surround by parens and separate by commas. - - - Convert an operator to a string. Includes special cases for chosen infix operators (AND, OR) and special forms such as LIKE and BETWEEN. - - - Escape a string literal. - - - Quote a named identifer. - - - Serialize an expression to a string. - - - - Build the message to be sent to MySQL Server to execute statement "Create" or "Modify" collection with schema options - - The namespace - The name of the command to be executed on MySql Server - Array of KeyValuePairs with the parameters required to build the message - void. - - - - Sends the delete documents message - - - - - Sends the CRUD modify message - - - - - Class implementation for a default communication kind. - - - - - Constructor method for the communication routing service - - A MySqlXConnectionStringBuilder setted with the information to use in the connection - - - - Gets the current connection base on the connection mode - - One of the values of ConnectionMode Offline, ReadOnly, WriteOnly, ReadWrite - - - - - Abstract class used to define the kind of server in environments with multiple types of distributed systems. - - - - - Main class for parsing json strings. - - - - - Initializes a new instance of the JsonParser class. - - - - - Parses the received string into a dictionary. - - The string to parse. - A object that represents the parsed string. - - - - Abstract class to manage and encapsulate one or more actual connections. - - - - - Creates a new session object with the values of the settings parameter. - - Settings to be used in the session object - - - - Sets the connection's charset default collation. - - The opened session. - The character set. - - - - Gets the version of the server. - - An instance of containing the server version. - - - - Gets the thread Id of the connection. - - Thread Id - - - - Implementation class for object that manages low-level work of queuing tasks onto threads. - - - - - Implementation class of InternalSession to manage connections using the Xprotocol type object. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Reorder the list of algorithms retrieved from server to the preferred order - - - - - Validate the algorithms given in the connection string are valid compared with enum CompressionAlgorithms - - - - - Negotiates compression capabilities with the server. - - An array containing the compression algorithms supported by the server. - An array containing the compression algorithms given by user/client. - - - - Prepare the dictionary of arguments required to create a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Prepare the dictionary of arguments required to Modify a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to Modify the collection. - - - - - Gets the compression algorithm being used to compress or decompress data. - - Flag to indicate if the compression algorithm should be - retrieved from the reader or writer controller. - The name of the compression algorithm being used if any. - null if no compression algorithm is being used. - - - - Represents a base class for a Session. - - - - - Flag to set if prepared statements are supported. - - - - - Gets the connection settings for this session. - - - - - Gets the currently active schema. - - - - - Gets the default schema provided when creating the session. - - - - - Gets the connection uri representation of the connection options provided during the creation of the session. - - - - - Initializes a new instance of the BaseSession class based on the specified connection string. - - The connection used to create the session. - A object. - is null. - Unable to parse the when - in URI format. - - When using Unix sockets the protocol=unix or protocol=unixsocket connection option is required. - This will enable elements passed in the server connection option to be treated as Unix sockets. The user is also required - to explicitly set sslmode to none since X Plugin does not support SSL when using Unix sockets. Note that - protocol=unix and protocol=unixsocket are synonyms. -   - Multiple hosts can be specified as part of the , - which enables client-side failover when trying to establish a connection. -   - Connection URI examples: - - mysqlx://test:test@[192.1.10.10,localhost] - - mysqlx://test:test@[192.1.10.10,127.0.0.1] - - mysqlx://root:@[../tmp/mysqlx.sock,/tmp/mysqld.sock]?protocol=unix&sslmode=none - - mysqlx://test:test@[192.1.10.10:33060,127.0.0.1:33060] - - mysqlx://test:test@[192.1.10.10,120.0.0.2:22000,[::1]:33060]/test?connectiontimeout=10 - - mysqlx://test:test@[(address=server.example,priority=20),(address=127.0.0.1,priority=100)] - - mysqlx://test:test@[(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25)] - -   - Connection string examples: - - server=10.10.10.10,localhost;port=33060;uid=test;password=test; - - host=10.10.10.10,192.101.10.2,localhost;port=5202;uid=test;password=test; - - host=./tmp/mysqld.sock,/var/run/mysqldx.sock;port=5202;uid=root;protocol=unix;sslmode=none; - - server=(address=server.example,priority=20),(address=127.0.0.1,priority=100);port=33060;uid=test;password=test; - - server=(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25);port=33060;uid=test;password=test; - -   - Failover methods - - Sequential: Connection attempts will be performed in a sequential order, that is, one after another until - a connection is successful or all the elements from the list have been tried. - - - Priority based: If a priority is provided, the connection attemps will be performed in descending order, starting - with the host with the highest priority. Priority must be a value between 0 and 100. Additionally, it is required to either - give a priority for every host or no priority to any host. - - - - - - Initializes a new instance of the BaseSession class based on the specified anonymous type object. - - The connection data as an anonymous type used to create the session. - A object. - is null. - - Multiple hosts can be specified as part of the , which enables client-side failover when trying to - establish a connection. -   - To assign multiple hosts, create a property similar to the connection string examples shown in - . Note that the value of the property must be a string. - - - - - - Drops the database/schema with the given name. - - The name of the schema. - is null. - - - - Creates a schema/database with the given name. - - The name of the schema/database. - A object that matches the recently created schema/database. - - - - Gets the schema with the given name. - - The name of the schema. - A object set with the provided schema name. - - - - Gets a list of schemas (or databases) in this session. - - A list containing all existing schemas (or databases). - - - - Starts a new transaction. - - - - - Commits the current transaction. - - A object containing the results of the commit operation. - - - - Rolls back the current transaction. - - - - - Closes this session or releases it to the pool. - - - - - Closes this session - - - - - Sets a transaction savepoint with an autogenerated name. - - The autogenerated name of the transaction savepoint. - - - - Sets a named transaction savepoint. - - The name of the transaction savepoint. - The name of the transaction savepoint. - - - - Removes the named savepoint from the set of savepoints within the current transaction. - - The name of the transaction savepoint. - - - - Rolls back a transaction to the named savepoint without terminating the transaction. - - The name of the transaction savepoint. - - - - Parses the connection data. - - The connection string or connection URI. - A object. - An updated connection string representation of the provided connection string or connection URI. - - - - Parses a connection URI. - - The connection URI to parse. - The connection string representation of the provided . - - - - Validates if the string provided is a Unix socket file. - - The Unix socket to evaluate. - true if is a valid Unix socket; otherwise, false. - - - - Converts the URI object into a connection string. - - An instance with the values for the provided connection options. - The path of the Unix socket file. - If true the replaces the value for the server connection option; otherwise, false - Flag indicating if this is a connection using DNS SRV. - A connection string. - - - - Parses a connection string. - - The connection string to parse. - The parsed connection string. - - - - Normalizes the Unix socket by removing leading and ending parenthesis as well as removing special characters. - - The Unix socket to normalize. - A normalized Unix socket. - - - - Disposes the current object. Disposes of the managed state if the flag is set to true. - - Flag to indicate if the managed state is to be disposed. - - - - Disposes the current object. Code added to correctly implement the disposable pattern. - - - - - Describes the state of the session. - - - - - The session is closed. - - - - - The session is open. - - - - - The session object is connecting to the data source. - - - - - The session object is executing a command. - - - - - Class encapsulating a session pooling functionality. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove hosts from the demoted list that have already been there for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Get a session from pool or create a new one. - - - - - - Closes all sessions the Client object created and destroys the managed pool. - - - - - Represents a collection of documents. - - - - - Creates an containing the provided objects that can be used to add - one or more items to a collection. - - The objects to add. - An object containing the objects to add. - is null. - This method can take anonymous objects, domain objects, or just plain JSON strings. - The statement can be further modified before execution. - - - - Creates a with the given condition that can be used to remove - one or more documents from a collection.The statement can then be further modified before execution. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Removes the document with the given identifier. - - The unique identifier of the document to replace. - A object containing the results of the execution. - is null or white space. - This is a direct execution method. - - - - Creates a with the given condition that can be used to modify one or more - documents from a collection. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Replaces the document matching the given identifier. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - is null or whitespace. - is null. - This is a direct execution method. Operation succeeds even if no matching document was found; - in which case, the Result.RecordsAffected property is zero. If the new document contains an identifier, the value - is ignored. - - - - Adds the given document to the collection unless the identifier or any other field that has a unique index - already exists, in which case it will update the matching document. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - The server version is lower than 8.0.3. - is null or white space. - is null. - The is different from the one in . - This is a direct execution method. - - - - Returns the number of documents in this collection on the server. - - The number of documents found. - - - - Creates a with the given condition which can be used to find documents in a - collection. - - An optional condition to match documents. - A object set with the given condition. - The statement can then be further modified before execution. - - - - Creates an index based on the properties provided in the JSON document. - - The index name. - JSON document describing the index to be created. - - is a JSON document with the following fields: - - - fields: array of IndexField objects, each describing a single document member to be - included in the index (see below). - - type: string, (optional) the type of index. One of INDEX or SPATIAL. Default is INDEX and may - be omitted. - -   - A single IndexField description consists of the following fields: - - - field: string, the full document path to the document member or field to be indexed. - - type: string, one of the supported SQL column types to map the field into (see the following list). - For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for - indexing may be added. - - required: bool, (optional) true if the field is required to exist in the document. defaults to - false, except for GEOJSON where it defaults to true. - - options: int, (optional) special option flags for use when decoding GEOJSON data. - - srid: int, (optional) srid value for use when decoding GEOJSON data. - -   - Supported SQL column types: - - - INT [UNSIGNED] - - TINYINT [UNSIGNED] - - SMALLINT [UNSIGNED] - - MEDIUMINT [UNSIGNED] - - INTEGER [UNSIGNED] - - BIGINT [UNSIGNED] - - REAL [UNSIGNED] - - FLOAT [UNSIGNED] - - DOUBLE [UNSIGNED] - - DECIMAL [UNSIGNED] - - NUMERIC [UNSIGNED] - - DATE - - TIME - - TIMESTAMP - - DATETIME - - TEXT[(length)] - - CHAR[(lenght)] - - GEOJSON (extra options: options, srid) - - - - - - Drops a collection index. - - The index name. - is null or white space. - - - - Verifies if the current collection exists in the server schema. - - true if the collection exists; otherwise, false. - - - - Returns the document with the given identifier. - - The unique identifier of the document to replace. - A object if a document matching given identifier exists; otherwise, null. - is null or white space. - This is a direct execution method. - - - - Base abstract class that defines elements inherited by all result types. - - - - - Gets the number of records affected by the statement that generated this result. - - - - - Gets the object of the session. - - - - - Gets a read-only collection of objects derived from statement execution. - - - - - Gets the number of warnings in the collection derived from statement execution. - - - - - No action is performed by this method. It is intended to be overriden by child classes if required. - - - - - Base abstract class for API statement. - - - - - - Initializes a new instance of the BaseStatement class based on the specified session. - - The session where the statement will be executed. - - - - Gets the that owns the statement. - - - - - Executes the base statements. This method is intended to be defined by child classes. - - A result object containing the details of the execution. - - - - Executes a statement asynchronously. - - A result object containing the details of the execution. - - - - Validates if the session is open and valid. - - - - - Sets the status as Changed for prepared statement validation. - - - - - Converts a statement to prepared statement for a second execution - without any change but Bind, Limit, or Offset. - - - - - Abstract class for buffered results. - - Generic result type. - - - - Index of the current item. - - - - - List of generic items in this buffered result. - - - - - Flag that indicates if all items have been read. - - - - - Gets a dictionary containing the column names and their index. - - - - - Gets the page size set for this buffered result. - - - - - Loads the column data into the field. - - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - Retrieves one element from the generic items associated to this buffered result. - - A generic object that corresponds to the current or default item. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Gets the current item. - - All items have already been read. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Resets the value of the field to zero. - - - - - Gets an representation of this object. - - An representation of this object. - - - - Gets an representation of this object. - - An representation of this object. - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - No body has been defined for this method. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - If false, throws an exception if the collection exists. - - - - - Object which hold the Level and Schema parameters. - - - - - This object store the required parameters to modify a Collection with schema validation. - - - - - This object store the required parameters to Modify a Collection with schema validation. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - It can be STRICT to enable schema validation or OFF to disable . - - - - - The JSON which define the rules to be validated in the collection. - - - - - The possible values for parameter Level in Validation object. - - - - - Class to represent an error in this result. - - - - - Numeric code. - - - - - Return code indicating the outcome of the executed SQL statement. - - - - - Error message. - - - - - Initializes a new instance of the ErrorInfo class. - - - - - Abstract class for filterable statements. - - The filterable statement. - The database object. - The type of result. - - - - Initializes a new instance of the FiltarableStatement class based on the target and condition. - - The database object. - The optional filter condition. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Sets the number of items to be returned by the operation. - - The number of items to be returned. - The implementing statement type. - is equal or lower than 0. - - - - Sets the number of items to be skipped before including them into the result. - - The number of items to be skipped. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameter name. - The value of the parameter. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a DbDoc object. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a JSON string. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as an anonymous object: new { param1 = value1, param2 = value2, ... }. - The implementing statement type. - - - - Executes the statement. - - The function to execute. - The generic object to use. - A generic result object containing the results of the execution. - - - - Clones the filterable data but Session and Target remain the - same. - - A clone of this filterable statement. - - - - Represents a general statement result. - - - - - Gets the last inserted identifier (if there is one) by the statement that generated this result. - - - - - Gets the list of generated identifiers in the order of the Add() calls. - - - - - Abstract class to select a database object target. - - The database object. - The execution result. - - - - Initializes a new instance of the TargetedBaseStatement class based on the provided target. - - The database object. - - - - Gets the database target. - - - - - Represents a warning in this result. - - - - - Numeric value associated to the warning message. - - - - - Error message. - - - - - Strict level for the warning. - - - - - Initializes a new instance of the WarningInfo class based on the code and msg. - - The code for the warning. - The error message for the warning. - - - - Represents a chaining collection insert statement. - - - - - Adds documents to the collection. - - The documents to add. - This object. - The array is null. - - - - Executes the Add statement. - - A object containing the results of the execution. - - - - Implementation class for CRUD statements with collections using an index. - - - - - Executes this statement. - - A object containing the results of the execution. - - - - Represents a collection statement. - - - - - - Converts base s into objects. - - Array of objects to be converted to objects. - An enumerable collection of objects. - - - - Represents the result of an operation that includes a collection of documents. - - - - - Represents a chaining collection find statement. - - - - - List of column projections that shall be returned. - - List of columns. - This object set with the specified columns or fields. - - - - Executes the Find statement. - - A object containing the results of execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with the lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the collection aggregation. - - The field list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Represents a chaining collection modify statement. - - - - - Sets key and value. - - The document path key. - The new value. - This object. - - - - Changes value for a key. - - The document path key. - The new value. - This object. - - - - Removes keys or values from a document. - - An array of document paths representing the keys to be removed. - This object. - - - - Creates a object set with the changes to be applied to all matching documents. - - The JSON-formatted object describing the set of changes. - A object set with the changes described in . - can be a object, an anonymous object, or a JSON string. - is null. - is null or white space. - - - - Inserts an item into the specified array. - - The document path key including the index on which the item will be inserted. - The value to insert into the array. - A object containing the updated array. - - - - Appends an item to the specified array. - - The document path key. - The value to append to the array. - A object containing the updated array. - - - - Allows the user to set the sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the modify statement. - - A object containing the results of the execution. - - - - Represents a chaining collection remove statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the remove statement. - - A object containing the results of the execution. - - - - Represents a database object. - - - - - Gets the session that owns the database object. - - - - - Gets the schema that owns the database object. - - - - - Gets the database object name. - - - - - Verifies that the database object exists in the database. - - True if the object exists in database, false otherwise. - - - - Represents a generic document in JSON format. - - - - - Initializes a new instance of the DbDoc class based on the object provided. The value can be a domain object, anonymous object, or JSON string. - - The value for this DbDoc. - - - - Gets the value of a document property. - - The key path for the property. - - - - - Gets the identifier of the document. - - - - - Gets a value indicating if this document has an identifier (property named _id with a value). - - - - - Sets a property on this document. - - The key of the property. - The new property value. - - - - Returns this document in Json format. - - A Json formatted string. - - - - Compares this DbDoc with another one. - - The DbDoc to compare to. - True if they are equal, false otherwise. - - - - Gets a value that serves as a hash function for a particular type. - - A hash code for the current object. - - - - Represents a collection of documents with a generic type. - - - - - Initializes a new instance of the generic Collection class based on the specified schema - and name. - - The object associated to this collection. - The name of the collection. - - - - Creates an containing the provided generic object. The add - statement can be further modified before execution. - - The generic object to add. - An object containing the object to add. - - - - Defines elements that allow to iterate through the contents of various items. - - - - - Initializes a new instance of the Iterator class. - - - - - This method is not yet implemented. - - - - Exception is always thrown since the body of the method is not yet implemented. - - - - Defines a MySql expression. - - - - - Main class for session operations related to Connector/NET implementation of the X DevAPI. - - - - - Opens a session to the server given or to the first available server if multiple servers were specified. - - The connection string or URI string format. - - A object representing the established session. - Multiple hosts can be specified as part of the which - will enable client side failover when trying to establish a connection. For additional details and syntax - examples refer to the remarks section. - - - - Opens a session to the server given. - - The connection data for the server. - - A object representing the established session. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Enables the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the X protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - A flag indicating if the default port is used in the connection. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets the connection attributes. - - - - - Path to a local file containing certificate revocation lists. - - - - - Gets or sets the compression type between client and server. - - - - - Gets or sets the compression algorithm. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Represents a table column. - - - - - Gets the original column name. - - - - - Gets the alias of the column name. - - - - - Gets the table name the column orginates from. - - - - - Gets the alias of the table name . - - - - - Gets the schema name the column originates from. - - - - - Gets the catalog the schema originates from. - In MySQL protocol this is `def` by default. - - - - - Gets the collation used for this column. - - - - - Gets the character set used for this column. - - - - - Gets the column length. - - - - - Gets the fractional decimal digits for floating point and fixed point numbers. - - - - - Gets the Mysql data type. - - - - - Gets the .NET Clr data type. - - - - - True if it's a signed number. - - - - - True if column is UINT zerofill or BYTES rightpad. - - - - - Initializes a new instance of the Column class. - - - - - Represents a resultset that contains rows of data. - - - - - Gets the columns in this resultset. - - - - - Gets the number of columns in this resultset. - - - - - Gets a list containing the column names in this resultset. - - - - - Gets the rows of this resultset. This collection will be incomplete unless all the rows have been read - either by using the Next method or the Buffer method. - - - - - Gets the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Allows getting the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Returns the index of the given column name. - - The name of the column to find. - The numeric index of column. - - - - Represents a single row of data in a table. - - - - - Gets the value of the row at the given index. - - The column index to retrieve the value. - The value at the index. - - - - Gets the value of the column as a string. - - The name of the column. - The value of the column as a string. - - - - Gets a string based indexer into the row. Returns the value as a CLR type. - - The column index to get. - The CLR value for the column. - - - - Inherits from . Creates a resultset that contains rows of data. - - - - - Represents a resultset that contains rows of data for relational operations. - - - - - Gets a boolean value indicating if this result has data. - - - - - Moves to next resultset. - - True if there is a new resultset, false otherwise. - - - - Represents a sql statement. - - - - - Initializes a new instance of the SqlStament class bassed on the session and sql statement. - - The session the Sql statement belongs to. - The Sql statement. - - - - Gets the current Sql statement. - - - - - Gets the list of parameters associated to this Sql statement. - - - - - Executes the current Sql statement. - - A object with the resultset and execution status. - - - - Binds the parameters values by position. - - The parameter values. - This set with the binded parameters. - - - - Represents a server Table or View. - - - - - Gets a value indicating whether the object is - a View (True) or a Table (False). - - - - - Creates a set with the columns to select. The table select - statement can be further modified before execution. This method is intended to select a set - of table rows. - - The optional column names to select. - A object for select chain operations. - - - - Creates a set with the fileds to insert to. The table - insert statement can be further modified before exeuction. This method is intended to - insert one or multiple rows into a table. - - The list of fields to insert. - A object for insert chain operations. - - - - Creates a . This method is intended to update table rows - values. - - A object for update chain operations. - - - - Creates a . This method is intended to delete rows from a - table. - - A object for delete chain operations. - - - - Returns the number of rows in the table on the server. - - The number of rows. - - - - Verifies if the table exists in the database. - - true if the table exists; otherwise, false. - - - - Represents a chaining table delete statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Executes the delete statement. - - A object containing the results of the delete execution. - - - - Represents a chaining table insert statement. - - - - - Executes the insert statement. - - A object containing the results of the insert statement. - - - - Values to be inserted. - Multiple rows supported. - - The values to be inserted. - This same object. - - - - Represents a chaining table select statement. - - - - - Executes the select statement. - - A object containing the results of the execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the table aggregation. - - The column list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a chaining table update statement. - - - - - Executes the update statement. - - A object ocntaining the results of the update statement execution. - - - - Column and value to be updated. - - Column name. - Value to be updated. - This same object. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a schema or database. - - - - - Session related to current schema. - - - - - Returns a list of all collections in this schema. - - A list representing all found collections. - - - - Returns a list of all tables in this schema. - - A list representing all found tables. - - - - Gets a collection by name. - - The name of the collection to get. - Ensures the collection exists in the schema. - A object matching the given name. - - - - Gets a typed collection object. This is useful for using domain objects. - - The type of collection returned. - The name of collection to get. - A generic object set with the given name. - - - - Gets the given collection as a table. - - The name of the collection. - A object set with the given name. - - - - Gets a table object. Upon return the object may or may not be valid. - - The name of the table object. - A object set with the given name. - - - - Creates a collection. - - The name of the collection to create. - If false, throws an exception if the collection exists. - Collection referente. - - - - Creates a collection including a schema validation. - - The name of the collection to create. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Modify a collection adding or removing schema validation parameters. - - The name of the collection to create. - This object encapsulate the Validation parameters level and schema. - Collection referente. - - - - Drops the given collection. - - The name of the collection to drop. - is null. - - - - Determines if this schema actually exists. - - True if exists, false otherwise. - - - - Represents a single server session. - - - - - Returns a object that can be used to execute the given SQL. - - The SQL to execute. - A object set with the provided SQL. - - - - Sets the schema in the database. - - The schema name to be set. - - - - Executes a query in the database to get the current schema. - - Current database object or null if no schema is selected. - - - - Closes the current session properly after it was closed by the server. - - - - Holder for reflection information generated from mysqlx.proto - - - File descriptor for mysqlx.proto - - - - IDs of messages that can be sent from client to the server - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ClientMessages message type. - - - - IDs of messages that can be sent from server to client - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ServerMessages message type. - - - - NOTICE has to stay at 11 forever - - - - - generic Ok message - - - - Field number for the "msg" field. - - - - generic Error message - - A ``severity`` of ``ERROR`` indicates the current message sequence is - aborted for the given error and the session is ready for more. - - In case of a ``FATAL`` error message the client should not expect - the server to continue handling any further messages and should - close the connection. - - :param severity: severity of the error message - :param code: error-code - :param sql_state: SQL state - :param msg: human readable error message - - - - Field number for the "severity" field. - - - Field number for the "code" field. - - - Field number for the "sql_state" field. - - - Field number for the "msg" field. - - - Container for nested types declared in the Error message type. - - - Holder for reflection information generated from mysqlx_connection.proto - - - File descriptor for mysqlx_connection.proto - - - - a Capability - - a tuple of a ``name`` and a :protobuf:msg:`Mysqlx.Datatypes::Any` - - - - Field number for the "name" field. - - - Field number for the "value" field. - - - - Capabilities - - - - Field number for the "capabilities" field. - - - - get supported connection capabilities and their current state - - :returns: :protobuf:msg:`Mysqlx.Connection::Capabilities` or :protobuf:msg:`Mysqlx::Error` - - - - - sets connection capabilities atomically - - only provided values are changed, other values are left unchanged. - If any of the changes fails, all changes are discarded. - - :precond: active sessions == 0 - :returns: :protobuf:msg:`Mysqlx::Ok` or :protobuf:msg:`Mysqlx::Error` - - - - Field number for the "capabilities" field. - - - - announce to the server that the client wants to close the connection - - it discards any session state of the server - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "uncompressed_size" field. - - - Field number for the "server_messages" field. - - - Field number for the "client_messages" field. - - - Field number for the "payload" field. - - - Holder for reflection information generated from mysqlx_crud.proto - - - File descriptor for mysqlx_crud.proto - - - - DataModel to use for filters, names, ... - - - - - ViewAlgorithm defines how MySQL Server processes the view - - - - - MySQL chooses which algorithm to use - - - - - the text of a statement that refers to the view and the view definition are merged - - - - - the view are retrieved into a temporary table - - - - - ViewSqlSecurity defines the security context in which the view is going to be - executed, this means that VIEW can be executed with current user permissions or - with permissions of the uses who defined the VIEW - - - - - ViewCheckOption limits the write operations done on a `VIEW` - (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE` - - - - - the view WHERE clause is checked, but no underlying views are checked - - - - - the view WHERE clause is checked, then checking recurses to underlying views - - - - - column definition - - - - Field number for the "name" field. - - - - optional - - - - Field number for the "alias" field. - - - - optional - - - - Field number for the "document_path" field. - - - - a projection - - :param source: the expression identifying an element from the source data - which can include a column identifier or any expression - :param alias: optional alias. Required for DOCUMENTs (clients may use - the source string as default) - - - - Field number for the "source" field. - - - - required - - - - Field number for the "alias" field. - - - - optional - - - - - collection - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema" field. - - - - optional - - - - - limit - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - limit expression - - LimitExpr in comparison to Limit, is able to specify that row_count and - offset are placeholders. - This message support expressions of following types Expr/literal/UINT, - Expr/PLACEHOLDER. - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - sort order - - - - Field number for the "expr" field. - - - - required - - - - Field number for the "direction" field. - - - - optional//[ default=ASC ] - - - - Container for nested types declared in the Order message type. - - - - update operations - - :param source: specification of the value to be updated - if data_model is TABLE, a column name may be specified and also a document path, if the column has type JSON - if data_model is DOCUMENT, only document paths are allowed - in both cases, schema and table must be not set - :param operation: the type of operation to be performed - :param value: an expression to be computed as the new value for the operation - - - - Field number for the "source" field. - - - - required - - - - Field number for the "operation" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - Container for nested types declared in the UpdateOperation message type. - - - - only allowed for TABLE - - - - - no value (removes the identified path from a object or array) - - - - - sets the new value on the identified path - - - - - replaces a value if the path exists - - - - - source and value must be documents - - - - - insert the value in the array at the index identified in the source path - - - - - append the value on the array at the identified path - - - - - merge JSON object value with the provided patch expression - - - - - Find Documents/Rows in a Collection/Table - - .. uml:: - - client -> server: Find - ... one or more Resultset ... - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: list of column projections that shall be returned - :param args: values for parameters used in filter expression - :param criteria: filter criteria - :param limit: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :param order: sort-order in which the rows/document shall be returned in - :param grouping: column expression list for aggregation (GROUP BY) - :param grouping_criteria: filter criteria for aggregated groups - :param locking: perform row locking on matches - :param locking_options: additional options how to handle locked rows - :param limit_expr: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "grouping" field. - - - Field number for the "grouping_criteria" field. - - - - optional - - - - Field number for the "locking" field. - - - - optional - - - - Field number for the "locking_options" field. - - - - optional - - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Container for nested types declared in the Find message type. - - - - Lock matching rows against updates - - - - - Lock matching rows so no other transaction can read or write to it - - - - - Do not wait to acquire row lock, fail with an error if a requested row is locked - - - - - Do not wait to acquire a row lock, remove locked rows from the result set - - - - - Insert documents/rows into a collection/table - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: name of the columns to insert data into (empty if data_model is DOCUMENT) - :param row: set of rows to insert into the collection/table (a single expression with a JSON document literal or an OBJECT expression) - :param args: values for parameters used in row expressions - :param upsert: true if this should be treated as an Upsert (that is, update on duplicate key) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "row" field. - - - Field number for the "args" field. - - - Field number for the "upsert" field. - - - - optional//[default = false] - - - - Container for nested types declared in the Insert message type. - - - Field number for the "field" field. - - - - Update documents/rows in a collection/table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param operation: list of operations to be applied. Valid operations will depend on the data_model. - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "operation" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - - Delete documents/rows from a Collection/Table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional//[default = UNDEFINED] - - - - Field number for the "security" field. - - - - optional//[default = DEFINER] - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "replace_existing" field. - - - - optional//[default = false] - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional - - - - Field number for the "security" field. - - - - optional - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "if_exists" field. - - - - optional//[ default = false ] - - - - Holder for reflection information generated from mysqlx_cursor.proto - - - File descriptor for mysqlx_cursor.proto - - - - Open a cursor - - .. uml:: - - client -> server: Open - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, the ID is going to represent new cursor and assigned to it statement - :param stmt: statement which resultset is going to be iterated through the cursor - :param fetch_rows: number of rows which should be retrieved from sequential cursor - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - Container for nested types declared in the Open message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "prepare_execute" field. - - - - optional - - - - Container for nested types declared in the OneOfMessage message type. - - - - Fetch next portion of data from a cursor - - .. uml:: - - client -> server: Fetch - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be already open - :param fetch_rows: number of rows which should be retrieved from sequential cursor - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - - Close cursor - - .. uml:: - - client -> server: Close - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be allocated/open - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "cursor_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_datatypes.proto - - - File descriptor for mysqlx_datatypes.proto - - - - a scalar - - - - Field number for the "type" field. - - - - required - - - - Field number for the "v_signed_int" field. - - - Field number for the "v_unsigned_int" field. - - - Field number for the "v_octets" field. - - - - 4 is unused, was Null which doesn't have a storage anymore - - - - Field number for the "v_double" field. - - - Field number for the "v_float" field. - - - Field number for the "v_bool" field. - - - Field number for the "v_string" field. - - - Enum of possible cases for the "DefaultOneOf" oneof. - - - Container for nested types declared in the Scalar message type. - - - - a string with a charset/collation - - - - Field number for the "value" field. - - - - required - - - - Field number for the "collation" field. - - - Enum of possible cases for the "String_present" oneof. - - - - an opaque octet sequence, with an optional content_type - See ``Mysqlx.Resultset.ColumnMetadata`` for list of known values. - - - - Field number for the "value" field. - - - - required - - - - Field number for the "content_type" field. - - - - a object - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array - - - - Field number for the "value" field. - - - - a helper to allow all field types - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scalar" field. - - - Field number for the "obj" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Any message type. - - - Holder for reflection information generated from mysqlx_expect.proto - - - File descriptor for mysqlx_expect.proto - - - - open an Expect block and set/unset the conditions that have to be fulfilled - - if any of the conditions fail, all enclosed messages will fail with - a Mysqlx.Error message. - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Field number for the "op" field. - - - - [ default = EXPECT_CTX_COPY_PREV ];//optional - - - - Field number for the "cond" field. - - - Container for nested types declared in the Open message type. - - - - copy the operations from the parent Expect-block - - - - - start with a empty set of operations - - - - Field number for the "condition_key" field. - - - - required - - - - Field number for the "condition_value" field. - - - - optional - - - - Field number for the "op" field. - - - - [ default = EXPECT_OP_SET ];//optional - - - - Container for nested types declared in the Condition message type. - - - - Change error propagation behaviour - - - - - Check if X Protocol field exists - - - - - Check if X Protocol support document _id generation - - - - - set the condition - - set, if not set - overwrite, if set - - - - - unset the condition - - - - - close a Expect block - - closing a Expect block restores the state of the previous Expect block - for the following messages - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Holder for reflection information generated from mysqlx_expr.proto - - - File descriptor for mysqlx_expr.proto - - - - Expressions - - the "root" of the expression tree - - .. productionlist:: - expr: `operator` | - : `identifier` | - : `function_call` | - : variable | - : `literal` | - : placeholder - - If expression type is PLACEHOLDER then it refers to the value of a parameter - specified when executing a statement (see `args` field of `StmtExecute` command). - Field `position` (which must be present for such an expression) gives 0-based - position of the parameter in the parameter list. - - - - Field number for the "type" field. - - - - required - - - - Field number for the "identifier" field. - - - Field number for the "variable" field. - - - Field number for the "literal" field. - - - Field number for the "function_call" field. - - - Field number for the "operator" field. - - - Field number for the "position" field. - - - Field number for the "object" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Expr message type. - - - - identifier: name, schame.name - - .. productionlist:: - identifier: string "." string | - : string - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema_name" field. - - - - DocumentPathItem - - .. productionlist:: - document_path: path_item | path_item document_path - path_item : member | array_index | "**" - member : "." string | "." "*" - array_index : "[" number "]" | "[" "*" "]" - - - - Field number for the "type" field. - - - - required - - - - Field number for the "value" field. - - - Field number for the "index" field. - - - Container for nested types declared in the DocumentPathItem message type. - - - - .member - - - - - .* - - - - - [index] - - - - - [*] - - - - - ** - - - - - col_identifier (table): col@doc_path, tbl.col@doc_path col, tbl.col, schema.tbl.col - col_identifier (document): doc_path - - .. productionlist:: - col_identifier: string "." string "." string | - : string "." string | - : string | - : string "." string "." string "@" document_path | - : string "." string "@" document_path | - : string "@" document_path | - : document_path - document_path: member | arrayLocation | doubleAsterisk - member = "." string | "." "*" - arrayLocation = "[" index "]" | "[" "*" "]" - doubleAsterisk = "**" - - - - Field number for the "document_path" field. - - - Field number for the "name" field. - - - Field number for the "table_name" field. - - - Field number for the "schema_name" field. - - - - function call: ``func(a, b, "1", 3)`` - - .. productionlist:: - function_call: `identifier` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - operator: ``<<(a, b)`` - - .. note:: - - Non-authoritative list of operators implemented (case sensitive): - - Nullary - * ``*`` - * ``default`` - - Unary - * ``!`` - * ``sign_plus`` - * ``sign_minus`` - * ``~`` - - Binary - * ``&&`` - * ``||`` - * ``xor`` - * ``==`` - * ``!=`` - * ``>`` - * ``>=`` - * ``<`` - * ``<=`` - * ``&`` - * ``|`` - * ``^`` - * ``<<`` - * ``>>`` - * ``+`` - * ``-`` - * ``*`` - * ``/`` - * ``div`` - * ``%`` - * ``is`` - * ``is_not`` - * ``regexp`` - * ``not_regexp`` - * ``like`` - * ``not_like`` - * ``cast`` - * ``cont_in`` - * ``not_cont_in`` - - Using special representation, with more than 2 params - * ``in`` (param[0] IN (param[1], param[2], ...)) - * ``not_in`` (param[0] NOT IN (param[1], param[2], ...)) - - Ternary - * ``between`` - * ``between_not`` - * ``date_add`` - * ``date_sub`` - - Units for date_add/date_sub - * ``MICROSECOND`` - * ``SECOND`` - * ``MINUTE`` - * ``HOUR`` - * ``DAY`` - * ``WEEK`` - * ``MONTH`` - * ``QUARTER`` - * ``YEAR`` - * ``SECOND_MICROSECOND`` - * ``MINUTE_MICROSECOND`` - * ``MINUTE_SECOND`` - * ``HOUR_MICROSECOND`` - * ``HOUR_SECOND`` - * ``HOUR_MINUTE`` - * ``DAY_MICROSECOND`` - * ``DAY_SECOND`` - * ``DAY_MINUTE`` - * ``DAY_HOUR`` - - Types for cast - * ``BINARY[(N)]`` - * ``CHAR[(N)]`` - * ``DATE`` - * ``DATETIME`` - * ``DECIMAL[(M[,D])]`` - * ``JSON`` - * ``SIGNED [INTEGER]`` - * ``TIME`` - * ``UNSIGNED [INTEGER]`` - - .. productionlist:: - operator: `name` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - an object (with expression values) - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array of expressions - - - - Field number for the "value" field. - - - Holder for reflection information generated from mysqlx_notice.proto - - - File descriptor for mysqlx_notice.proto - - - - Common Frame for all Notices - - ===================================================== ===== - .type value - ===================================================== ===== - :protobuf:msg:`Mysqlx.Notice::Warning` 1 - :protobuf:msg:`Mysqlx.Notice::SessionVariableChanged` 2 - :protobuf:msg:`Mysqlx.Notice::SessionStateChanged` 3 - ===================================================== ===== - - :param type: the type of the payload - :param payload: the payload of the notification - :param scope: global or local notification - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scope" field. - - - - [ default = GLOBAL ];//optional - - - - Field number for the "payload" field. - - - - optional - - - - Container for nested types declared in the Frame message type. - - - - Server-side warnings and notes - - ``.scope`` == ``local`` - ``.level``, ``.code`` and ``.msg`` map the content of - - .. code-block:: sql - - SHOW WARNINGS - - ``.scope`` == ``global`` - (undefined) will be used for global, unstructured messages like: - - * server is shutting down - * a node disconnected from group - * schema or table dropped - - ========================================== ======================= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ======================= - ``.type`` 1 - ``.scope`` ``local`` or ``global`` - ========================================== ======================= - - :param level: warning level: Note or Warning - :param code: warning code - :param msg: warning message - - - - Field number for the "level" field. - - - - [ default = WARNING ];//optional - - - - Field number for the "code" field. - - - - required - - - - Field number for the "msg" field. - - - - required - - - - Container for nested types declared in the Warning message type. - - - - Notify clients about changes to the current session variables - - Every change to a variable that is accessible through: - - .. code-block:: sql - - SHOW SESSION VARIABLES - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 2 - ``.scope`` ``local`` - ========================================== ========= - - :param namespace: namespace that param belongs to - :param param: name of the variable - :param value: the changed value of param - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - - Notify clients about changes to the internal session state - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 3 - ``.scope`` ``local`` - ========================================== ========= - - :param param: parameter key - :param value: updated value - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - Container for nested types declared in the SessionStateChanged message type. - - - - .. more to be added - - - - Holder for reflection information generated from mysqlx_prepare.proto - - - File descriptor for mysqlx_prepare.proto - - - - Prepare a new statement - - .. uml:: - - client -> server: Prepare - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, which is going to identify the result of preparation - :param stmt: defines one of following messages to be prepared - Crud.Find, Crud.Insert, Crud.Delete, Crud.Upsert, Sql.StmtExecute - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Container for nested types declared in the Prepare message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "find" field. - - - - optional - - - - Field number for the "insert" field. - - - - optional - - - - Field number for the "update" field. - - - - optional - - - - Field number for the "delete" field. - - - - optional - - - - Field number for the "stmt_execute" field. - - - - optional - - - - Enum of possible cases for the "Type_present" oneof. - - - Container for nested types declared in the OneOfMessage message type. - - - - Determine which of optional fields was set by the client - (Workaround for missing "oneof" keyword in pb2.5) - - - - - Execute already prepared statement - - .. uml:: - - client -> server: Execute - alt Success - ... Resultsets... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :param args_list: Arguments to bind to the prepared statement - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - [ default = false ]; optional - - - - - Deallocate already prepared statement - - Deallocating the statement. - - .. uml:: - - client -> server: Deallocate - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_resultset.proto - - - File descriptor for mysqlx_resultset.proto - - - - a hint about the higher-level encoding of a BYTES field - - ====== ====== =========== - type value description - ====== ====== =========== - BYTES 0x0001 GEOMETRY (WKB encoding) - BYTES 0x0002 JSON (text encoding) - BYTES 0x0003 XML (text encoding) - ====== ====== =========== - - .. note:: - this list isn't comprehensive. As guideline: the field's value is expected - to pass a validator check on client and server if this field is set. - If the server adds more internal datatypes that rely on BLOB storage - like image manipulation, seeking into complex types in BLOBs, ... more - types will be added. - - - - - a hint about the higher-level encoding of a DATETIME field - - ====== ====== =========== - type value description - ======== ====== =========== - DATE 0x0001 DATETIME contains only date part - DATETIME 0x0002 DATETIME contains both date and time parts - ====== ====== =========== - - - - - resultsets are finished, OUT paramset is next - - - - - resultset and out-params are finished, but more resultsets available - - - - - all resultsets are finished - - - - - cursor is opened still the execution of PrepFetch or PrepExecute ended - - - - - meta data of a Column - - .. note:: the encoding used for the different ``bytes`` fields in the meta data is externally - controlled. - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html - - .. note:: - The server may not set the ``original_{table|name}`` fields if they are equal to the plain - ``{table|name}`` field. - - A client has to reconstruct it like:: - - if .original_name is empty and .name is not empty: - .original_name = .name - - if .original_table is empty and .table is not empty: - .original_table = .table - - .. note:: - ``compact metadata format`` can be requested by the client. In that case only ``.type`` is set and - all other fields are empty. - - :param type: - .. table:: Expected Datatype of Mysqlx.Resultset.Row per SQL Type for non NULL values - - ================= ============ ======= ========== ====== ======== - SQL Type .type .length .frac_dig .flags .charset - ================= ============ ======= ========== ====== ======== - TINY SINT x - TINY UNSIGNED UINT x x - SHORT SINT x - SHORT UNSIGNED UINT x x - INT24 SINT x - INT24 UNSIGNED UINT x x - INT SINT x - INT UNSIGNED UINT x x - LONGLONG SINT x - LONGLONG UNSIGNED UINT x x - DOUBLE DOUBLE x x x - FLOAT FLOAT x x x - DECIMAL DECIMAL x x x - VARCHAR,CHAR,... BYTES x x x - GEOMETRY BYTES - TIME TIME x - DATE DATETIME x - DATETIME DATETIME x - YEAR UINT x x - TIMESTAMP DATETIME x - SET SET x - ENUM ENUM x - NULL BYTES - BIT BIT x - ================= ============ ======= ========== ====== ======== - - .. note:: the SQL "NULL" value is sent as an empty field value in :protobuf:msg:`Mysqlx.Resultset::Row` - .. seealso:: protobuf encoding of primitive datatypes are decribed in https://developers.google.com/protocol-buffers/docs/encoding - - SINT - - ``.length`` - maximum number of displayable decimal digits (including minus sign) of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - =============== == - SQL Type max digits per type - =============== == - TINY SIGNED 4 - SHORT SIGNED 6 - INT24 SIGNED 8 - INT SIGNED 11 - LONGLONG SIGNED 20 - =============== == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded signed 64 integer - - UINT - - ``.flags & 1`` (zerofill) - the client has to left pad with 0's up to .length - - ``.length`` - maximum number of displayable decimal digits of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - ================= == - SQL Type max digits per type - ================= == - TINY UNSIGNED 3 - SHORT UNSIGNED 5 - INT24 UNSIGNED 8 - INT UNSIGNED 10 - LONGLONG UNSIGNED 20 - ================= == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - BIT - - ``.length`` - maximum number of displayable binary digits - - .. note:: valid range for M of the ``BIT`` type is 1 - 64 - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - DOUBLE - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'double' - - FLOAT - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'float' - - BYTES, ENUM - BYTES is used for all opaque byte strings that may have a charset - - * TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB - * TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT - * VARCHAR, VARBINARY - * CHAR, BINARY - * ENUM - - ``.length`` - the maximum length of characters of the underlying type - - ``.flags & 1`` (rightpad) - if the length of the field is less than ``.length``, the receiver is - supposed to add padding characters to the right end of the string. - If the ``.charset`` is "binary", the padding character is ``0x00``, - otherwise it is a space character as defined by that character set. - - ============= ======= ======== ======= - SQL Type .length .charset .flags - ============= ======= ======== ======= - TINYBLOB 256 binary - BLOB 65535 binary - VARCHAR(32) 32 utf8 - VARBINARY(32) 32 utf8_bin - BINARY(32) 32 binary rightpad - CHAR(32) 32 utf8 rightpad - ============= ======= ======== ======= - - ``value`` - sequence of bytes with added one extra '\0' byte at the end. To obtain the - original string, the extra '\0' should be removed. - .. note:: the length of the string can be acquired with protobuf's field length() method - length of sequence-of-bytes = length-of-field - 1 - .. note:: the extra byte allows to distinguish between a NULL and empty byte sequence - - TIME - A time value. - - ``value`` - the following bytes sequence: - - ``| negate [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * negate - one byte, should be one of: 0x00 for "+", 0x01 for "-" - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. seealso:: protobuf encoding in https://developers.google.com/protocol-buffers/docs/encoding - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - Example: 0x00 -> +00:00:00.000000 - - DATETIME - A date or date and time value. - - ``value`` - a sequence of variants, arranged as follows: - - ``| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * year - variable length encoded unsigned64 value for the year - * month - variable length encoded unsigned64 value for the month - * day - variable length encoded unsigned64 value for the day - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - ``.flags & 1`` (timestamp) - - ============= ======= - SQL Type .flags - ============= ======= - DATETIME - TIMESTAMP 1 - - DECIMAL - An arbitrary length number. The number is encoded as a single byte - indicating the position of the decimal point followed by the Packed BCD - encoded number. Packed BCD is used to simplify conversion to and - from strings and other native arbitrary precision math datatypes. - .. seealso:: packed BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal - - ``.length`` - maximum number of displayable decimal digits (*excluding* the decimal point and sign, but including ``.fractional_digits``) - - .. note:: should be in the range of 1 - 65 - - ``.fractional_digits`` - is the decimal digits to display out of length - - .. note:: should be in the range of 0 - 30 - - ``value`` - the following bytes sequence: - - ``| scale | BCD | sign | [0x0] |`` - - * scale - 8bit scale value (number of decimal digit after the '.') - * BCD - BCD encoded digits (4 bits for each digit) - * sign - sign encoded on 4 bits (0xc = "+", 0xd = "-") - * 0x0 - last 4bits if length(digits) % 2 == 0 - - Example: x04 0x12 0x34 0x01 0xd0 -> -12.3401 - - SET - A list of strings representing a SET of values. - - ``value`` - A sequence of 0 or more of protobuf's bytes (length prepended octets) or one of - the special sequences with a predefined meaning listed below. - - Example (length of the bytes array shown in brackets): - * ``[0]`` - the NULL value - * ``[1] 0x00`` - a set containing a blank string '' - * ``[1] 0x01`` - this would be an invalid value, but is to be treated as the empty set - * ``[2] 0x01 0x00`` - a set with a single item, which is the '\0' character - * ``[8] 0x03 F O O 0x03 B A R`` - a set with 2 items: FOO,BAR - - :param name: name of the column - :param original_name: name of the column before an alias was applied - :param table: name of the table the column orginates from - :param original_table: name of the table the column orginates from before an alias was applied - :param schema: schema the column originates from - :param catalog: - catalog the schema originates from - - .. note:: - as there is current no support for catalogs in MySQL, don't expect this field to be set. - In the MySQL C/S protocol the field had the value ``def`` all the time. - - :param fractional_digits: displayed factional decimal digits for floating point and fixed point numbers - :param length: maximum count of displayable characters of .type - :param flags: - ``.type`` specific flags - - ======= ====== =========== - type value description - ======= ====== =========== - UINT 0x0001 zerofill - DOUBLE 0x0001 unsigned - FLOAT 0x0001 unsigned - DECIMAL 0x0001 unsigned - BYTES 0x0001 rightpad - ======= ====== =========== - - ====== ================ - value description - ====== ================ - 0x0010 NOT_NULL - 0x0020 PRIMARY_KEY - 0x0040 UNIQUE_KEY - 0x0080 MULTIPLE_KEY - 0x0100 AUTO_INCREMENT - ====== ================ - - default: 0 - :param content_type: - a hint about the higher-level encoding of a BYTES field, for more informations - please refer to Mysqlx.Resultset.ContentType_BYTES enum. - - - - Field number for the "type" field. - - - - datatype of the field in a row - - - - Field number for the "name" field. - - - Field number for the "original_name" field. - - - Field number for the "table" field. - - - Field number for the "original_table" field. - - - Field number for the "schema" field. - - - Field number for the "catalog" field. - - - Field number for the "collation" field. - - - Field number for the "fractional_digits" field. - - - Field number for the "length" field. - - - Field number for the "flags" field. - - - Field number for the "content_type" field. - - - Container for nested types declared in the ColumnMetaData message type. - - - - Row in a Resultset - - a row is represented as a list of fields encoded as byte blobs. - Blob of size 0 represents the NULL value. Otherwise, if it contains at least - one byte, it encodes a non-null value of the field using encoding appropriate for the - type of the value given by ``ColumnMetadata``, as specified - in the :protobuf:msg:`Mysqlx.Resultset::ColumnMetaData` description. - - - - Field number for the "field" field. - - - Holder for reflection information generated from mysqlx_session.proto - - - File descriptor for mysqlx_session.proto - - - - the initial message send from the client to the server to start the - authentication proccess - - :param mech_name: authentication mechanism name - :param auth_data: authentication data - :param initial_response: initial response - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "mech_name" field. - - - - required - - - - Field number for the "auth_data" field. - - - Field number for the "initial_response" field. - - - - send by client or server after a :protobuf:msg:`Mysqlx.Session::AuthenticateStart` to - exchange more auth data - - :param auth_data: authentication data - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "auth_data" field. - - - - required - - - - - sent by the server after successful authentication - - :param auth_data: authentication data - - - - Field number for the "auth_data" field. - - - - reset the current session - param keep_open: if is true the session will be reset, but stays authenticated. - otherwise, the session will be closed and needs to be authenticated again. - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "keep_open" field. - - - - close the current session - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Holder for reflection information generated from mysqlx_sql.proto - - - File descriptor for mysqlx_sql.proto - - - - execute a statement in the given namespace - - .. uml:: - - client -> server: StmtExecute - ... zero or more Resultsets ... - server --> client: StmtExecuteOk - - Notices: - This message may generate a notice containing WARNINGs generated by its execution. - This message may generate a notice containing INFO messages generated by its execution. - - :param namespace: namespace of the statement to be executed - :param stmt: statement that shall be executed. - :param args: values for wildcard replacements - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :returns: - * zero or one :protobuf:msg:`Mysqlx.Resultset::` followed by :protobuf:msg:`Mysqlx.Sql::StmtExecuteOk` - - - - Field number for the "namespace" field. - - - - optional [ default = "sql" ] - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - optional [ default = false ] - - - - - statement executed successful - - -
-
diff --git a/AUTS_DataService/bin/Debug/Newtonsoft.Json.dll b/AUTS_DataService/bin/Debug/Newtonsoft.Json.dll deleted file mode 100644 index 7af125a..0000000 Binary files a/AUTS_DataService/bin/Debug/Newtonsoft.Json.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/Newtonsoft.Json.xml b/AUTS_DataService/bin/Debug/Newtonsoft.Json.xml deleted file mode 100644 index 008e0ca..0000000 --- a/AUTS_DataService/bin/Debug/Newtonsoft.Json.xml +++ /dev/null @@ -1,11305 +0,0 @@ - - - - Newtonsoft.Json - - - - - Represents a BSON Oid (object id). - - - - - Gets or sets the value of the Oid. - - The value of the Oid. - - - - Initializes a new instance of the class. - - The Oid value. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. - - - - - Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. - - - true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. - - - - - Gets or sets a value indicating whether the root object will be read as a JSON array. - - - true if the root object will be read as a JSON array; otherwise, false. - - - - - Gets or sets the used when reading values from BSON. - - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. - - - - - Gets or sets the used when writing values to BSON. - When set to no conversion will occur. - - The used when writing values to BSON. - - - - Initializes a new instance of the class. - - The to write to. - - - - Initializes a new instance of the class. - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. - - - - - Writes the end. - - The token. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes the beginning of a JSON array. - - - - - Writes the beginning of a JSON object. - - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value that represents a BSON object id. - - The Object ID value to write. - - - - Writes a BSON regex. - - The regex pattern. - The regex options. - - - - Specifies how constructors are used when initializing objects during deserialization by the . - - - - - First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. - - - - - Json.NET will use a non-public default constructor before falling back to a parameterized constructor. - - - - - Converts a binary value to and from a base 64 string value. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Creates a custom object. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Creates an object which will then be populated by the serializer. - - Type of the object. - The created object. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Provides a base class for converting a to and from JSON. - - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a F# discriminated union type to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an Entity Framework to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). - - - - - Gets or sets the date time styles used when converting a date to and from JSON. - - The date time styles used when converting a date to and from JSON. - - - - Gets or sets the date time format used when converting a date to and from JSON. - - The date time format used when converting a date to and from JSON. - - - - Gets or sets the culture used when converting a date to and from JSON. - - The culture used when converting a date to and from JSON. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from its name string value. - - - - - Gets or sets a value indicating whether the written enum text should be camel case. - The default value is false. - - true if the written enum text will be camel case; otherwise, false. - - - - Gets or sets the naming strategy used to resolve how enum text is written. - - The naming strategy used to resolve how enum text is written. - - - - Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. - The default value is true. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - true if the written enum text will be camel case; otherwise, false. - - - - Initializes a new instance of the class. - - The naming strategy used to resolve how enum text is written. - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from Unix epoch time - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from a string (e.g. "1.2.3.4"). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts XML to and from JSON. - - - - - Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. - - The name of the deserialized root element. - - - - Gets or sets a value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - true if the array attribute is written to the XML; otherwise, false. - - - - Gets or sets a value indicating whether to write the root JSON object. - - true if the JSON root object is omitted; otherwise, false. - - - - Gets or sets a value indicating whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - true if special characters are encoded; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The calling serializer. - The value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Checks if the is a namespace attribute. - - Attribute name to test. - The attribute name prefix if it has one, otherwise an empty string. - true if attribute name is for a namespace attribute, otherwise false. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Specifies how dates are formatted when writing JSON text. - - - - - Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". - - - - - Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". - - - - - Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. - - - - - Date formatted strings are not parsed to a date type and are read as strings. - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Specifies how to treat the time value when converting between string and . - - - - - Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. - - - - - Treat as a UTC. If the object represents a local time, it is converted to a UTC. - - - - - Treat as a local time if a is being converted to a string. - If a string is being converted to , convert to a local time if a time zone is specified. - - - - - Time zone information should be preserved when converting. - - - - - The default JSON name table implementation. - - - - - Initializes a new instance of the class. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Adds the specified string into name table. - - The string to add. - This method is not thread-safe. - The resolved string. - - - - Specifies default value handling options for the . - - - - - - - - - Include members where the member value is the same as the member's default value when serializing objects. - Included members are written to JSON. Has no effect when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - so that it is not written to JSON. - This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, - decimals and floating point numbers; and false for booleans). The default value ignored can be changed by - placing the on the property. - - - - - Members with a default value but no JSON will be set to their default value when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - and set members to their default value when deserializing. - - - - - Specifies float format handling options when writing special floating point numbers, e.g. , - and with . - - - - - Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". - - - - - Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. - Note that this will produce non-valid JSON. - - - - - Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. - - - - - Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Floating point numbers are parsed to . - - - - - Floating point numbers are parsed to . - - - - - Specifies formatting options for the . - - - - - No special formatting is applied. This is the default. - - - - - Causes child objects to be indented according to the and settings. - - - - - Provides an interface for using pooled arrays. - - The array type content. - - - - Rent an array from the pool. This array must be returned when it is no longer needed. - - The minimum required length of the array. The returned array may be longer. - The rented array from the pool. This array must be returned when it is no longer needed. - - - - Return an array to the pool. - - The array that is being returned. - - - - Provides an interface to enable a class to return line and position information. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - The current line number or 0 if no line information is available (for example, when returns false). - - - - Gets the current line position. - - The current line position or 0 if no line information is available (for example, when returns false). - - - - Instructs the how to serialize the collection. - - - - - Gets or sets a value indicating whether null items are allowed in the collection. - - true if null items are allowed in the collection; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with a flag indicating whether the array can contain null items. - - A flag indicating whether the array can contain null items. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to use the specified constructor when deserializing that object. - - - - - Instructs the how to serialize the object. - - - - - Gets or sets the id. - - The id. - - - - Gets or sets the title. - - The title. - - - - Gets or sets the description. - - The description. - - - - Gets or sets the collection's items converter. - - The collection's items converter. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets a value that indicates whether to preserve object references. - - - true to keep object reference; otherwise, false. The default is false. - - - - - Gets or sets a value that indicates whether to preserve collection's items references. - - - true to keep collection's items object references; otherwise, false. The default is false. - - - - - Gets or sets the reference loop handling used when serializing the collection's items. - - The reference loop handling. - - - - Gets or sets the type name handling used when serializing the collection's items. - - The type name handling. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Provides methods for converting between .NET types and JSON types. - - - - - - - - Gets or sets a function that creates default . - Default settings are automatically used by serialization methods on , - and and on . - To serialize without using any default settings create a with - . - - - - - Represents JavaScript's boolean value true as a string. This field is read-only. - - - - - Represents JavaScript's boolean value false as a string. This field is read-only. - - - - - Represents JavaScript's null as a string. This field is read-only. - - - - - Represents JavaScript's undefined as a string. This field is read-only. - - - - - Represents JavaScript's positive infinity as a string. This field is read-only. - - - - - Represents JavaScript's negative infinity as a string. This field is read-only. - - - - - Represents JavaScript's NaN as a string. This field is read-only. - - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - The time zone handling when the date is converted to a string. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - The string escape handling. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Serializes the specified object to a JSON string. - - The object to serialize. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting. - - The object to serialize. - Indicates how the output should be formatted. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a collection of . - - The object to serialize. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting and a collection of . - - The object to serialize. - Indicates how the output should be formatted. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Deserializes the JSON to a .NET object. - - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to a .NET object using . - - The JSON to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The JSON to deserialize. - The of object being deserialized. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The type of the object to deserialize to. - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the given anonymous type. - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the given anonymous type using . - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The type of the object to deserialize to. - The JSON to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The type of the object to deserialize to. - The object to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The JSON to deserialize. - The type of the object to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The JSON to deserialize. - The type of the object to deserialize to. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Populates the object with values from the JSON string. - - The JSON to populate values from. - The target object to populate values onto. - - - - Populates the object with values from the JSON string using . - - The JSON to populate values from. - The target object to populate values onto. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - - - - Serializes the to a JSON string. - - The node to serialize. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to serialize. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Serializes the to a JSON string. - - The node to convert to JSON. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to convert to JSON. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Converts an object to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can read JSON. - - true if this can read JSON; otherwise, false. - - - - Gets a value indicating whether this can write JSON. - - true if this can write JSON; otherwise, false. - - - - Converts an object to and from JSON. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. If there is no existing value then null will be used. - The existing value has a value. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Instructs the to use the specified when serializing the member or class. - - - - - Gets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - - - - - Initializes a new instance of the class. - - Type of the . - - - - Initializes a new instance of the class. - - Type of the . - Parameter list to use when constructing the . Can be null. - - - - Represents a collection of . - - - - - Instructs the how to serialize the collection. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Instructs the to deserialize properties with no matching class member into the specified collection - and write values during serialization. - - - - - Gets or sets a value that indicates whether to write extension data when serializing the object. - - - true to write extension data when serializing the object; otherwise, false. The default is true. - - - - - Gets or sets a value that indicates whether to read extension data when deserializing the object. - - - true to read extension data when deserializing the object; otherwise, false. The default is true. - - - - - Initializes a new instance of the class. - - - - - Instructs the not to serialize the public field or public read/write property value. - - - - - Base class for a table of atomized string objects. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Instructs the how to serialize the object. - - - - - Gets or sets the member serialization. - - The member serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified member serialization. - - The member serialization. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to always serialize the member with the specified name. - - - - - Gets or sets the type used when serializing the property's collection items. - - The collection's items type. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the null value handling used when serializing this property. - - The null value handling. - - - - Gets or sets the default value handling used when serializing this property. - - The default value handling. - - - - Gets or sets the reference loop handling used when serializing this property. - - The reference loop handling. - - - - Gets or sets the object creation handling used when deserializing this property. - - The object creation handling. - - - - Gets or sets the type name handling used when serializing this property. - - The type name handling. - - - - Gets or sets whether this property's value is serialized as a reference. - - Whether this property's value is serialized as a reference. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets a value indicating whether this property is required. - - - A value indicating whether this property is required. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified name. - - Name of the property. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously skips the children of the current token. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Specifies the state of the reader. - - - - - A read method has not been called. - - - - - The end of the file has been reached successfully. - - - - - Reader is at a property. - - - - - Reader is at the start of an object. - - - - - Reader is in an object. - - - - - Reader is at the start of an array. - - - - - Reader is in an array. - - - - - The method has been called. - - - - - Reader has just read a value. - - - - - Reader is at the start of a constructor. - - - - - Reader is in a constructor. - - - - - An error occurred that prevents the read operation from continuing. - - - - - The end of the file has been reached successfully. - - - - - Gets the current reader state. - - The current reader state. - - - - Gets or sets a value indicating whether the source should be closed when this reader is closed. - - - true to close the source when this reader is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether multiple pieces of JSON content can - be read from a continuous stream without erroring. - - - true to support reading multiple pieces of JSON content; otherwise false. - The default is false. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - Gets or sets how time zones are handled when reading JSON. - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Gets or sets how custom date formatted strings are parsed when reading JSON. - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets the type of the current JSON token. - - - - - Gets the text value of the current JSON token. - - - - - Gets the .NET type for the current JSON token. - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets or sets the culture used when reading JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Reads the next JSON token from the source. - - true if the next token was read successfully; false if there are no more tokens to read. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Skips the children of the current token. - - - - - Sets the current token. - - The new token. - - - - Sets the current token and value. - - The new token. - The value. - - - - Sets the current token and value. - - The new token. - The value. - A flag indicating whether the position index inside an array should be updated. - - - - Sets the state based on current token type. - - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Changes the reader's state to . - If is set to true, the source is also closed. - - - - - The exception thrown when an error occurs while reading JSON text. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Instructs the to always serialize the member, and to require that the member has a value. - - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Serializes and deserializes objects into and from the JSON format. - The enables you to control how objects are encoded into JSON. - - - - - Occurs when the errors during serialization and deserialization. - - - - - Gets or sets the used by the serializer when resolving references. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - - - - Gets or sets how reference loops (e.g. a class referencing itself) is handled. - The default value is . - - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets a collection that will be used during serialization. - - Collection that will be used during serialization. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. - The default value is false. - - - true if there will be a check for additional JSON content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Creates a new instance. - The will not use default settings - from . - - - A new instance. - The will not use default settings - from . - - - - - Creates a new instance using the specified . - The will not use default settings - from . - - The settings to be applied to the . - - A new instance using the specified . - The will not use default settings - from . - - - - - Creates a new instance. - The will use default settings - from . - - - A new instance. - The will use default settings - from . - - - - - Creates a new instance using the specified . - The will use default settings - from as well as the specified . - - The settings to be applied to the . - - A new instance using the specified . - The will use default settings - from as well as the specified . - - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Deserializes the JSON structure contained by the specified . - - The that contains the JSON structure to deserialize. - The being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The type of the object to deserialize. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is Auto to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Specifies the settings on a object. - - - - - Gets or sets how reference loops (e.g. a class referencing itself) are handled. - The default value is . - - Reference loop handling. - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - Missing member handling. - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - Null value handling. - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - The default value handling. - - - - Gets or sets a collection that will be used during serialization. - - The converters. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - The preserve references handling. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - The type name handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - The contract resolver. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets the used by the serializer when resolving references. - - The reference resolver. - - - - Gets or sets a function that creates the used by the serializer when resolving references. - - A function that creates the used by the serializer when resolving references. - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the error handler called during serialization and deserialization. - - The error handler called during serialization and deserialization. - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets a value indicating whether there will be a check for additional content after deserializing an object. - The default value is false. - - - true if there will be a check for additional content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Represents a reader that provides fast, non-cached, forward-only access to JSON text data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Initializes a new instance of the class with the specified . - - The containing the JSON data to read. - - - - Gets or sets the reader's property name table. - - - - - Gets or sets the reader's character buffer pool. - - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - - The current line number or 0 if no line information is available (for example, returns false). - - - - - Gets the current line position. - - - The current line position or 0 if no line information is available (for example, returns false). - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Gets or sets the writer's character array pool. - - - - - Gets or sets how many s to write for each level in the hierarchy when is set to . - - - - - Gets or sets which character to use to quote attribute values. - - - - - Gets or sets which character to use for indenting when is set to . - - - - - Gets or sets a value indicating whether object names will be surrounded with quotes. - - - - - Initializes a new instance of the class using the specified . - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying . - - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the specified end token. - - The end token to write. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Specifies the type of JSON token. - - - - - This is returned by the if a read method has not been called. - - - - - An object start token. - - - - - An array start token. - - - - - A constructor start token. - - - - - An object property name. - - - - - A comment. - - - - - Raw JSON. - - - - - An integer. - - - - - A float. - - - - - A string. - - - - - A boolean. - - - - - A null token. - - - - - An undefined token. - - - - - An object end token. - - - - - An array end token. - - - - - A constructor end token. - - - - - A Date. - - - - - Byte data. - - - - - - Represents a reader that provides validation. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Sets an event handler for receiving schema validation errors. - - - - - Gets the text value of the current JSON token. - - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - - Gets the type of the current JSON token. - - - - - - Gets the .NET type for the current JSON token. - - - - - - Initializes a new instance of the class that - validates the content returned from the given . - - The to read from while validating. - - - - Gets or sets the schema. - - The schema. - - - - Gets the used to construct this . - - The specified in the constructor. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a []. - - - A [] or null if the next JSON token is null. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously ets the state of the . - - The being written. - The value being written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Gets or sets a value indicating whether the destination should be closed when this writer is closed. - - - true to close the destination when this writer is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. - - - true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. - - - - - Gets the top. - - The top. - - - - Gets the state of the writer. - - - - - Gets the path of the writer. - - - - - Gets or sets a value indicating how JSON text output should be formatted. - - - - - Gets or sets how dates are written to JSON text. - - - - - Gets or sets how time zones are handled when writing JSON text. - - - - - Gets or sets how strings are escaped when writing JSON text. - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written to JSON text. - - - - - Gets or sets how and values are formatted when writing JSON text. - - - - - Gets or sets the culture used when writing JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the destination and also flushes the destination. - - - - - Closes this writer. - If is set to true, the destination is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the end of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the end of an array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end constructor. - - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes the end of the current JSON object or array. - - - - - Writes the current token and its children. - - The to read the token from. - - - - Writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - - - - Writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - - - - Writes the token. - - The to write. - - - - Writes the specified end token. - - The end token to write. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON without changing the writer's state. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Sets the state of the . - - The being written. - The value being written. - - - - The exception thrown when an error occurs while writing JSON text. - - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Specifies how JSON comments are handled when loading JSON. - - - - - Ignore comments. - - - - - Load comments as a with type . - - - - - Specifies how duplicate property names are handled when loading JSON. - - - - - Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. - - - - - Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. - - - - - Throw a when a duplicate property is encountered. - - - - - Contains the LINQ to JSON extension methods. - - - - - Returns a collection of tokens that contains the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the descendants of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, and the descendants of every token in the source collection. - - - - Returns a collection of child properties of every object in the source collection. - - An of that contains the source collection. - An of that contains the properties of every object in the source collection. - - - - Returns a collection of child values of every object in the source collection with the given key. - - An of that contains the source collection. - The token key. - An of that contains the values of every token in the source collection with the given key. - - - - Returns a collection of child values of every object in the source collection. - - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child values of every object in the source collection with the given key. - - The type to convert the values to. - An of that contains the source collection. - The token key. - An that contains the converted values of every token in the source collection with the given key. - - - - Returns a collection of converted child values of every object in the source collection. - - The type to convert the values to. - An of that contains the source collection. - An that contains the converted values of every token in the source collection. - - - - Converts the value. - - The type to convert the value to. - A cast as a of . - A converted value. - - - - Converts the value. - - The source collection type. - The type to convert the value to. - A cast as a of . - A converted value. - - - - Returns a collection of child tokens of every array in the source collection. - - The source collection type. - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child tokens of every array in the source collection. - - An of that contains the source collection. - The type to convert the values to. - The source collection type. - An that contains the converted values of every token in the source collection. - - - - Returns the input typed as . - - An of that contains the source collection. - The input typed as . - - - - Returns the input typed as . - - The source collection type. - An of that contains the source collection. - The input typed as . - - - - Represents a collection of objects. - - The type of token. - - - - Gets the of with the specified key. - - - - - - Represents a JSON array. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Loads an from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads an from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the at the specified index. - - - - - - Determines the index of a specific item in the . - - The object to locate in the . - - The index of if found in the list; otherwise, -1. - - - - - Inserts an item to the at the specified index. - - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - - - - - Removes the item at the specified index. - - The zero-based index of the item to remove. - - is not a valid index in the . - - - - - Returns an enumerator that iterates through the collection. - - - A of that can be used to iterate through the collection. - - - - - Adds an item to the . - - The object to add to the . - - - - Removes all items from the . - - - - - Determines whether the contains a specific value. - - The object to locate in the . - - true if is found in the ; otherwise, false. - - - - - Copies the elements of the to an array, starting at a particular array index. - - The array. - Index of the array. - - - - Gets a value indicating whether the is read-only. - - true if the is read-only; otherwise, false. - - - - Removes the first occurrence of a specific object from the . - - The object to remove from the . - - true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . - - - - - Represents a JSON constructor. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets or sets the name of this constructor. - - The constructor name. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name. - - The constructor name. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a token that can contain other tokens. - - - - - Occurs when the list changes or an item in the list changes. - - - - - Occurs before an item is added to the collection. - - - - - Occurs when the items list of the collection has changed, or the collection is reset. - - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Get the first child token of this token. - - - A containing the first child token of the . - - - - - Get the last child token of this token. - - - A containing the last child token of the . - - - - - Returns a collection of the child tokens of this token, in document order. - - - An of containing the child tokens of this , in document order. - - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - - A containing the child values of this , in document order. - - - - - Returns a collection of the descendant tokens for this token in document order. - - An of containing the descendant tokens of the . - - - - Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. - - An of containing this token, and all the descendant tokens of the . - - - - Adds the specified content as children of this . - - The content to be added. - - - - Adds the specified content as the first children of this . - - The content to be added. - - - - Creates a that can be used to add tokens to the . - - A that is ready to have content written to it. - - - - Replaces the child nodes of this token with the specified content. - - The content. - - - - Removes the child nodes from this token. - - - - - Merge the specified content into this . - - The content to be merged. - - - - Merge the specified content into this using . - - The content to be merged. - The used to merge the content. - - - - Gets the count of child JSON tokens. - - The count of child JSON tokens. - - - - Represents a collection of objects. - - The type of token. - - - - An empty collection of objects. - - - - - Initializes a new instance of the struct. - - The enumerable. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Gets the of with the specified key. - - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Represents a JSON object. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Occurs when a property value changes. - - - - - Occurs when a property value is changing. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Gets the node type for this . - - The type. - - - - Gets an of of this object's properties. - - An of of this object's properties. - - - - Gets a with the specified name. - - The property name. - A with the specified name or null. - - - - Gets the with the specified name. - The exact name will be searched for first and if no matching property is found then - the will be used to match a property. - - The property name. - One of the enumeration values that specifies how the strings will be compared. - A matched with the specified name or null. - - - - Gets a of of this object's property values. - - A of of this object's property values. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the with the specified property name. - - - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified property name. - - Name of the property. - The with the specified property name. - - - - Gets the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - One of the enumeration values that specifies how the strings will be compared. - The with the specified property name. - - - - Tries to get the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - The value. - One of the enumeration values that specifies how the strings will be compared. - true if a value was successfully retrieved; otherwise, false. - - - - Adds the specified property name. - - Name of the property. - The value. - - - - Determines whether the JSON object has the specified property name. - - Name of the property. - true if the JSON object has the specified property name; otherwise, false. - - - - Removes the property with the specified name. - - Name of the property. - true if item was successfully removed; otherwise, false. - - - - Tries to get the with the specified property name. - - Name of the property. - The value. - true if a value was successfully retrieved; otherwise, false. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Represents a JSON property. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the property name. - - The property name. - - - - Gets or sets the property value. - - The property value. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a view of a . - - - - - Initializes a new instance of the class. - - The name. - - - - When overridden in a derived class, returns whether resetting an object changes its value. - - - true if resetting the component changes its value; otherwise, false. - - The component to test for reset capability. - - - - When overridden in a derived class, gets the current value of the property on a component. - - - The value of a property for a given component. - - The component with the property for which to retrieve the value. - - - - When overridden in a derived class, resets the value for this property of the component to the default value. - - The component with the property value that is to be reset to the default value. - - - - When overridden in a derived class, sets the value of the component to a different value. - - The component with the property value that is to be set. - The new value. - - - - When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. - - - true if the property should be persisted; otherwise, false. - - The component with the property to be examined for persistence. - - - - When overridden in a derived class, gets the type of the component this property is bound to. - - - A that represents the type of component this property is bound to. - When the or - - methods are invoked, the object specified might be an instance of this type. - - - - - When overridden in a derived class, gets a value indicating whether this property is read-only. - - - true if the property is read-only; otherwise, false. - - - - - When overridden in a derived class, gets the type of the property. - - - A that represents the type of the property. - - - - - Gets the hash code for the name of the member. - - - - The hash code for the name of the member. - - - - - Represents a raw JSON string. - - - - - Asynchronously creates an instance of with the content of the reader's current token. - - The reader. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns an instance of with the content of the reader's current token. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class. - - The raw json. - - - - Creates an instance of with the content of the reader's current token. - - The reader. - An instance of with the content of the reader's current token. - - - - Specifies the settings used when loading JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets how JSON comments are handled when loading JSON. - The default value is . - - The JSON comment handling. - - - - Gets or sets how JSON line info is handled when loading JSON. - The default value is . - - The JSON line info handling. - - - - Gets or sets how duplicate property names in JSON objects are handled when loading JSON. - The default value is . - - The JSON duplicate property name handling. - - - - Specifies the settings used when merging JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets the method used when merging JSON arrays. - - The method used when merging JSON arrays. - - - - Gets or sets how null value properties are merged. - - How null value properties are merged. - - - - Gets or sets the comparison used to match property names while merging. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - The comparison used to match property names while merging. - - - - Specifies the settings used when selecting JSON. - - - - - Gets or sets a timeout that will be used when executing regular expressions. - - The timeout that will be used when executing regular expressions. - - - - Gets or sets a flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - A flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - - - Represents an abstract JSON token. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Writes this token to a asynchronously. - - A into which this method will write. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Gets a comparer that can compare two tokens for value equality. - - A that can compare two nodes for value equality. - - - - Gets or sets the parent. - - The parent. - - - - Gets the root of this . - - The root of this . - - - - Gets the node type for this . - - The type. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Compares the values of two tokens, including the values of all descendant tokens. - - The first to compare. - The second to compare. - true if the tokens are equal; otherwise false. - - - - Gets the next sibling token of this node. - - The that contains the next sibling token. - - - - Gets the previous sibling token of this node. - - The that contains the previous sibling token. - - - - Gets the path of the JSON token. - - - - - Adds the specified content immediately after this token. - - A content object that contains simple content or a collection of content objects to be added after this token. - - - - Adds the specified content immediately before this token. - - A content object that contains simple content or a collection of content objects to be added before this token. - - - - Returns a collection of the ancestor tokens of this token. - - A collection of the ancestor tokens of this token. - - - - Returns a collection of tokens that contain this token, and the ancestors of this token. - - A collection of tokens that contain this token, and the ancestors of this token. - - - - Returns a collection of the sibling tokens after this token, in document order. - - A collection of the sibling tokens after this tokens, in document order. - - - - Returns a collection of the sibling tokens before this token, in document order. - - A collection of the sibling tokens before this token, in document order. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets the with the specified key converted to the specified type. - - The type to convert the token to. - The token key. - The converted token value. - - - - Get the first child token of this token. - - A containing the first child token of the . - - - - Get the last child token of this token. - - A containing the last child token of the . - - - - Returns a collection of the child tokens of this token, in document order. - - An of containing the child tokens of this , in document order. - - - - Returns a collection of the child tokens of this token, in document order, filtered by the specified type. - - The type to filter the child tokens on. - A containing the child tokens of this , in document order. - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - A containing the child values of this , in document order. - - - - Removes this token from its parent. - - - - - Replaces this token with the specified token. - - The value. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Returns the indented JSON for this token. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - The indented JSON for this token. - - - - - Returns the JSON for this token using the given formatting and converters. - - Indicates how the output should be formatted. - A collection of s which will be used when writing the token. - The JSON for this token using the given formatting and converters. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to []. - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from [] to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Creates a for this token. - - A that can be used to read this token and its descendants. - - - - Creates a from an object. - - The object that will be used to create . - A with the value of the specified object. - - - - Creates a from an object using the specified . - - The object that will be used to create . - The that will be used when reading the object. - A with the value of the specified object. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - Creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A , or null. - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - A . - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - The used to select tokens. - A . - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - The used to select tokens. - An of that contains the selected elements. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Creates a new instance of the . All child tokens are recursively cloned. - - A new instance of the . - - - - Adds an object to the annotation list of this . - - The annotation to add. - - - - Get the first annotation object of the specified type from this . - - The type of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets the first annotation object of the specified type from this . - - The of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets a collection of annotations of the specified type for this . - - The type of the annotations to retrieve. - An that contains the annotations for this . - - - - Gets a collection of annotations of the specified type for this . - - The of the annotations to retrieve. - An of that contains the annotations that match the specified type for this . - - - - Removes the annotations of the specified type from this . - - The type of annotations to remove. - - - - Removes the annotations of the specified type from this . - - The of annotations to remove. - - - - Compares tokens to determine whether they are equal. - - - - - Determines whether the specified objects are equal. - - The first object of type to compare. - The second object of type to compare. - - true if the specified objects are equal; otherwise, false. - - - - - Returns a hash code for the specified object. - - The for which a hash code is to be returned. - A hash code for the specified object. - The type of is a reference type and is null. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Gets the at the reader's current position. - - - - - Initializes a new instance of the class. - - The token to read from. - - - - Initializes a new instance of the class. - - The token to read from. - The initial path of the token. It is prepended to the returned . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Gets the path of the current JSON token. - - - - - Specifies the type of token. - - - - - No token type has been set. - - - - - A JSON object. - - - - - A JSON array. - - - - - A JSON constructor. - - - - - A JSON object property. - - - - - A comment. - - - - - An integer value. - - - - - A float value. - - - - - A string value. - - - - - A boolean value. - - - - - A null value. - - - - - An undefined value. - - - - - A date value. - - - - - A raw JSON value. - - - - - A collection of bytes value. - - - - - A Guid value. - - - - - A Uri value. - - - - - A TimeSpan value. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Gets the at the writer's current position. - - - - - Gets the token being written. - - The token being written. - - - - Initializes a new instance of the class writing to the given . - - The container being written to. - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the underlying . - - - - - Closes this writer. - If is set to true, the JSON is auto-completed. - - - Setting to true has no additional effect, since the underlying is a type that cannot be closed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end. - - The token. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes a value. - An error will be raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Represents a value in JSON (string, integer, date, etc). - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Creates a comment with the given value. - - The value. - A comment with the given value. - - - - Creates a string with the given value. - - The value. - A string with the given value. - - - - Creates a null value. - - A null value. - - - - Creates a undefined value. - - A undefined value. - - - - Gets the node type for this . - - The type. - - - - Gets or sets the underlying token value. - - The underlying token value. - - - - Writes this token to a . - - A into which this method will write. - A collection of s which will be used when writing the token. - - - - Indicates whether the current object is equal to another object of the same type. - - - true if the current object is equal to the parameter; otherwise, false. - - An object to compare with this object. - - - - Determines whether the specified is equal to the current . - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Returns a that represents this instance. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format provider. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - The format provider. - - A that represents this instance. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: - Value - Meaning - Less than zero - This instance is less than . - Zero - This instance is equal to . - Greater than zero - This instance is greater than . - - - is not of the same type as this instance. - - - - - Specifies how line information is handled when loading JSON. - - - - - Ignore line information. - - - - - Load line information. - - - - - Specifies how JSON arrays are merged together. - - - - Concatenate arrays. - - - Union arrays, skipping items that already exist. - - - Replace all array items. - - - Merge array items together, matched by index. - - - - Specifies how null value properties are merged. - - - - - The content's null value properties will be ignored during merging. - - - - - The content's null value properties will be merged. - - - - - Specifies the member serialization options for the . - - - - - All public members are serialized by default. Members can be excluded using or . - This is the default member serialization mode. - - - - - Only members marked with or are serialized. - This member serialization mode can also be set by marking the class with . - - - - - All public and private fields are serialized. Members can be excluded using or . - This member serialization mode can also be set by marking the class with - and setting IgnoreSerializableAttribute on to false. - - - - - Specifies metadata property handling options for the . - - - - - Read metadata properties located at the start of a JSON object. - - - - - Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. - - - - - Do not try to read metadata properties. - - - - - Specifies missing member handling options for the . - - - - - Ignore a missing member and do not attempt to deserialize it. - - - - - Throw a when a missing member is encountered during deserialization. - - - - - Specifies null value handling options for the . - - - - - - - - - Include null values when serializing and deserializing objects. - - - - - Ignore null values when serializing and deserializing objects. - - - - - Specifies how object creation is handled by the . - - - - - Reuse existing objects, create new objects when needed. - - - - - Only reuse existing objects. - - - - - Always create new objects. - - - - - Specifies reference handling options for the . - Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . - - - - - - - - Do not preserve references when serializing types. - - - - - Preserve references when serializing into a JSON object structure. - - - - - Preserve references when serializing into a JSON array structure. - - - - - Preserve references when serializing. - - - - - Specifies reference loop handling options for the . - - - - - Throw a when a loop is encountered. - - - - - Ignore loop references and do not serialize. - - - - - Serialize loop references. - - - - - Indicating whether a property is required. - - - - - The property is not required. The default state. - - - - - The property must be defined in JSON but can be a null value. - - - - - The property must be defined in JSON and cannot be a null value. - - - - - The property is not required but it cannot be a null value. - - - - - - Contains the JSON schema extension methods. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - true if the specified is valid; otherwise, false. - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - When this method returns, contains any error messages generated while validating. - - true if the specified is valid; otherwise, false. - - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - The validation event handler. - - - - - An in-memory representation of a JSON Schema. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the id. - - - - - Gets or sets the title. - - - - - Gets or sets whether the object is required. - - - - - Gets or sets whether the object is read-only. - - - - - Gets or sets whether the object is visible to users. - - - - - Gets or sets whether the object is transient. - - - - - Gets or sets the description of the object. - - - - - Gets or sets the types of values allowed by the object. - - The type. - - - - Gets or sets the pattern. - - The pattern. - - - - Gets or sets the minimum length. - - The minimum length. - - - - Gets or sets the maximum length. - - The maximum length. - - - - Gets or sets a number that the value should be divisible by. - - A number that the value should be divisible by. - - - - Gets or sets the minimum. - - The minimum. - - - - Gets or sets the maximum. - - The maximum. - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). - - A flag indicating whether the value can not equal the number defined by the minimum attribute (). - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). - - A flag indicating whether the value can not equal the number defined by the maximum attribute (). - - - - Gets or sets the minimum number of items. - - The minimum number of items. - - - - Gets or sets the maximum number of items. - - The maximum number of items. - - - - Gets or sets the of items. - - The of items. - - - - Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . - - - true if items are validated using their array position; otherwise, false. - - - - - Gets or sets the of additional items. - - The of additional items. - - - - Gets or sets a value indicating whether additional items are allowed. - - - true if additional items are allowed; otherwise, false. - - - - - Gets or sets whether the array items must be unique. - - - - - Gets or sets the of properties. - - The of properties. - - - - Gets or sets the of additional properties. - - The of additional properties. - - - - Gets or sets the pattern properties. - - The pattern properties. - - - - Gets or sets a value indicating whether additional properties are allowed. - - - true if additional properties are allowed; otherwise, false. - - - - - Gets or sets the required property if this property is present. - - The required property if this property is present. - - - - Gets or sets the a collection of valid enum values allowed. - - A collection of valid enum values allowed. - - - - Gets or sets disallowed types. - - The disallowed types. - - - - Gets or sets the default value. - - The default value. - - - - Gets or sets the collection of that this schema extends. - - The collection of that this schema extends. - - - - Gets or sets the format. - - The format. - - - - Initializes a new instance of the class. - - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The object representing the JSON Schema. - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The to use when resolving schema references. - The object representing the JSON Schema. - - - - Load a from a string that contains JSON Schema. - - A that contains JSON Schema. - A populated from the string that contains JSON Schema. - - - - Load a from a string that contains JSON Schema using the specified . - - A that contains JSON Schema. - The resolver. - A populated from the string that contains JSON Schema. - - - - Writes this schema to a . - - A into which this method will write. - - - - Writes this schema to a using the specified . - - A into which this method will write. - The resolver used. - - - - Returns a that represents the current . - - - A that represents the current . - - - - - - Returns detailed information about the schema exception. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - - Generates a from a specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets how undefined schemas are handled by the serializer. - - - - - Gets or sets the contract resolver. - - The contract resolver. - - - - Generate a from the specified type. - - The type to generate a from. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - - Resolves from an id. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the loaded schemas. - - The loaded schemas. - - - - Initializes a new instance of the class. - - - - - Gets a for the specified reference. - - The id. - A for the specified reference. - - - - - The value types allowed by the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - No type specified. - - - - - String type. - - - - - Float type. - - - - - Integer type. - - - - - Boolean type. - - - - - Object type. - - - - - Array type. - - - - - Null type. - - - - - Any type. - - - - - - Specifies undefined schema Id handling options for the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Do not infer a schema Id. - - - - - Use the .NET type name as the schema Id. - - - - - Use the assembly qualified .NET type name as the schema Id. - - - - - - Returns detailed information related to the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the associated with the validation error. - - The JsonSchemaException associated with the validation error. - - - - Gets the path of the JSON location where the validation error occurred. - - The path of the JSON location where the validation error occurred. - - - - Gets the text description corresponding to the validation error. - - The text description. - - - - - Represents the callback method that will handle JSON schema validation events and the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - A camel case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Resolves member mappings for a type, camel casing property names. - - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used by to resolve a for a given . - - - - - Gets a value indicating whether members are being get and set using dynamic code generation. - This value is determined by the runtime permissions available. - - - true if using dynamic code generation; otherwise, false. - - - - - Gets or sets the default members search flags. - - The default members search flags. - - - - Gets or sets a value indicating whether compiler generated members should be serialized. - - - true if serialized compiler generated members; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. - - - true if the interface will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. - - - true if the attribute will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. - - - true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. - - - true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. - - The naming strategy used to resolve how property names and dictionary keys are serialized. - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Gets the serializable members for the type. - - The type to get serializable members for. - The serializable members for the type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates the constructor parameters. - - The constructor to create properties for. - The type's member properties. - Properties for the given . - - - - Creates a for the given . - - The matching member property. - The constructor parameter. - A created for the given . - - - - Resolves the default for the contract. - - Type of the object. - The contract's default . - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Determines which contract type is created for the given type. - - Type of the object. - A for the given type. - - - - Creates properties for the given . - - The type to create properties for. - /// The member serialization mode for the type. - Properties for the given . - - - - Creates the used by the serializer to get and set values from a member. - - The member. - The used by the serializer to get and set values from a member. - - - - Creates a for the given . - - The member's parent . - The member to create a for. - A created for the given . - - - - Resolves the name of the property. - - Name of the property. - Resolved name of the property. - - - - Resolves the name of the extension data. By default no changes are made to extension data names. - - Name of the extension data. - Resolved name of the extension data. - - - - Resolves the key of the dictionary. By default is used to resolve dictionary keys. - - Key of the dictionary. - Resolved key of the dictionary. - - - - Gets the resolved name of the property. - - Name of the property. - Name of the property. - - - - The default naming strategy. Property names and dictionary keys are unchanged. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - The default serialization binder used when resolving and loading classes from type names. - - - - - Initializes a new instance of the class. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - The type of the object the formatter creates a new instance of. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer that writes to the application's instances. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides information surrounding an error. - - - - - Gets the error. - - The error. - - - - Gets the original object that caused the error. - - The original object that caused the error. - - - - Gets the member that caused the error. - - The member that caused the error. - - - - Gets the path of the JSON location where the error occurred. - - The path of the JSON location where the error occurred. - - - - Gets or sets a value indicating whether this is handled. - - true if handled; otherwise, false. - - - - Provides data for the Error event. - - - - - Gets the current object the error event is being raised against. - - The current object the error event is being raised against. - - - - Gets the error context. - - The error context. - - - - Initializes a new instance of the class. - - The current object. - The error context. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides methods to get attributes. - - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Used by to resolve a for a given . - - - - - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used to resolve references when serializing and deserializing JSON by the . - - - - - Resolves a reference to its object. - - The serialization context. - The reference to resolve. - The object that was resolved from the reference. - - - - Gets the reference for the specified object. - - The serialization context. - The object to get a reference for. - The reference to the object. - - - - Determines whether the specified object is referenced. - - The serialization context. - The object to test for a reference. - - true if the specified object is referenced; otherwise, false. - - - - - Adds a reference to the specified object. - - The serialization context. - The reference. - The object to reference. - - - - Allows users to control class loading and mandate what class to load. - - - - - When implemented, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object - The type of the object the formatter creates a new instance of. - - - - When implemented, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - The that will be used to filter the trace messages passed to the writer. - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Provides methods to get and set values. - - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Contract details for a used by the . - - - - - Gets the of the collection items. - - The of the collection items. - - - - Gets a value indicating whether the collection type is a multidimensional array. - - true if the collection type is a multidimensional array; otherwise, false. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the collection values. - - true if the creator has a parameter with the collection values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the default collection items . - - The converter. - - - - Gets or sets a value indicating whether the collection items preserve object references. - - true if collection items preserve object references; otherwise, false. - - - - Gets or sets the collection item reference loop handling. - - The reference loop handling. - - - - Gets or sets the collection item type name handling. - - The type name handling. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Handles serialization callback events. - - The object that raised the callback event. - The streaming context. - - - - Handles serialization error callback events. - - The object that raised the callback event. - The streaming context. - The error context. - - - - Sets extension data for an object during deserialization. - - The object to set extension data on. - The extension data key. - The extension data value. - - - - Gets extension data for an object during serialization. - - The object to set extension data on. - - - - Contract details for a used by the . - - - - - Gets the underlying type for the contract. - - The underlying type for the contract. - - - - Gets or sets the type created during deserialization. - - The type created during deserialization. - - - - Gets or sets whether this type contract is serialized as a reference. - - Whether this type contract is serialized as a reference. - - - - Gets or sets the default for this contract. - - The converter. - - - - Gets the internally resolved for the contract's type. - This converter is used as a fallback converter when no other converter is resolved. - Setting will always override this converter. - - - - - Gets or sets all methods called immediately after deserialization of the object. - - The methods called immediately after deserialization of the object. - - - - Gets or sets all methods called during deserialization of the object. - - The methods called during deserialization of the object. - - - - Gets or sets all methods called after serialization of the object graph. - - The methods called after serialization of the object graph. - - - - Gets or sets all methods called before serialization of the object. - - The methods called before serialization of the object. - - - - Gets or sets all method called when an error is thrown during the serialization of the object. - - The methods called when an error is thrown during the serialization of the object. - - - - Gets or sets the default creator method used to create the object. - - The default creator method used to create the object. - - - - Gets or sets a value indicating whether the default creator is non-public. - - true if the default object creator is non-public; otherwise, false. - - - - Contract details for a used by the . - - - - - Gets or sets the dictionary key resolver. - - The dictionary key resolver. - - - - Gets the of the dictionary keys. - - The of the dictionary keys. - - - - Gets the of the dictionary values. - - The of the dictionary values. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the dictionary values. - - true if the creator has a parameter with the dictionary values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets the object's properties. - - The object's properties. - - - - Gets or sets the property name resolver. - - The property name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object constructor. - - The object constructor. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object member serialization. - - The member object serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets the object's properties. - - The object's properties. - - - - Gets a collection of instances that define the parameters used with . - - - - - Gets or sets the function used to create the object. When set this function will override . - This function is called with a collection of arguments which are defined by the collection. - - The function used to create the object. - - - - Gets or sets the extension data setter. - - - - - Gets or sets the extension data getter. - - - - - Gets or sets the extension data value type. - - - - - Gets or sets the extension data name resolver. - - The extension data name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Maps a JSON property to a .NET member or constructor parameter. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the type that declared this property. - - The type that declared this property. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets the name of the underlying member or parameter. - - The name of the underlying member or parameter. - - - - Gets the that will get and set the during serialization. - - The that will get and set the during serialization. - - - - Gets or sets the for this property. - - The for this property. - - - - Gets or sets the type of the property. - - The type of the property. - - - - Gets or sets the for the property. - If set this converter takes precedence over the contract converter for the property type. - - The converter. - - - - Gets or sets the member converter. - - The member converter. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets or sets a value indicating whether this is readable. - - true if readable; otherwise, false. - - - - Gets or sets a value indicating whether this is writable. - - true if writable; otherwise, false. - - - - Gets or sets a value indicating whether this has a member attribute. - - true if has a member attribute; otherwise, false. - - - - Gets the default value. - - The default value. - - - - Gets or sets a value indicating whether this is required. - - A value indicating whether this is required. - - - - Gets a value indicating whether has a value specified. - - - - - Gets or sets a value indicating whether this property preserves object references. - - - true if this instance is reference; otherwise, false. - - - - - Gets or sets the property null value handling. - - The null value handling. - - - - Gets or sets the property default value handling. - - The default value handling. - - - - Gets or sets the property reference loop handling. - - The reference loop handling. - - - - Gets or sets the property object creation handling. - - The object creation handling. - - - - Gets or sets or sets the type name handling. - - The type name handling. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets a predicate used to determine whether the property should be deserialized. - - A predicate used to determine whether the property should be deserialized. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets an action used to set whether the property has been deserialized. - - An action used to set whether the property has been deserialized. - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Gets or sets the converter used when serializing the property's collection items. - - The collection's items converter. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - A collection of objects. - - - - - Initializes a new instance of the class. - - The type. - - - - When implemented in a derived class, extracts the key from the specified element. - - The element from which to extract the key. - The key for the specified element. - - - - Adds a object. - - The property to add to the collection. - - - - Gets the closest matching object. - First attempts to get an exact case match of and then - a case insensitive match. - - Name of the property. - A matching property if found. - - - - Gets a property by property name. - - The name of the property to get. - Type property name string comparison. - A matching property if found. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Lookup and create an instance of the type described by the argument. - - The type to create. - Optional arguments to pass to an initializing constructor of the JsonConverter. - If null, the default constructor is used. - - - - A kebab case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Represents a trace writer that writes to memory. When the trace message limit is - reached then old trace messages will be removed as new messages are added. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Initializes a new instance of the class. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Returns an enumeration of the most recent trace messages. - - An enumeration of the most recent trace messages. - - - - Returns a of the most recent trace messages. - - - A of the most recent trace messages. - - - - - A base class for resolving how property names and dictionary keys are serialized. - - - - - A flag indicating whether dictionary keys should be processed. - Defaults to false. - - - - - A flag indicating whether extension data names should be processed. - Defaults to false. - - - - - A flag indicating whether explicitly specified property names, - e.g. a property name customized with a , should be processed. - Defaults to false. - - - - - Gets the serialized name for a given property name. - - The initial property name. - A flag indicating whether the property has had a name explicitly specified. - The serialized property name. - - - - Gets the serialized name for a given extension data name. - - The initial extension data name. - The serialized extension data name. - - - - Gets the serialized key for a given dictionary key. - - The initial dictionary key. - The serialized dictionary key. - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Hash code calculation - - - - - - Object equality implementation - - - - - - - Compare to another NamingStrategy - - - - - - - Represents a method that constructs an object. - - The object type to create. - - - - When applied to a method, specifies that the method is called when an error occurs serializing an object. - - - - - Provides methods to get attributes from a , , or . - - - - - Initializes a new instance of the class. - - The instance to get attributes for. This parameter should be a , , or . - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Get and set values for a using reflection. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - A snake case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Specifies how strings are escaped when writing JSON text. - - - - - Only control characters (e.g. newline) are escaped. - - - - - All non-ASCII and control characters (e.g. newline) are escaped. - - - - - HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. - - - - - Indicates the method that will be used during deserialization for locating and loading assemblies. - - - - - In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. - - - - - In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. - - - - - Specifies type name handling options for the . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Do not include the .NET type name when serializing types. - - - - - Include the .NET type name when serializing into a JSON object structure. - - - - - Include the .NET type name when serializing into a JSON array structure. - - - - - Always include the .NET type name when serializing. - - - - - Include the .NET type name when the type of the object being serialized is not the same as its declared type. - Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON - you must specify a root type object with - or . - - - - - Determines whether the collection is null or empty. - - The collection. - - true if the collection is null or empty; otherwise, false. - - - - - Adds the elements of the specified collection to the specified generic . - - The list to add to. - The collection of elements to add. - - - - Converts the value to the specified type. If the value is unable to be converted, the - value is checked whether it assignable to the specified type. - - The value to convert. - The culture to use when converting. - The type to convert or cast the value to. - - The converted type. If conversion was unsuccessful, the initial value - is returned if assignable to the target type. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic that returns a result - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Returns a Restrictions object which includes our current restrictions merged - with a restriction limiting our type - - - - - Helper class for serializing immutable collections. - Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed - https://github.com/JamesNK/Newtonsoft.Json/issues/652 - - - - - Gets the type of the typed collection's items. - - The type. - The type of the typed collection's items. - - - - Gets the member's underlying type. - - The member. - The underlying type of the member. - - - - Determines whether the property is an indexed property. - - The property. - - true if the property is an indexed property; otherwise, false. - - - - - Gets the member's value on the object. - - The member. - The target object. - The member's value on the object. - - - - Sets the member's value on the target object. - - The member. - The target. - The value. - - - - Determines whether the specified MemberInfo can be read. - - The MemberInfo to determine whether can be read. - /// if set to true then allow the member to be gotten non-publicly. - - true if the specified MemberInfo can be read; otherwise, false. - - - - - Determines whether the specified MemberInfo can be set. - - The MemberInfo to determine whether can be set. - if set to true then allow the member to be set non-publicly. - if set to true then allow the member to be set if read-only. - - true if the specified MemberInfo can be set; otherwise, false. - - - - - Builds a string. Unlike this class lets you reuse its internal buffer. - - - - - Determines whether the string is all white space. Empty string will return false. - - The string to test whether it is all white space. - - true if the string is all white space; otherwise, false. - - - - - Specifies the state of the . - - - - - An exception has been thrown, which has left the in an invalid state. - You may call the method to put the in the Closed state. - Any other method calls result in an being thrown. - - - - - The method has been called. - - - - - An object is being written. - - - - - An array is being written. - - - - - A constructor is being written. - - - - - A property is being written. - - - - - A write method has not been called. - - - - Specifies that an output will not be null even if the corresponding type allows it. - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that an output may be null even if the corresponding type disallows it. - - - Specifies that null is allowed as an input even if the corresponding type disallows it. - - - - Specifies that the method will not return if the associated Boolean parameter is passed the specified value. - - - - - Initializes a new instance of the class. - - - The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to - the associated parameter matches this value. - - - - Gets the condition parameter value. - - - diff --git a/AUTS_DataService/bin/Debug/SharpCompress.dll b/AUTS_DataService/bin/Debug/SharpCompress.dll deleted file mode 100644 index a4322fa..0000000 Binary files a/AUTS_DataService/bin/Debug/SharpCompress.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/System.Buffers.dll b/AUTS_DataService/bin/Debug/System.Buffers.dll deleted file mode 100644 index 9f5d1e3..0000000 Binary files a/AUTS_DataService/bin/Debug/System.Buffers.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/System.Buffers.xml b/AUTS_DataService/bin/Debug/System.Buffers.xml deleted file mode 100644 index fe1f651..0000000 --- a/AUTS_DataService/bin/Debug/System.Buffers.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - System.Buffers - - - - - Provides a resource pool that enables reusing instances of type . - - - - Renting and returning buffers with an can increase performance - in situations where arrays are created and destroyed frequently, resulting in significant - memory pressure on the garbage collector. - - - This class is thread-safe. All members may be used by multiple threads concurrently. - - - - - The lazily-initialized shared pool instance. - - - - Retrieves a shared instance. - - - The shared pool provides a default implementation of - that's intended for general applicability. It maintains arrays of multiple sizes, and - may hand back a larger array than was actually requested, but will never hand back a smaller - array than was requested. Renting a buffer from it with will result in an - existing buffer being taken from the pool if an appropriate buffer is available or in a new - buffer being allocated if one is not available. - - - - Ensures that has been initialized to a pool and returns it. - - - - Creates a new instance using default configuration options. - - A new instance. - - - - Creates a new instance using custom configuration options. - - The maximum length of array instances that may be stored in the pool. - - The maximum number of array instances that may be stored in each bucket in the pool. The pool - groups arrays of similar lengths into buckets for faster access. - - A new instance with the specified configuration options. - - The created pool will group arrays into buckets, with no more than - in each bucket and with those arrays not exceeding in length. - - - - - Retrieves a buffer that is at least the requested length. - - The minimum length of the array needed. - - An that is at least in length. - - - This buffer is loaned to the caller and should be returned to the same pool via - so that it may be reused in subsequent usage of . - It is not a fatal error to not return a rented buffer, but failure to do so may lead to - decreased application performance, as the pool may need to create a new buffer to replace - the one lost. - - - - - Returns to the pool an array that was previously obtained via on the same - instance. - - - The buffer previously obtained from to return to the pool. - - - If true and if the pool will store the buffer to enable subsequent reuse, - will clear of its contents so that a subsequent consumer via - will not see the previous consumer's content. If false or if the pool will release the buffer, - the array's contents are left unchanged. - - - Once a buffer has been returned to the pool, the caller gives up all ownership of the buffer - and must not use it. The reference returned from a given call to must only be - returned via once. The default - may hold onto the returned buffer in order to rent it again, or it may release the returned buffer - if it's determined that the pool already has enough buffers stored. - - - - The reason for a BufferAllocated event. - - - The pool is allocating a buffer to be pooled in a bucket. - - - The requested buffer size was too large to be pooled. - - - The pool has already allocated for pooling as many buffers of a particular size as it's allowed. - - - - Event for when a buffer is rented. This is invoked once for every successful call to Rent, - regardless of whether a buffer is allocated or a buffer is taken from the pool. In a - perfect situation where all rented buffers are returned, we expect to see the number - of BufferRented events exactly match the number of BuferReturned events, with the number - of BufferAllocated events being less than or equal to those numbers (ideally significantly - less than). - - - - - Event for when a buffer is allocated by the pool. In an ideal situation, the number - of BufferAllocated events is significantly smaller than the number of BufferRented and - BufferReturned events. - - - - - Event raised when a buffer is returned to the pool. This event is raised regardless of whether - the returned buffer is stored or dropped. In an ideal situation, the number of BufferReturned - events exactly matches the number of BufferRented events. - - - - The default maximum length of each array in the pool (2^20). - - - The default maximum number of arrays per bucket that are available for rent. - - - Lazily-allocated empty array used when arrays of length 0 are requested. - - - Gets an ID for the pool to use with events. - - - Provides a thread-safe bucket containing buffers that can be Rent'd and Return'd. - - - - Creates the pool with numberOfBuffers arrays where each buffer is of bufferLength length. - - - - Gets an ID for the bucket to use with events. - - - Takes an array from the bucket. If the bucket is empty, returns null. - - - - Attempts to return the buffer to the bucket. If successful, the buffer will be stored - in the bucket and true will be returned; otherwise, the buffer won't be stored, and false - will be returned. - - - - The buffer is not associated with this pool and may not be returned to it. - - - diff --git a/AUTS_DataService/bin/Debug/System.Data.SQLite.dll b/AUTS_DataService/bin/Debug/System.Data.SQLite.dll deleted file mode 100644 index 4f5314c..0000000 Binary files a/AUTS_DataService/bin/Debug/System.Data.SQLite.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/System.Memory.dll b/AUTS_DataService/bin/Debug/System.Memory.dll deleted file mode 100644 index 4617199..0000000 Binary files a/AUTS_DataService/bin/Debug/System.Memory.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/System.Memory.xml b/AUTS_DataService/bin/Debug/System.Memory.xml deleted file mode 100644 index 4d12fd7..0000000 --- a/AUTS_DataService/bin/Debug/System.Memory.xml +++ /dev/null @@ -1,355 +0,0 @@ - - - System.Memory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_DataService/bin/Debug/System.Numerics.Vectors.dll b/AUTS_DataService/bin/Debug/System.Numerics.Vectors.dll deleted file mode 100644 index 0865972..0000000 Binary files a/AUTS_DataService/bin/Debug/System.Numerics.Vectors.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/System.Numerics.Vectors.xml b/AUTS_DataService/bin/Debug/System.Numerics.Vectors.xml deleted file mode 100644 index da34d39..0000000 --- a/AUTS_DataService/bin/Debug/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2621 +0,0 @@ - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is &quot;up&quot; from the camera&#39;s point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. - -or- - fieldOfView is greater than or equal to . - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane&#39;s normal vector. - The plane&#39;s distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane&#39;s normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. - -or- - The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. - -or- - index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The one&#39;s complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector&#39;s elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/AUTS_DataService/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll b/AUTS_DataService/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll deleted file mode 100644 index c5ba4e4..0000000 Binary files a/AUTS_DataService/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml b/AUTS_DataService/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml deleted file mode 100644 index 9d79492..0000000 --- a/AUTS_DataService/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml +++ /dev/null @@ -1,291 +0,0 @@ - - - - System.Runtime.CompilerServices.Unsafe - - - - Contains generic, low-level functionality for manipulating pointers. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given void pointer. - The void pointer to add the offset to. - The offset to add. - The type of void pointer. - A new void pointer that reflects the addition of offset to the specified pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Determines whether the specified references point to the same location. - The first reference to compare. - The second reference to compare. - The type of reference. - - if and point to the same location; otherwise, . - - - Casts the given object to the specified type. - The object to cast. - The type which the object will be cast to. - The original object, casted to the given type. - - - Reinterprets the given reference as a reference to a value of type . - The reference to reinterpret. - The type of reference to reinterpret. - The desired type of the reference. - A reference to a value of type . - - - Returns a pointer to the given by-ref parameter. - The object whose pointer is obtained. - The type of object. - A pointer to the given value. - - - Reinterprets the given read-only reference as a reference. - The read-only reference to reinterpret. - The type of reference. - A reference to a value of type . - - - Reinterprets the given location as a reference to a value of type . - The location of the value to reference. - The type of the interpreted location. - A reference to a value of type . - - - Determines the byte offset from origin to target from the given references. - The reference to origin. - The reference to target. - The type of reference. - Byte offset from origin to target i.e. - . - - - Copies a value of type to the given location. - The location to copy to. - A pointer to the value to copy. - The type of value to copy. - - - Copies a value of type to the given location. - The location to copy to. - A reference to the value to copy. - The type of value to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Returns a value that indicates whether a specified reference is greater than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is greater than ; otherwise, . - - - Returns a value that indicates whether a specified reference is less than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is less than ; otherwise, . - - - Determines if a given reference to a value of type is a null reference. - The reference to check. - The type of the reference. - - if is a null reference; otherwise, . - - - Returns a reference to a value of type that is a null reference. - The type of the reference. - A reference to a value of type that is a null reference. - - - Reads a value of type from the given location. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Returns the size of an object of the given type parameter. - The type of object whose size is retrieved. - The size of an object of type . - - - Bypasses definite assignment rules for a given value. - The uninitialized object. - The type of the uninitialized object. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subraction of offset from pointer. - - - Subtracts an element offset from the given void pointer. - The void pointer to subtract the offset from. - The offset to subtract. - The type of the void pointer. - A new void pointer that reflects the subtraction of offset from the specified pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of byte offset from pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subraction of byte offset from pointer. - - - Returns a to a boxed value. - The value to unbox. - The type to be unboxed. - - is , and is a non-nullable value type. - - is not a boxed value type. - --or- - - is not a boxed . - - cannot be found. - A to the boxed value . - - - Writes a value of type to the given location. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - \ No newline at end of file diff --git a/AUTS_DataService/bin/Debug/TeeChart.dll b/AUTS_DataService/bin/Debug/TeeChart.dll deleted file mode 100644 index f6e9728..0000000 Binary files a/AUTS_DataService/bin/Debug/TeeChart.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/UTS_Core.dll b/AUTS_DataService/bin/Debug/UTS_Core.dll deleted file mode 100644 index 4700a98..0000000 Binary files a/AUTS_DataService/bin/Debug/UTS_Core.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/UTS_Core.dll.config b/AUTS_DataService/bin/Debug/UTS_Core.dll.config deleted file mode 100644 index 9e4ecc2..0000000 --- a/AUTS_DataService/bin/Debug/UTS_Core.dll.config +++ /dev/null @@ -1,68 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - False - - - False - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AUTS_DataService/bin/Debug/UTS_Core.pdb b/AUTS_DataService/bin/Debug/UTS_Core.pdb deleted file mode 100644 index ebf911a..0000000 Binary files a/AUTS_DataService/bin/Debug/UTS_Core.pdb and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/UTS_Core.xml b/AUTS_DataService/bin/Debug/UTS_Core.xml deleted file mode 100644 index 7aa1e04..0000000 --- a/AUTS_DataService/bin/Debug/UTS_Core.xml +++ /dev/null @@ -1,9737 +0,0 @@ - - - - -UTS_Core - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 压缩文件夹到zip文件 - - 需要压缩的文件夹 - 压缩后的zip文件路径 - - - - 压缩文件至Zip文件 - - 被压缩的文件路径 - 压缩文件路径 - - - - 压缩指定文件夹至tar格式文件,不会生成根文件目录 - - 压缩文件名 - 源文件夹 - - - - 压缩指定文件列表到tar格式文件 - - 文件列表 - 压缩文件路径 - 压缩文件所在文件夹路径 - - - - 填充文件表,供压缩文件使用 - - 文件列表 - 需要压缩的文件夹 - 文件前缀 - - - - 解压Tar格式文件夹 - - 文件路径 - 目标文件夹 - - - - Contains the schema of a single DB column. - - - - - 清空数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 复制基础表数据到新表中 - - 表名 - 基础表名 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - Contains the entire database schema - - - - - 判断列名 - - - - - - 判断条件 - - - - - - 判断值 - - - - - - 当前条件与上一个条件的逻辑关系 - - - - - - 将当前条件转换为字符串,不支持将条件逻辑关系同时转换 - - - - - - 查询条件的表名 - - - - - - 当IsSearchAllCols = False时,查询返回列名集合 - - - - - - 查询的条件 - - - - - - 排序方式 - - - - - - 但需要排序时排序列名 - - - - - - 从返回结果提取指定行的内容 - - - - - - Describes a single view schema - - - - - Contains the view name - - - - - Contains the view SQL statement - - - - - 数据库语句助手 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句 - 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用 - - - - - - 查询指定数据表符合条件的所有数据 - - 指定表名 - 查询条件, - - - - - 查询表符合条件的所有指定列的数据 - - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询表符合条件的所有指定列的数据 - - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据表名 - 查询条件 - - - - - 查询指定数据表的信息 - - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量 - - 表名 - - - - - 数据表插入一行数据 - - 表名 - 列名字符串 - 列值字符串 - - - - - 数据表插入一行数据 - - 表名 - 列名与列值键值对 - - - - - 数据表插入一行,通过命令参数方式执行时使用 - - - - - - - - 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 表名 - 字段列表 - - - - - 更新指定表数据 - - 指定表名 - 更新字符串 - - - - - - 更新指定表数据 - - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 指定数据表增加一列数据 - - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 数据表删除一列数据 - - 表名 - 需要删除的列名,仅一列 - - - - - 删除指定表多行数据 - - 表名 - 条件 - - - - - 创建数据表 - - 表名 - 创建表的列信息字符串 - - - - - 创建数据表,如果存在则不创建 - - 表名 - 创建表的列信息字符串 - - - - - 清空数据表,表依旧存在 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的去重数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据库名 - 数据表名 - 查询条件 - - - - - 查询指定数据库中指定数据表符合条件的所有数据 - - - 数据库名 - 数据表名 - 查询条件(可选) - - - - - 查询指定数据库中指定数据表的信息 - - 数据库名 - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量 - - 数据库名 - 表名 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名字符串 - 列值字符串 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名与列值键值对 - - - - - 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 数据库名 - - 需要插入列名的集合 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新字符串 - - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 数据库名 - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 指定数据库中指定数据表增加一列数据 - - 数据库名 - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 指定数据库中数据表删除一列数据 - - 数据库名 - 表名 - 需要删除的列名,仅一列 - - - - - 指定数据库中指定表删除多行数据 - - 数据库名 - 表名 - 条件 - - - - - 指定数据库中创建数据表 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 指定数据库中创建数据表,如果存在则不创建 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 清空指定数据库中数据表,表依旧存在 - - 数据库名 - 数据表名 - - - - - 删除指定数据库中数据表 - - 数据库名 - 数据表名 - - - - - 数据库通用命令执行器 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - - - - 数据库类型,目前支持Mysql与Sqlite - - - - - 打开数据库连接 - - - - - - 关闭数据库连接 - - - - - 创建当前连接的命令执行句柄 - - - - - - 运行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 开启事务 - - - - - - 提交事务 - - - - - 回滚事务 - - - - - 创建数据参数 - - 参数数据类型 - 参数名称 - 参数值 - - - - - 添加数据参数 - - - - - - - - - 清空数据 - - - - - 回收资源 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 是否为唯一值 - - - - - - 查询指定数据表的信息 - - - - - - - 1 byte,小整数值 - - - - - 2 bytes,大整数值 - - - - - 3 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 8 bytes,极大整数值 - - - - - 4 bytes,单精度浮点数值 - - - - - 8 bytes,双精度浮点数值 - - - - - 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值 - - - - - 3 bytes,日期值,YYYY-MM-DD - - - - - 3 bytes,时间值或持续时间,HH:MM:SS - - - - - 1 bytes,年份值,YYYY - - - - - 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS - - - - - 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS - - - - - 0-255 bytes,定长字符串 - - - - - 0-65535 bytes,变长字符串 - - - - - 0-255 bytes,不超过 255 个字符的二进制字符串 - - - - - 0-255 bytes,短文本字符串 - - - - - 0-65 535 bytes,二进制形式的长文本数据 - - - - - 0-65 535 bytes,长文本数据 - - - - - 0-16 777 215 bytes,二进制形式的中等长度文本数据 - - - - - 0-16 777 215 bytes,中等长度文本数据 - - - - - 0-4 294 967 295 bytes,二进制形式的极大文本数据 - - - - - 0-4 294 967 295 bytes,极大文本数据 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 数据类型是否带符号 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 应用程序日志 - - - - 日志文件所在父文件夹路径 - - - 日志文件名前缀 - - - 日志文件所在路径 - - - - 保存日志的文件夹完整路径 - - - - - 日志文件前缀 - - - - - 写入错误信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入警告信息记录日志 - - - - - - 写入错误信息记录日志 - - - - - - 写入数据库信息记录日志 - - - - - - 将信息入到日志 - - 日志类型 - 日志内容 - - - - 写日志 - - - - - 日志类型 - - - - 调试信息 - - - 系统运行信息 - - - 警告信息 - - - 错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息 - - - 致命信息 - - - - 考虑修改为自定义控件 - - - - - 是否在添加内容时先挂起布局 - - - - - - 是否添加记录到控件 - - - - - - 控件记录最大行数 - - - - - - 需要被添加数据记录的控件句柄 - - - - - - 清空内容 - - - - - 显示所有数据,优先度最高 - - - - - - 是否显示系统信息 - - - - - - 是否显示串口信息 - - - - - - 是否显示数据库信息 - - - - - - 是否显示网络信息 - - - - - - 是否显示Ftp信息 - - - - - - 显示信息的集合,对应数据位为1则打印,为0不打印 - - - - - - 是否添加时间前缀 - - - - - - 是否显示与上包显示的间隔 - - - - - - 打印调试信息 - - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印信息的提示前缀 - 需要打印的信息 - - - - 枚举扩展类 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 获取当前枚举所有描述特性值,未填的枚举采用枚举名 - - 枚举类型 - - - - - 字符算数表达式求和 - - - - 精度 - - - - 替换占位符 - - 字符串表达式 - - - - - 替换表达式式中的十六进制占位符为实际内容,例如替换B4为buf中的第4位即buf(4)的值 - - - - - - - - 获取表达式转换后的结果是否为真,0、false、空字符为假,1,true为真, 其余为通过计算不为0判断真假 - - - - - - - 获取double类型运算式字符串后缀表达式 - - 字符串表达式 - - - - - 获取小数类型运算结果 - - 浮点型数1 - 浮点型数2 - 运算符 - - - - - 获取符号的优先级 - - 运算符号 - - - - - 校验字符合法性,0为数字,1为运算符,-1为未使用的运算符 - - 需要校验的字符 - - - - - 校验运算式字符串合法性(todo:待进一步完善检测逻辑) - - 需要校验的字符串 - - - - - 返回表达式的值 'Momo 2022-11-10 增加 、Momo 2023-12-15 错误时抛出错误而不是弹窗 - - - - - - 将图像格式转换为二进制数组,以jpeg的格式 - - - - - - - 将图像格式转换为二进制数组 - - 图像 - 图像格式 - - - - - 将二进制数组转换为图像格式 - - - - - - - 将图片变更为String格式,默认PNG格式保存 - - - - - - - 将图片变更为String格式 - - - 保存格式 - - - - - 将图片string还原为图片格式 - - - - - - - 压缩图像到指定的高度与宽度 - - 图像 - 指定的宽度 - 指定的高度 - - - - - 压缩图像,根据宽度比 - - 图像 - 指定的宽度 - - - - - 压缩图像,根据高度比 - - 图像 - 指定的高度 - - - - - 按指定比例有损的压缩图像 - - - - - - - - - 获取图片的代码器信息 - - - - - - 截取整个电脑屏幕 - - - - - - 截取整个电脑屏幕,并指定文件路径下生成jpg格式文件。 - - - - 服务器密钥 - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 获取字符串的MD5值 - - 需要求MD5的原文字符串 - - - - - 获取文件的MD5值 - - 文件路径 - - - - - 将类对象序列化为xml文件 - - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - - 运行一条需要记录在撤销栈的命令 - - - - - 重做命令 - - - - - 撤销命令 - - - - - 运行命令,并将命令添加至撤销堆栈 - - - - - - 将命令添加至撤销堆栈 - - - - - 清空撤销命令堆栈 - - - - - 清空重做命令堆栈 - - - - - 清空撤销与重做命令堆栈 - - - - - 执行撤销命令 - - - - - 执行重做命令 - - - - - 测试数据入库类 - - - - - 是否能够连接远程网络 - - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - 项目索引 - 工艺站索引 - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - - 测试记录表名 - - - - 获取指定表中未存在的数据列集合 - - 数据库执行器 - 需要查询的数据库名 - 需要查询的数据表名 - 需要查询的字段名集合 - - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 在指定数据表中添加指定字段集合 - - 数据库执行器 - 需要查询的数据表名 - 添加字段的键值对,键为字段名,值为列的修饰 - 是否将执行命令保存到缓存表中 - - - - 过滤数据库名,当前sqlite数据库不需要指定库名 - - - - - - - - 保存执行语句到缓存表中 - - 数据库执行器 - Sql语句 - - - - 保存执行语句到缓存表中 - - Sql语句 - - - - 查询对应产品名的对应产品索引,指定执行器方式 - - - - - - - - - 根据判断条件获取数据库是否存在数据,若存在则更新该数据,不存在则插入一条数据 - - 数据库名,账号操作多库时必填 - 数据表名 - 需要更新或插入的数据 - 判断条件,如 `Sn` = '1001' - - - - 获取匹配的用户信息 - - 用户账号 - 用户密码 - - - - - 保存指定字段得测试记录至指定表格中。 - 直接执行保存操作,未检测表格是否存在。 - 保存失败则会抛出异常。 - - 数据表名 - 字段内容 - - - - 新增SN至云端总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - - - - 新增SN至本地总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - 是否将结果保存至本地缓存表 - - - - 更新Sn总表内容至远端数据库 - - DB执行器 - 数据库名 - 当前站位信息 - 当前测试结果 - - - - 更新本地SN总表的测试记录(用于处理组播写入Sn总表操作) - - 测试条码 - 对应总表站位顺序 - 测试时间 - 测试结果 - A1站对应条码 - - - - 更新远程订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - - - - 更新本地订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - 是否将执行命令保存到缓存表中 - - - - 更新本地数据库测试记录,若存在相同条码号的记录则删除后添加 - - - - - - - - - - 更新本地数据库测试记录 - - - - - - - - - - 保存测试记录至云端数据库 - - - - - - - - - - 保存唯一测试日志至云端数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存测试记录至本地数据库 - - - - - - - - - - 保存唯一测试记录至本地数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存唯一测试记录至数据库,若存在相同条码号的记录则覆盖 - - - - - - - - 保存测试记录至数据库。 - - - - - - - - 更新组装站所有条码中与主条码产品相同的条码的测试信息(除主条码) - - - - - - - - 添加指定字段到测试记录表中 - - 测试记录表明 - 字段键值对,键为字段名,值为字段描述 - - - - 从数据表中查询对应客户订单号的内部订单信息 - - 客户订单索引 - - - - - 从数据表中查询对应客户订单号的客户订单信息 - - 客户订单索引 - - - - - 通过项目(产品)索引与条码查询客户订单号 - - - - - - - - 查询所有MO的名称与索引,优先云端,其次本地 - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询所有的错误代码,返回数据表 - - - - - - 查询所有的产品类相关,返回数据表 - - - - - - 获取当前的测试记录数据表 - - 项目索引 - 站位索引 - - - - - 获取当前的条码指定站位的测试记录数据 - - 项目索引 - 站位索引 - - - - - 从远程条码总表中获取条码信息 - - - - - - - 从本地条码总表中获取条码信息 - - - - - - - 更新数据库服务表中的信息 - - 服务索引 - 更新字段值及内容 - - - - 更新缓存 - - - - - - - 生产流程签名表,待删除 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 流程签名 - - - - - Sn关联信息表 - - - - - 索引 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 录入时间 - - - - - 更新时间,用于同步下载 - - - - - 建表语句 - - 建表语句 - - - - 用户操作记录总表 - - - - - 操作者 - - - - - 操作时间 - - - - - 操作内容说明 - - - - - 建表语句 - - 建表语句 - - - - 内部订单索引 - - - - - 订单ID - - - - - 内部单号 - - - - - 订单所属公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 创建时间 - - - - - 修改日期 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 订单状态 - - - - - 交货时间 - - - - - 适用站位 - - - - - 条码范围 - - - - - 建表语句 - - 建表语句 - - - - 客户订单表 - - - - - 订单索引 - - - - - 公司索引 - - - - - 订单生产产品索引 - - - - - 订单号 - - - - - 生产数量 - - - - - 交货日期 - - - - - 订单生成日期 - - - - - 修改日期 - - - - - 成本单价 - - - - - 销售单价 - - - - - 订单状态 - - - - - 建表语句 - - 建表语句 - - - - 产线索引 - - - - - 产线名称 - - - - - 产线描述 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 生产计划索引 - - - - - 订单索引 - - - - - 内部订单 - - - - - 站位索引 - - - - - 产线索引 - - - - - 生产时间 - - - - - 修改日期 - - - - - 已完成产量 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 项目总表 - - - - - 项目唯一标识 - - - - - 项目类型索引 - - - - - 项目名称 - - - - - 项目描述 - - - - - 创建人 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 预览图 - - - - - 预览图 - - - - - 单价 - - - - - 单价单位 - - - - - 当前项目是否有效 - - - - - 最后有效日期 - - - - - 录入条码总表类型,0无订单,1有订单 - - - - - 建表语句 - - 建表语句 - - - - 产品类型 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 不良代码类型表 - - - - - 索引 - - - - - 所属维修分类索引 - - - - - 名称 - - - - - 创建日期 - - - - - 更新时间 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修日志索引 - - - - - 维修产品索引 - - - - - 所属站位索引 - - - - - 所属订单索引 - - - - - 维修所属测试日志索引 - - - - - 维修产品条码 - - - - - 测试日志所属测试流程名称 - - - - - 产品测试日志失败步骤名 - - - - - 产品测试日志失败信息 - - - - - 产品测试日志错误代码 - - - - - 维修产品日期 - - - - - 当条记录更新时间 - - - - - 维修原因类型 - - - - - 维修原因 - - - - - 维修来源 - - - - - 维修来源订单号 - - - - - 维修人工注释 - - - - - 维修产品结果索引 - - - - - 产品图像文件名1 - - - - - 产品图像文件名2 - - - - - 产品图像文件名3 - - - - - 产品图像文件名4 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 索引 - - - - - 所属维修分类索引 - - - - - 名称 - - - - - 创建日期 - - - - - 更新时间 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 索引 - - - - - 报修人员 - - - - - 报修单号 - - - - - 产品类型 - - - - - 产品条码 - - - - - 产品图像 - - - - - 不良品来源 - - - - - 不良代码 - - - - - 不良说明 - - - - - 创建日期 - - - - - 更新时间 - - - - - 维修进度 - - - - - 维修结果 - - - - - 维修记录索引 - - - - - 维修人员 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 维修结果名称 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修来源索引 - - - - - 维修来源名称 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 维修类型索引 - - - - - 维修类型说明 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 订单ID - - - - - 内部单ID - - - - - 机型ID - - - - - 条码 - - - - - 创建时间 - - - - - 更新时间 - - - - - 条码生成类型 - - - - - 参与组装条码 - - - - - 被组装的时间 - - - - - 第1站测试时间 - - - - - 第2站测试时间 - - - - - 第3站测试时间 - - - - - 第4站测试时间 - - - - - 第5站测试时间 - - - - - 第6站测试时间 - - - - - 第7站测试时间 - - - - - 第8站测试时间 - - - - - 第9站测试时间 - - - - - 第10站测试时间 - - - - - 第11站测试时间 - - - - - 第12站测试时间 - - - - - 第1站测试结果 - - - - - 第2站测试结果 - - - - - 第3站测试结果 - - - - - 第4站测试结果 - - - - - 第5站测试结果 - - - - - 第6站测试结果 - - - - - 第7站测试结果 - - - - - 第8站测试结果 - - - - - 第9站测试结果 - - - - - 第10站测试结果 - - - - - 第11站测试结果 - - - - - 第12站测试结果 - - - - - 建表语句 - - 建表语句 - - - - 产品需要索引客户订单号表 - - - - - 索引,暂无作用 - - - - - 客户订单索引 - - - - - 内部订单号 - - - - - 产品索引 - - - - - 工作站索引集合以,分割 - - - - - 创建时间 - - - - - SN前缀 - - - - - SN起始号 - - - - - SN结束号 - - - - - 产品工艺站总表 - - - - - 工艺站索引 - - - - - 项目索引 - - - - - 工艺站名称 - - - - - 工艺站类型 - - - - - 工艺站序号,从1开始 - - - - - Sn总表序号 - - - - - 工艺站描述 - - - - - 最后更新日期(重复字段等待删除) - - - - - 修改日期 - - - - - 测试记录表名 - - - - - 预览图片 - - - - - 备注 - - - - - 最新测试包名 - - - - - 最新包MD5 - - - - - 当前站位是否有效 - - - - - 站位条码生成规则,1系统生成,2客户录入 - - - - - 编辑密码 - - - - - 发布密码 - - - - - 建表语句 - - 建表语句 - - - - 工艺站包索引 - - - - - 项目索引 - - - - - 站位索引 - - - - - 创建时间 - - - - - 更新时间 - - - - - 当前包名 - - - - - 当前包MD5值 - - - - - 记录本版本更改内容 - - - - - 当前包是否有效 - - - - - 登录用户索引 - - - - - 登录用户名称 - - - - - 发布电脑的公网IP - - - - - 发布电脑用户名 - - - - - 发布电脑的SID - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 用户数据库同步总表 - - - - - 需要同步的数据表名 - - - - - 数据表版本编号 - - - - - 最近同步的本地时间 - - - - - 同步类型,如全表下载(all),或是增量下载(new) - - - - - 同步时需要更新的数据列 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - - 添加需要同步的数据表名至同步表中 - - 数据库名 - 需要同步的数据表名 - 同步类型,all为全表下载,new为增量下载 - 同步时下载的字段,默认为*全字段下载 - - - - - 数据库连接涉及多库操作时,新增数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,删除后更新触发器 - - 数据库名 - 数据表名 - - - - - 测试记录表,不同项目不同站表名不同 - - - - - 用户唯一标识 - - - - - 设备唯一索引 - - - - - 生产线索引 - - - - - 内部订单索引 - - - - - 应用程序名 - - - - - 测试流程名 - - - - - 产品SN唯一索引 - - - - - 测试起始时间 - - - - - 测试耗时 - - - - - 测试结果 - - - - - 错误代码 - - - - - 失败步骤集合 - - - - - 失败步骤集合 - - - - - 自定义字段,由实际使用中添加字段 - - - - - 数据表名 - - 项目索引 - 工艺站索引 - - - - - 建表语句 - - 建表语句 - - - - 产商的客户总表 - - - - - 修改日期 - - - - - 建表语句 - - 建表语句 - - - - 本地未上传记录缓存表 - - - - 数据库操作记录表枚举值 - - - 序列号 - - - 用户名 - - - 日期时间 - - - 数据库语句 - - - 是否已经同步到远程数据库 - - - 同步出错编码 - - - 同步出错提示 - - - 备注 - - - - Sqlite数据库建表语句 - - 建表语句 - - - -索引 - - - - - 数据服务索引 - - - - - 软件名 - - - - - 软件版本 - - - - - 注册日期与时间 - - - - - 最后活动日期与时间 - - - - - 最后活动信息 - - - - - 备注 - - - - - 索引 - - - - - 数据服务索引 - - - - - 软件名称 - - - - - App版本 - - - - - 测试项目名 - - - - - 测试站名 - - - - - 测试流程名 - - - - - 生成日期 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 客户总表 - - - - - 客户唯一标识 - - - - - 客户公司名 - - - - - 创建日期 - - - - - 修改日期 - - - - - 服务索引唯一值 - - - - - 鉴权文件索引 - - - - - 鉴权文件有效日期 - - - - - 公司名 - - - - - 服务终端内核 - - - - - 服务终端类型 - - - - - 服务终端名称 - - - - - 服务自定义标识名称 - - - - - 服务MAC地址 - - - - - CPU序列号 - - - - - 服务版本 - - - - - 服务注册日期 - - - - -服务最后活动日期 - - - - - 服务是否有效,注册默认有效 - - - - - 数据服务在线 - - - - - 数据服务在线时间 - - - - - 数据服务需要人工处理错误信息 - - - - - 更新服务版本 - - - - - 更新服务是否在线 - - - - - 更新服务需要人工处理错误信息 - - - - - 子网名称 - - - - - 设备角色 - - - - - 与子网服务连接状态 - - - - - 缓存表数量 - - - - - 网上邻居 - - - - - 索引 - - - - - 数据服务索引 - - - - - 数据服务版本 - - - - - 更新服务版本 - - - - - 厂商名称 - - - - - 生成日期与时间 - - - - - 公网IP - - - - - 私网IP - - - - - Mac地址 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 数据库总表 - - - - - 数据库唯一标识 - - - - - 所属公司索引 - - - - - 数据库名 - - - - - 数据库用户名 - - - - - 数据库密码 - - - - - 数据库说明 - - - - - 修改日期 - - - - - 设备总表 - - - - - 设备唯一索引 - - - - - 设备名称 - - - - - 设备类型 - - - - - 设备MAC地址 - - - - - 首次登陆时间 - - - - - 末次在线时间 - - - - - 修改日期 - - - - - 设备在线状态 - - - - - 是被是否有效 - - - - - 设备日志总表 - - - - - 设备唯一标识 - - - - - 操作时间 - - - - - 公网IP - - - - - 内网IP - - - - - License文件名 - - - - - 产生日志的APP名 - - - - - App版本号 - - - - - 测试配置文件名称 - - - - - 用户唯一标识 - - - - - 操作内容 - - - - - 错误代码总表 - - - - - 错误代码唯一标识 - - - - - 错误提示信息 - - - - - 统计图中提示颜色 - - - - - 修改日期 - - - - - 索引 - - - - - 公司名称 - - - - - 发布日期 - - - - - 有效日期 - - - - - 备注 - - - - - 操作日志表,对公共库的操作记录 - - - - - 索引,无作用 - - - - - 用户唯一标识 - - - - - 操作时间 - - - - - 具体操作内容 - - - - - 功能模块总表 - - - - - 功能模块唯一索引 - - - - - 功能模块名称 - - - - - 功能模块详细说明 - - - - - 操作级别,读为0,写为1 - - - - - 修改日期 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 发布版本号 - - - - - 发布日期 - - - - - 发布用户索引 - - - - - 发布说明 - - - - - 程序更新软件表 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 最新版本号 - - - - - 发布日期 - - - - - 二进制文件 - - - - - MD5校验码 - - - - - FTP包名 - - - - - 需要同步下载表名总表 - - - - - 表名 - - - - - 表版本编号 - - - - - 同步类型 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - 数据库操作记录表枚举值 - - - 日志索引 - - - 厂商名称 - - - 应用名称 - - - 应用版本 - - - 日志生成日期与时间 - - - 设备公网IP - - - 设备内网IP地址 - - - 设备MAC - - - 设备系统版本 - - - 设备名称 - - - 设备用户名 - - - 设备网络状态 - - - 日志类型 - - - 日志内容 - - - - Sqlite数据库建表语句 - - 建表语句 - - - - 测试计划编辑信息提示 - - - - - 列名 - - - - - 列类型 - - - - - 列描述 - - - - - 列默认值 - - - - - 修改日期 - - - - - 用户操作功能权限总表 - - - - - 用户唯一标识 - - - - - 数据库唯一标识 - - - - - 拥有完整权限的功能唯一标识,用,分割 - - - - - 拥有读写权限的功能唯一标识,用,分割 - - - - - 拥有只读权限的功能唯一标识,用,分割 - - - - - 用户测试命令总表 - - - - - 修改日期 - - - - - 建表语句 - - 建表语句 - - - - 用户总表 - - - - - 用户ID唯一索引 - - - - - 用户登陆账号 - - - - - 用户密码 - - - - - 公司索引ID - - - - - 创建日期 - - - - - 修改日期 - - - - - 手机号码 - - - - - 微信号 - - - - - 邮箱地址 - - - - - 是否有效 - - - - - Ftp服务器地址 - - - - - - Ftp是否能正常连接,连接正常返回True,连接失败则产生异常 - - - - - - 文件是否存在 - - - - - - - 文件上传 - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - License文件字段枚举 - - - 索引 - - - 客户名 - - - 注册日期 - - - 截止日期 - - - 管理员账号 - - - 管理员密码 - - - 远程数据库URL或IP - - - 远程数据库连接端口 - - - 远程数据库账号 - - - 远程数据库密码 - - - 远程数据库私有操作库 - - - 远程数据库共有操作库 - - - 本地数据库存放文件夹 - - - 本地数据库文件名 - - - 本地数据库密码 - - - Ftp服务器 - - - Ftp通讯端口 - - - Ftp通讯账号 - - - Ftp通讯密码 - - - 客户MAC地址,锁定|MAC时使用 - - - 备注 - - - UTS版本号 - - - 签名 - - - License文件校验返回枚举值 - - - 未找到License - - - 无法打开License - - - 无效的License - - - 校验通过 - - - License校验结果 - - - 校验通过 - - - 无效的客户 - - - 无效的注册日期 - - - 无效的截止日期 - - - 无效的用户 - - - 无效的用户密码 - - - 无效的MAC地址 - - - 无效的UTS版本 - - - 无效的签名 - - - 无效的数据库地址 - - - 无效的数据库名 - - - 无效的数据库用户 - - - 无效的数据库密码 - - - 无效的数据库端口号 - - - 无效的数据库名(sqlite) - - - 无效的数据库文件夹名(sqlite) - - - 存储License签名校验值 - - - License密钥 - - - - 索引 - - 索引 - - - - 获取客户名 - - 客户名 - - - - 获取注册日期 - - 注册日期 - - - - 获取截止日期 - - 截止日期 - - - - 获取管理员账号 - - 管理员账号 - - - - 获取管理员密码 - - 管理员密码 - - - - 远程数据库URL或IP(待删除字段) - - 远程数据库URL或IP - - - - 远程数据库连接端口 - - 远程数据库连接端口 - - - - 远程数据库账号 - - 远程数据库账号 - - - - 远程数据库密码 - - 远程数据库密码 - - - - 远程数据库操作库 - - 远程数据库操作库 - - - - 远程数据库公开库 - - - - - - 本地数据库存放文件夹 - - 本地数据库存放文件夹 - - - - 本地数据库文件名 - - 本地数据库文件名 - - - - 本地数据库密码 - - 本地数据库密码 - - - - Ftp服务器地址(待删除字段) - - Ftp服务器地址 - - - - Ftp服务器端口 - - Ftp服务器端口 - - - - Ftp服务器用户 - - Ftp服务器用户 - - - - Ftp服务器密码 - - Ftp服务器密码 - - - - 获取客户MAC地址 - - 客户MAC地址 - - - - 获取备注 - - 备注 - - - - 获取UTS版本号 - - UTS版本号 - - - - 获取签名 - - 签名 - - - - 读取License文件所有内容,并进行解密,将解密后的内容存入License字典中 - - License文件完整路径(含文件名) - - - - 类的作用:获取服务器信息 - 创建人员:ML - Log编号:1 - 修改描述:创建 - 修改日期:2019-10-15 - 修改人员:ML - - - - Server文件字段枚举 - - - 客户名 - - - 数据库服务器地址 - - - 数据库服务器端口 - - - 数据库名 - - - 数据库用户名 - - - 数据库用户密码 - - - Ftp地址 - - - Ftp端口 - - - Ftp用户名 - - - Ftp用户密码 - - - Server文件校验返回枚举值 - - - 未找到Server - - - 无法打开Server - - - 无效的Server - - - 校验通过 - - - 存储Server校验返回值 - - - 存储Server所有信息 - - - 服务器密钥 - - -Server所有可用字段 - - - - 获取客户名 - - 客户名 - - - - 获取服务器名 - - 服务器名 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中 - - Server文件完整路径(含文件名) - 读取Server文件的状态 - - - - 校验Server - - Server文件完整路径(含文件名) - 校验是否通过 - - - 是否记住密码 - - - 是否自动登录 - - - 是否正在登录中 - - - 校验文件信息 - - - 用户登录信息 - - - 修改窗体标题 - - - 读取Setting中的缓存量 - - - 保存Setting中的缓存量 - - - - 初始化账号控件显示 - - - - - 密码获取与保存机制以后会修改,或加密 - - - - 记住密码复选框状态修改触发事件 - - - 自动登录复选框状态修改触发事件 - - - - 使用账号密码登录 - - - - 是否需要显示登陆页面,方便以后编译时,生成不登陆工具 - - - 是否记住密码 - - - 是否自动登录 - - - - 用户信息类 - - - - 账号索引 - - - 公司索引 - - - 获取或设置用户账号 - - - 获取或设置用户密码 - - - 获取或设置用户注册日期 - - - 获取或设置用户电话号码 - - - 获取或设置用户微信号 - - - 获取或设置用户电子邮箱 - - - 获取或设置用户是否有效 - - - - 已下单待转内部单 - - - - - 已转M/O待制条码 - - - - - 已制SN待制计划 - - - - - 已制计划待生产 - - - - - 生产中 - - - - - 完成生产 - - - - - 已完成 - - - - - 取消 - - - - - 暂停中 - - - - - 客户订单信息 - - - - - 订单索引 - - - - - 订单条码序号字符串 - - - - - 订单状态 - - - - - 订单总量 - - - - - 订单产品 - - - - - 订单所属客户索引 - - - - - 订单交期 - - - - - 订单创建时间 - - - - - 成本单价 - - - - - 销售单价 - - - - 错误代码管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 提取错误代码与错误消息字符串中的错误代码 - - - - - - 内部订单信息 - - - - - 内部订单索引 - - - - - 客户订单索引 - - - - - 内部订单号字符串 - - - - - 公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 内部订单创建时间 - - - - - 订单交期 - - - - - 目标产能 - - - - - 当前总产能 - - - - - 内部订单状态 - - - - 内部订单管理器 - - - 初始化测试器线程锁 - - - - 创建内部订单管理器单例 - - - - - - 初始化指定内部订单索引的订单详情 - - - - - 产线管理器,全局唯一 - - - 初始化管理器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 获取所有产线的名字 - - - - - 产品类型管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 从数据库中获取所有的产品类型 - - - - 测试命令管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 初始化版主信息 - - - - - - 初始化流程站帮助信息 - 从本地数据库中读取 - - 数据库类型 - 数据库连接字符串 - - - 测试流程列管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 检测用户对项目的修改是否输入合法 - 不合法时会抛出异常 - - - - - 初始化项目模式 - - - - - 从云端数据库加载项目信息 - - - - - 从本地Xml文件加载项目信息 - - - - - 从本地数据库加载项目信息 - - - - - 新建项目信息 - - - - - 当前项目初始化方式 - - - - - - 项目索引,创建项目时生成 - - - - - - 项目类型索引 - - - - - - 项目名称 - - - - - - 项目图像在FTP中的文件名 - - - - - - 项目描述 - - - - - - 项目有效日期 - - - - - - 项目是否有效 - - - - - - 1有订单模式,0无订单模式,暂无作用 - - - - - - 项目备注 - - - - - - 单价 - - - - - - 项目站集合 - - - - - - 被删除测试站集合 - - - - - - 项目信息是否被修改 - - - - - - 预览图被修改 - - - - - - 项目当前操作人员索引 - - - - - - 项目当前操作人名称 - - - - - - 项目原图 - - - - - - 项目预览图 - - - - - - 初始化项目 - - 项目名称 - 加载模式 - - - - 初始化项目 - - 项目索引 - 加载模式 - - - - 加载本地项目 - - 项目名称 - - - - 加载项目所有站 - - - - - - 加载测试站信息 - - Xml节点 - - - - 通过数据表更新项目站信息 - - - - - - 通过数据表更新项目信息 - - - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引从远程数据库初始化项目信息 - - 项目索引 - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 项目索引 - - - - 获取当前站位所有站包 - - - - - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 项目索引 - - - - 通过项目索引从本地数据库初始化项目信息 - - 项目索引 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 数据库名 - 项目名称 - - - - 通过项目名称从远程数据库初始化项目信息 - - 项目名称 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 项目名称 - - - - 通过项目名称从本地数据库初始化项目信息 - - 项目名称 - - - - 加载本地项目列表 - - - - - - - 从数据表中提取项目名称列表 - - - - - - - 从远程数据库加载项目名列表 - - - - - - 从本地数据库加载项目名列表 - - - - - - 加载项目列表 - - 加载模式 - - - - - 保存项目所有站信息 - - - - - - 保存项目至本地文件 - - - - - - 将项目信息保存至本Xml文件 - - - - - 查询项目是否存在 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - - 项目表修改原有项目信息 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 项目表添加新项目 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 更新项目索引 - - - - - 更新上传项目信息 - - - - - - - 更新工艺站索引 - - - - - 发布项目,将项目保存至本地,然后发布项目 - - - - - 删除项目在云端所有相关信息 - - - - - 工艺站序号 - - - - - 工艺站名称 - - - - - 工艺站类型,下拉选择 - - - - - 工艺站预览图,按键加载 - - - - - 工艺站描述 - - - - - 条码生成方式,1.系统生成,2.用户录入 - - - - - 允许测试设备类型 - - - - - 允许测试软件名称 - - - - - 工艺站包名,按键加载 - - - - - 初始化测试站表格 - - 表格控件 - - - - 当前App所属服务索引 - - - - - - 当前App名称 - - - - - - 当前App版本 - - - - - - 当前App运行信息 - - - - - - 当前App状态,默认0为空闲 - - - - - - 调试信息 - - - - - 流程信息 - - - - - 警告信息 - - - - - 错误信息 - - - - - 致命信息 - - - - - 定期更新APP的活动时间,调用则会定期基于本地调用存储过程至缓存表 - - - - - 添加日志内容至缓存的日志队列中 - 调用SaveLogQueueToDb将队列中的数据写入到数据库 - - Tip:缓存队列仅记录每条日志不同的内容,例如写入时间,日志类型,日志内容等 - - - - - - - 网络发送Json字符串,字符串以回车换行结尾 - - - - - - 超时接收回复信息,以回车换行结尾 - - 超时时间,单位毫秒 - 接收到的字符串,超时返回空字符串 - - - - 服务任务类型枚举集合 - - - - - 数据库同步 - - - - - 监听Json文件 - - - - - 服务任务状态枚举值 - - - - - 启动状态 - - - - - 停止状态 - - - - - 服务任务类型 - - - - - - 服务任务名,服务任务的唯一索引 - - - - - - 服务任务的状态 - - - - - - 任务开启 - - - - - 任务停止 - - - - - 任务重启 - - - - - 任务参数集合设置 - - 任务参数键值对 - - - - 任务参数集合获取 - - - - - - 任务类型接口,每个任务必须实现的功能 - - - - - 任务开始 - - - - - 任务退出 - - - - - 重启任务 - - - - - 设置任务参数 - - - - - - 获取任务参数 - - - - - - 应用程序与服务通讯协议类,可将此类序列化为Json字符串或反序列化Json字符串为此类 - - 更改须知: - 当需要增加不参与序列化的共有字段时, - 在变量名上一行,参照JsonFilter字段增加JsonIgnore特性. - - 当需要增加命令名称类型时, - 首先在CmdNamesEnum中增加枚举字段, - 之后在FilterFiled函数中,增加指定命令名称中需要序列话的字段名数组. - - 2021-03-26 - 增加软件与设备通讯命令,用于注册软件 InitApp - - - - - - 发送控制命令时,通信的用户账号 - - - - - 发送控制命令时,执行程序名 - - - - - 通讯时使用的命令名称 - - - - - 用户存储服务中任务信息 - - - - - 指定需要控制的任务名称集合 - - - - - 回复命令时,指示命令执行的状态 - - - - - 回复命令时,指定命令执行后的提示信息 - - - - - 回复命令时,获取当前服务的版本号 - - - - - 发送与恢复时,软件信息 - - - - - 是否为回复数据 - - - - - 是否启用筛选功能,默认为启用筛选功能 - 此字段不参与Json序列化 - - - - - Json序列化时的显示格式,分行对齐显示或是单行无格式显示,默认单行显示 - 此字段不参与Json序列化 - - - - 任务命令执行状态列表 - - - 任务命令列表 - - - 添加任务 - - - 设置任务 - - - 获取任务 - - - 获取所有任务 - - - 删除任务 - - - 删除所有任务 - - - 开启任务 - - - 开启所有任务 - - - 暂停任务 - - - 暂停所有任务 - - - 重启任务 - - - 重启所有任务 - - - 获取DataService版本信息 - - - 初始化APP,从服务端获取APP运行参数 - - - App上报状态至服务 - - - 服务下发通知App - - - - App上报时包含的类型 - - - - - APP已启动 - - - - - APP已关闭 - - - - - APP站位切换 - - - - - APP心跳包 - - - - - Sn总表发生变化 - - - - - 服务下发时包含的类型 - - - - - 序列化类中字段为Json字符串 - - - - - - 反序列Json字符串填充当前类中 - - - - - - 根据任务名称,设置参与序列化的字段名称 - 增加任务名称时,需要更新该函数 - - - - - - - 针对服务任务的Json设置 - 当前作用:筛选指定类中字段参与Json序列化 - - - - - 需要操作的字段名 - 与_retain参数结合使用,实现指定类中某些字段的Json序列化 - - - - - 是否显示指定字段 - 为真时,仅显示指定的字段名 - 为假时,仅不显示指定的字段名 - - - - - 校验条码未测试后处理方式 - - - - - - 校验条码已参与包装后处理方式 - - - - - - 校验条码不属于指定MO后处理方式 - - - - - - 保存图像的数量 - - - - - - 解锁密码 - - - - - - 条码类型 - - - - - - 缺失条码数量后的处理方式 - - - - - - 缺失条码数量后的解锁密码 - - - - - - 是否自动打印 - - - - - - 发生错误后报警文件 - - - - - - 模板文件名 - - - - - - 箱号编辑密码 - - - - - - 公司Logo文件 - - - - - - 公司名称 - - - - - - 箱号规则 - - - - - - 箱号条码 - - - - - - 前置站位 - - - - - - 后置站位 - - - - - - 软件版本 - - - - - - 读取测试站属性 - - - - - - 校验条码失败后处理方式 - - - - - 不处理 - - - - - 校验失败 - - - - - 程序锁定,需要管理员密码解锁,并写入注册表 - - - - - 忽略错误继续录入 - - - - - 条码总数缺少的处理方式 - - - - - 允许录入 - - - - - 不允许录入 - - - - - 需要输入密码解锁 - - - - - 条码单元格的类型 - - - - - 以模板内容为准 - - - - - CODE39支持的字符:空格, 数字, 大写字母, $, %, *, +, -, ., / - - - - - CODE128A支持的字符:空格, 数字, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, / - - - - - CODE128B支持的字符:空格, 数字, 小写字母, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /, ~ - - - - - CODE128C只能包含数字 - - - - - EAN128只能包含数字 - - - - - EAN13是商品编码,必须是13位数字,第13位是根据前面12位运算后得到的 - - - - - Interleaved2of5只能包含数字,数字的长度必须为偶数 - - - - - 修改后的节点 - - - - - 测试流程所关联的项目站包信息 - - - 处于更新表格状态中,不触发表格单元格修改事件 - - - 多个参数间的分割符号 - - - 当前活动节点 - - - 节点选择改变事件 - - - 节点文本被修改事件 - - - 测试命令管理器 - - - 错误代码管理器 - - - - 屏蔽表格引发自定义事件,避免行节点内容修改,todo:暂未完成 - - - - - - 对第二行的Action执行一遍操作,以触发更新事件 - - - - - 光标离开grd表格时,黄色底色切换到选中行 - - - - - 光标进入grd表格时,原底色切换到选中行 - - - - - 根据CmdType 和 isAction 返回该行字体颜色 - - - - - - 鼠标移动到节点位置时所有子节点背景着色 - - - - - FixModule节点Action变化时子节点字体重新着色 - - - - - - FixModule节点Action变化时子节点字体重新着色 - - - - - 根据总表状态对单元格字体重新着色 - - - - - 遍历表格,并更新到全局数组 - - - - - - 节点状态变更,修改节点行颜色 - - - - - - 节点状态变更,修改节点行颜色 - - - - - - 选定行使能或清除Action选项 - - - - - 更新表格内容到缓存,但是并不重新着色 - - - - - 更新ActionEn信息 - - - - - 光标移动时,所在行底色高亮 - - - - - 获取指定行的NodeIndex - - - - - - 获取指定行的NodeLever - - - - - - 获取指定行的NodeIndex - - - - - - 获取指定行的RowType - - - - - - 折叠的列号 - - - - - - 折叠的起始行号 - - - - - - 初始化测试站表格 - - - - - 展开行节点 - - - - - - 节点升级 - - - - - 节点降级 - - - - - 反显节点所在行 - - - - - - 步骤,固定 - - - - - 断点执行,固定列 - - - - - 是否运行 - - - - - 调试结果 - - - - - 节点下限 - - - - - 节点上限 - - - - - 节点测试耗时 - - - - - 模块名称 - - - - - 节点解析 - - - - - 节点控制执行类型 - - - - - 命令类型 - - - - - 命令关键字 - - - - - 执行命令参数 - - - - - 失败重试次数 - - - - - 重试间隔 - - - - - 当前返回值是否记录入库 - - - - - 返回值变量名 - - - - - 错误代码 - - - - - 错误提示 - - - - - 产线变化 - - - - 修改窗体标题 - - - - 显示窗体 - - - - - - 产线变化 - - - - - 测试站修改时处理函数 - - - - - 初始化行节点的风格 - - - - - 快捷键操作 - - - - - - - 读取XML,加载树状视图 - - - - - 读取XML,加载树状视图 - - - - - 将树状视图导出为Xml - - - - - 调试模式 - - - - - 未知类型 - - - - - 扫码目检站 - - - - - 测试站 - - - - - 条码关联站 - - - - - 成品录入站 - - - - - 抽检站 - - - - - 包装站位 - - - - - 唯一条码测试站 - - - - - 包装测试站,2023-05-09添加,参考uts-win的方式做包装站 - - - - - 无序列号 - - - - - 系统生成 - - - - - 测试时录入 - - - - - 用户录入 - - - - - 当前站位类型 - - - - - 项目站索引,项目站唯一索引,新建站时自动生成,生成后不能修改 - - - - - - 项目站名称 - - - - - - 项目站序号,表示该站在项目站总流程中测试顺序 - 例如1,表示当前为第一站 - - - - - - 项目站内容描述 - - - - - - 工艺站预览图 - - - - - - 使用测试站的设备类型,待删除 - - - - - - 使用测试站的设备软件名,待删除 - - - - - - 项目站当前操作人员,为当前登录人员账号 - - - - - - 生成测试站时的顺序,从1开始 - - - - - - 当前站位是否有效 - - - - - - 条码生成规则,1系统生成,2客户录入 - - - - - - 项目站关联的项目站包信息 - - - - - - 项目站所属项目信息 - - - - - - 工艺站信息已被修改 - - - - - - 工艺站类型已被修改 - - - - - - 工艺站预览图已被修改 - - - - - 测试包文件名称,不含.uts后缀 - - - 测试包文件名称,含.uts后缀 - - - - 当前站包所属站位类型 - - - - - 测试站包MD5值 - - - 测试站包版本 - - - 修改项目流程时所需密码 - - - 发布项目流程时所需密码 - - - 测试站包有效日期 - - - 测试站包创建时间 - - - 测试站包修改时间 - - - 发布测试站包的应用程序版本 - - - 发布测试站包的图片 - - - - 项目站包历史发布说明 - - - - - - 当前版本发布说明 - - - - - 站位流程,不同的站位流程类型不同 - - - 测试站包所在的测试站信息 - - - - 创建项目站包 - - - - - 加载项目站包信息文件 - - - - - - 加载项目站包时,校验路径 - - - - - - 加载项目站包时,解压项目文件到指定路径 - - - - - - 加载测试站包时,加载项目站包信息 - - - - - - 加载测试站包内容 - - - - - 保存项目站历史版本说明 - - - - - - 保存项目站信息节点内容 - - - - - - 保存项目站包信息文件 - - - - - - 发布项目时,校验路径合法性 - - - - - 发布项目时,将原项目包文件夹名重命名为预发布项目包文件夹名 - - 预发布项目站包名 - - - - 发布项目时,将缓存信息保存到本地文件中 - - 预发布项目站包名 - - - - 发布项目时,压缩项目文件夹至发布路径 - - 预发布项目站包名 - 预发布项目站包文件名 - - - - 发布项目成功后,更新数据库数据 - - - - - - 发布站包时,更新站位表信息 - - - - - - - 发布站包时,更新站包发布记录表信息 - - - - - - - 发布项目成功后,更新项目包信息 - - - - - 发布项目站包 - - - - - 模块名称 - - - - - - 控制命令类型 - - - - - - 当前流程步骤的解释 - - - - - - 调试模式下运行到当前节点后,暂停运行 - - - - - - 当前流程步骤是否允许执行 - - - - - - 当前流程步骤是否会被执行 - - - - - - 当前流程步骤执行结果是否保存至数据库,FALSE则为临时变量 - - - - - - 行的类型 - - - - - - 行节点关联的站流程 - - - - - - 行节点执行结果信息 - - - - - - 节点树的所有节点集合 - - - - - - 节点所属节点数组的位置,从0开始,即头结点的的索引 - - - - - - 节点的级别,可见节点级别从0开始 - - - - - - 节点在父节点中的索引,可见节点级别从0开始 - - - - - - 记录总使用的说明内容 - - - - - - 子节点总数 - - - - - - 所有子节点总数 - - - - - - 行下包含的子行集合 - - - - - - 当前节点的同级上一节点,若当前节点为首节点则返回nothing - - - - - - 当前节点的同级下一节点,若当前节点为尾节点则返回nothing - - - - - - 当前节点的父节点 - - - - - - 当前节点树的起始节点 - - - - - - 内部缓存子节点 - - - - - 处于展开状态 - - - - - - 是否允许删除当前节点 - - - - - - 是否允许添加子节点 - - - - - - 允许操作当前节点内容 - - - - - - 允许移动节点改变节点的级别 - - - - - - 当前节点是否处于重试状态 - - - - - - 展开节点 - - - - - 折叠节点 - - - - - 展开或折叠节点 - - - - - 增加子节点 - - - - - 插入子节点 - - - - - 移除本身节点 - - - - - 清空节点所有子节点 - - - - - 节点上移 - - - - - 节点下移 - - - - - 节点左移 - - - - - 节点右移 - - - - - 节点深复制,创建一个完全相同信息的节点 - - - - - - 固定模块 - - - - - 模块,可以当作跳转入口 - - - - - 控制 - - - - - 流程 - - - - - 默认的初始化节点风格 - - - - - 从本地文件中初始化节点风格 - - - - - - 导出为XML文件 - - 文件路径 - - - - 加载行节点 - - - - - - - 更新节点的所有子节点的流程站指向 - - - - - - 更新节点的上一节点指向 - - 需要更新的节点 - - - - 更新节点的下一节点指向 - - 需要更新的节点 - - - - 新增节点后,更新父节点的所有子节点计数 - - 新增的节点 - - - - 删除节点后,更新父节点的所有子节点计数 - - 被删除的节点 - 包含当前节点 - - - - 插入节点后,更新节点下方节点的索引 - - 需要更新下方节点索引的节点 - - - - 删除节点后,更新节点下方节点的索引 - - - - - - 获取新添加的节点的链状目录索引 - - - - - - - 更新节点的所有子节点的链式结合的指向 - - - - - - - 删除节点后,更新链状列表 - - - 包含当前节点 - - - - 插入节点后,更新链状目录中受影响节点的索引 - - - - - - 删除节点后,更新链状目录中受影响节点的索引 - - 删除的节点 - 是否保存该节点 - - - - 移除指定节点 - - - - - - 清空节点 - - - - - 行节点表,当前选择行 - - - - - 行节点表,下拉框选择行 - - - - - 行节点表,下拉框所在列 - - - - - 详细信息表格内容变更类型 - - - - - 初始化测试站表格 - - - - - 单行信息表格命令修改后,同步刷新本身信息 - - - - - 下拉框选择对象事件 - - - - - - - 表格下拉框出现时触发事件 - - - - - - - 更新流程列名提示 - - - - - - 更新流程命令提示 - - - - - - - - - 单行信息表格更新当前行 - - - - - - 主表格选中单元格时触发事件 - - - - - - - - 根据CmdType 和 isAction 返回该行字体颜色 - - - - - - 详细信息表格内容变更类型枚举值 - - - - - 未变更 - - - - - 加载流程时时引起的变更 - - - - - 行节点信息修改引起的变更 - - - - - 切换选择节点引起的变更 - - - - - 关联节点内容变更 - - - - - 节点字体 - - - - - - 节点字体颜色 - - - - - - 节点图标 - - - - - - 节点图标索引 - - - - - - 节点背景颜色 - - - - - - 项目站包文件名 - - - - - - 项目站包创建者 - - - - - - 项目站包版本说明 - - - - - 测试流程是否已锁定 - - - - 头节点 - - - - - - 节点树状集合 - - - - - - 节点树的所有节点集合 - - - - - - 节点总数 - - - - - - '创建固定模块节点 - - - - - - - - 创建新的测试流程 - - - - - 保存为Xml文件 - - - - - - 读取测试站属性 - - - - - - 从Xml文件加载 - - - - - - 测试流程固定模块 - - - - - 空模块,无测试时默认值 - - - - - 主模块,测试起始模块 - - - - - 测试通过执行模块 - - - - - 测试失败执行模块 - - - - - 测试卸载执行模块 - - - - - 测试设置执行模块 - - - - - 自定义模块 - - - - - 模板文件名 - - - - - - 公司Logo文件 - - - - - - 串口名 - - - - - - 串口别名 - - - - - - 默认接收超时时间,通讯时超时设置为0时使用该值 - - - - - - 串口接受单字节间隔接受超时 - - - - - 当前串口是否已经打开 - - - - - - 清空接受缓冲区内容 - - - - 字符串发送 - - - 字符串发送,添加回车换行 - - - 十六进制字符串发送 - - - - 根据串口名,查询对应串口 - - - - - - - - 运行CMD命令并获取返回值 2022-10-25 1.6.2 版本 - - 执行文件路径 - 执行参数 - 超时时间 - 获取输出流内容 - 目标字符串,为空则错误输出流有内容则判定失败 - - - - - - 对数据库进行执行操作,用于查询单个字段内容 - - - - 显示提示的控件 - - - 提示文本 - - - 背景颜色 - - - 字体颜色 - - - 字体名称 - - - 字体大小 - - - 字体加粗 - - - 显示模式 - - - 模式参数 - - - - 显示提示图像执行器 - 耦合了 - - - - - UTS串口通讯返回值比较函数静态类 - - - - - 仅一个参数字符串比较,忽略大小写 - - 测试命令返回集合 - - - - - 判断目标字符串是否是上限或下限字符串中的某一个,忽略大小写,符合上下线中的任何一个则返回True - - - Momo 2022-09-19 添加命令,等于上下限其中的一个就返回true - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串,包含则返回False,不包含则返回True - - - Momo 2022-09-15 添加命令,包含指定字符则返回false,否则返回true - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串 - - - - - - 仅一个参数字符串是否包含关系,忽略大小写,返回数据包含上下限中任意一个字符串即算ok - - - - - - 仅一个参数字符串比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 确认字符串长度 - - 当前值 - 下限 - 上限 - - - - - 确认字符串中每个字符的格式 - - 当前值 - 字符校验模式 - - - - - 多参数字符串列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 浮点型比较方式 - - - - - - - 仅一个参数浮点型比较 - - 当前值 - 下限 - 上限 - - - - - 多参数浮点型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 整数型比较方式 - - - - - - - 仅一个参数整数比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 多参数整数型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 测试命令类型 - - - - - - 测试命令名称 - - - - - - 测试命令参数 - - - - - - 创建命令执行器 - - - - - - - 将参数中的相对路径替换为绝对路径 - - - - - - 字符串处理 - - - 字符串处理,以回车换行结尾 - - - 字符串处理,包含关系 - - - 十六进制字符串处理 - - - 整形字符串处理 - - - 小数型字符串处理 - - - 十六进制处理 - - - - 下限 - - - - - - 上限 - - - - - - 下限_2 - - - - - - 上限_2 - - - - - - 执行结果 - - - - - - 记录值 - - - - - - 执行结果提示信息 - - - - - - 执行耗时,包含重试耗时 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 当前串口对象 - - - - - UTS串口波特率,默认115200 - - - - - 接收等待最长毫秒数,默认100ms - - - - - 串口通讯写入失败计数,通讯成功置零,通讯失败则加1 - - - - - 串口通讯写入失败最大上限,默认5次 - - - - - 状态机执行间隔,默认10ms - - - - - 发送同步命令的间隔,默认1000ms - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 当前可以访问的串口名集合 - - - - 按键串口控制器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建按键串口控制器,若按键串口控制器已经创建则返回句柄 - - - - - - 开启任务 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令接收等待最长时间 - - - - - J_Controller状态机 - - - - - 退出状态机 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送心跳包 - - - - - 等待回复 - - - - - 发送控制通道命令 - - - - - 键值回复 - - - - - 连接成功 - - - - - 连接失败 - - - - 通讯串口 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - 接收起始时间 - - - - 打开串口 - - - - - - 通讯字符串的分隔符 - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 将参数字符串处理成参数列表 - - - - - - 输入框值 - - - - - - 密码模式 - - - - - - 当前百分比 - - - - -测试开始事件 - - -测试暂停事件 - - -测试成功事件 - - -测试失败事件 - - -测试结束事件 - - -测试状态变更事件 - - -测试计数变更事件 - - -测试节点变更事件 - - -测试节点完成事件 - - -测试节点结果变化事件 - - -测试时间变更事件 - - - 当前测试节点 - - - 当前测试固定模块 - - - 测试耗时计时器 - - - 单步执行耗时计时器 - - - 程序运行后,测试通过总数 - - - 程序运行后,测试失败总数 - - - 是否已执行设置模块 - - - 是否处于调试断点 - - - 是否退出调试断点 - - - 是否下一节点调试断点 - - - 内置模块入口集合 - - - 自定义模块下函数入口集合 - - - 测试结果内容 - - - 是否退出测试 - - - 测试时间线程 - - - 测试过程中,产生的变量存储 - - - 测试过程中,全局变量存储 - - - 测试过程中,使用的测试站位 - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建测试器,若测试器已经创建则返回句柄 - - - - - 测试状态 - - - - 判定测试失败的模式 - - - - - - 测试时,重新执行Setup模块 - - - - - 获取指定名称的模块节点 - - - - - - - 开始测试,此函数为正式测试调用 - - - - - 开始调试测试,此函数为正式测试调用 - - - - - 流程修改后保存,更新模块索引 - - - - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 执行内置模块函数 - - - - - - - 获取用户退出测试的执行返回结果 - - - - - - 获取不运行的节点的执行返回结果 - - - - - - 获取未知的行节点类型的执行返回结果 - - 当前行节点 - - - - - 执行模块流程 - - - - - - - 执行控制流程 - - - 测试结果 - - - - 执行控制结构的条件部分 - - - - - - - 执行类型为普通流程的行节点 - - - - - - - - 获取指定变量名的变量值 - - 变量名 - 调用模块时传入的局部变量 - - - - - 替换字符串中使用的变量,返回替换后的字符串 - - 原字符串 - 调用模块时传入的局部变量 - 替换后的字符串 - - - - 替换测试命令参数中的变量(变量格式:{var}),待删除 - - - - - - - 退出执行,测试结果为失败 - - - - - 测试主函数,测试Main模块,根据测试结果测试Pass/Fail模块 - - - - - 调试测试当前节点及其子节点 - - 节点对象 - - - - 从当前节点调试测试,直到测试完当前顶级模块 - - 节点对象 - - - - 测试单节点及之后的所有节点 - - - - - - 调试测试节点数组 - - - - - - 调试测试节点数组,包含其子节点 - - - - - - 调试测试子节点集合 - - - - - - 调试测试节点集合,及其子节点 - - - - - - 单步测试失败后退出测试,判定测试失败 - - - - - 单步测试失败后继续测试,执行所有测试流程后,判定测试失败 - - - - - 仅测试当前节点及其子节点 - - - - - 从节点开始往下测试 - - - - - PC机地址 - - - - - UtsHW03设备地址 - - - - - UTS通讯中,本机地址 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在数据库同步状态更改时发生 - - - - - 数据库同步状态 - - - - - - 项目站未修改 - - - - - 项目站信息已修改 - - - - - 项目站信息修改已保存 - - - - - 在测试状态更改时发生 - - - - - 测试站编辑状态 - - - - - - 无需发送 - - - - - 等待发送 - - - - - 发送失败 - - - - - 发送成功后,等待接收 - - - - - 接收超时 - - - - - 接收完成 - - - - - 测试命令状态 - - - - - - 控制命令状态 - - - - - - 待机测试 - - - - - 正在测试中 - - - - - 测试通过 - - - - - 测试失败 - - - - - 设备异常 - - - - - 在测试状态更改时发生 - - - - - 测试状态 - - 测试状态 - - - - 按键按下枚举值 - - - - - 没有按键按下 - - - - - 开始键按下 - - - - - YES 键按下 - - - - - NO 键按下 - - - - - 开始键长按 - - - - - YES 键长按 - - - - - NO 键长按 - - - - - 开始键松开 - - - - - Yes 键松开 - - - - - NO 键松开 - - - - - UTS测试架按键按下 - - - - - UTS测试架按键键值 - - - - - 内置模块入口集合 - - - 自定义模块下函数入口集合 - - - - 测试记录所关联的控件 - - - - - - 测试记录所关联的测试流程 - - - - - - 获取指定变量名的变量值 - - 变量名 - 调用模块时传入的局部变量 - - - - - 替换字符串中使用的变量,返回替换后的字符串 - - 原字符串 - 调用模块时传入的局部变量 - 替换后的字符串 - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 获取固定模块节点 - - 固定模块名 - - - - - 获取模块节点 - - 模块名 - - - - - 初始化记录表格 - - 测试流程 - - - - 获取当前节点所在的记录行,0代表未找到对应节点 - - 当前测试节点 - - - - - 反显当前测试节点所在的记录行 - - 当前测试节点 - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 显示所有行 - - - - - 屏蔽非记录行 - - - - - 测试结果枚举集合 - - - - - 当前用户索引,登陆后填充 - - - - - - 当前服务索引,登陆后获取 - - - - - - 所属产线索引,用户选择后获取 - - - - - - 所属订单索引,用户提供条码,系统自动填充 - - - - - - 测试程序的名称,登陆后填充 - - - - - - 测试流程名,切换项目流程站后获取 - - - - - - 测试产品的索引序号,测试时获取,(使用大写,8字符) - - - - - - 测试开始日期与时间,测试时获取 - - - - - - 测试耗时,测试时获取 - - - - - - 测试结果,测试时获取 - - - - - - 错误代码,测试时获取 - - - - - - 失败步骤集合,测试时获取 - - - - - - 自定义记录数据,测试时获取 - - - - - - 切换测试站后,初始话测试结果信息 - - - - - 开启新一轮测试时,重置测试结果信息 - - - - - 添加自定义需要记录的测试信息 - - 记录列名 - 记录值 - - - - 将当前测试信息转换为字符键值对 - - - - - 通讯串口 - - - 接收起始时间 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - - 获取所有串口名 - - - - - - 打开串口 - - - - - - - 接收分析后的数据 - - - - - 测试错误代码管理器 - - - 测试线程 - - - 测试站信息 - - - 测试记录表格 - - - - 产线变化 - - - - - 站位变化 - - - - - 存储单笔测试记录至CSV文件 - - - - 当前绘制图形宽度 - - - 当前绘制图形坐标点X - - - 当前绘制图形坐标点Y - - - 当前绘制图形单行最大上限 - - - - 添加绘制测试结果 - - - - - - 校验测试流程有效日期 - - - - - - 开始测试 - - - - - 终止测试 - - - - - 存储单笔测试记录至数据库 - - - - - 根据测试状态,更新界面UI显示 - - - - - - 更新测试时间 - - - - - - 发送方地址 - - - - - - 接收方地址 - - - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 测试命令常用初始化方式 - - - - - - - - 发送后台通讯命令常用初始化方式 - - - - - - - - 重置当前对象的信息 - - - - - 深度拷贝数据, 创建当前对象的克隆 - - - - - - 将参数字符串处理成参数列表 - - - - - - 将必须通讯参数转换为uts通讯字符串 - - 发送方地址 - 接收发地址 - 命令字 - 命令参数 - 组合命令分隔符 - - - - - 将字符串按格式转换为通讯格式数据对象 - - uts通讯字符串 - 组合命令分隔符 - - - - - 解析uts通讯字符串,初始化内部数据 - - - - - - 将本地数据内容,转换为uts通讯字符串 - - - - - - 测试命令接收等待最长时间 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令仅发送,不需要接受 - - - - - 提供发送测试命令统一接口 - - - - - 提供测试命令接收完成统一接口 - - 超时接收时间 - 接收到的数据 - - - - - 串口状态枚举 - - - - - 未开启或已退出 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送同步命令 - - - - - 等待回复 - - - - - 键值回复 - - - - - 发送测试命令 - - - - - 连接成功 - - - - - 连接失败 - - - - - 串口任务状态,根据状态不同进行不同的串口操作 - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 发送同步命令的间隔时间(ms) - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 状态机执行间隔,默认10ms - - - - - 当前可以访问的串口名集合 - - - - - 当前串口对象 - - - - - UTS串口波特率 - - - - - 接收等待最长时间 - - - - - 串口通讯写入失败计数 - - - - - 串口通讯写入失败最大上限 - - - - - 处理高优先级接收数据 - 当前包含按键键值与测试状态回复包等数据 - - - - - UTS串口任务状态机 - - - - - 串口任务,包含索引串口,发送数据,接收数据 - - - - -UTS系列App与UtsCore交互为避免重复书写产生的中间类 - - - - 本地服务索引 - - - 本地服务角色,0客户端,1服务器 - - - 本地服务别名 - - - 本地服务组名(子网名) - - - 软件名称 - - - 软件版本 - - - 测试记录表名 - - - 登录用户信息 - - - 鉴权文件信息 - - - 当前选择站位信息 - - - 测试结果内容 - - - 软件注册器 - - - 服务通讯TCP客户端 - - - 是否释放当前类 - - - 站位观察者集合 - - - 当前软件所属站位类型,None则无类型 - - - UTS软件单例对象 - - - UTS软件单例对象初始化锁 - - - - 创建单例对象 - - - - - - 添加站位修改观察者,唯一添加 - - - - - - 移除站位修改观察者 - - - - - - 清空站位修改观察者 - - - - - 初始化完成 - - - - - - 用户账号信息 - - - - - - 服务索引 - - - - - - 服务角色,0客户端,1服务器 - - - - - - 服务别名 - - - - - - 服务所属分组 - - - - - - 鉴权文件信息 - - - - - - 工厂产线信息 - - - - - - 测试站信息 - - - - - - 测试站信息 - - - - - - APP注册机 - - - - - - 测试记录表名 - - - - - - 未查询到数据库订单号时是否显示提示 - - - - - - 允许保存未查询到订单号的记录入库,显示提示时,此字段不生效。 - - - - - - 初始化信息,唯一初始化 - - 软件选择站位时,可以选择的站位类型,默认显示测试站位 - - - - 测试状态改变处理事件 - - - - - - - 连接数据服务,异步执行 - - - - - 保持与数据服务的Tcp连接存活 - - - - - - 定期发送App心跳包 - - - - - - 主动向服务发送变化数据 - - 变化类型 - 字段内容 - - - - 发送App上报信息 - - - - - - - 发送数据 - - - - - - - APP接收服务器数据 - - - - - - 处理数据,并返回回复数据 - - 需要处理的数据参数 - 需要回复的数据 - - - - 显示登陆页面 - - - - - 注册APP - - - - - 初始化测试结果字段信息 - - - - - 填充测试结果订单信息字段 - - - - - 根据序号分配给测试记录的订单号,并将测试记录写入到数据库中,提交成功后会重置测试记录。 - - - - - 根据项目名与站位名称,加载项目站信息 - - - - - - - 显示切换项目站信息页面,供用户修改测试站 - - - - - 用户选择测试站后回调函数 - - - - - - - 定期更新APP存活时间 - - - - - - 保存软件运行日志至数据库 - - - - - - 保存软件运行日志至数据库 - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 创建文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 文件上传 - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - - 从注册表中获取UTS软件运行所需的变量值 - - 注意: - 使用时避免反复读写注册表,应将获取的字段值保存至变量中; - 获取字段失败时会程序异,使用时做好异常保护; - 只读的变量是从注册表中获取的字段根据规则拼接而成的; - - - - 数据服务 - - - 更新服务 - - - 鉴权文件 - - - 数据库文件夹 - - - 产品相关 - - - - 注册表存放根路径配置信息 - - - - - 获取注册表是否存在 - - - - - - 获取和设置UTS软件存放位置的根文件路径,如C:/AUTS - - - - - - 获取和设置UTS软件Ftp所在地址 - - - - - - 获取和设置数据库URL所在地址 - - - - - - 子网名称,用于过滤多播时非相同子网名称数据包 - - - - - - 设备在子网中的角色,0为普通设备,1为服务器设备 - - - - - - 获取和设置License文件名 - - - - - - 获取和设置DataService名称 - - - - - - 获取和设置DataService版本信息 - - - - - - 获取或设置服务的索引,默认值为-1 - - - - - - 获取或设置服务的通讯端口,默认端口55533 - - - - - - 服务注册时使用的自定义标识名 - - - - - - 存放数据服务文件夹,不包含版本文件夹 - - - - - - 数据服务版本文件夹 - - - - - - 获取数据服务执行文件的路径 - - - - - - 获取和设置UpdateService名称 - - - - - - 获取和设置UpdateService版本信息 - - - - - - 获取和设置UpdateService文件夹路径,不包含版本文件夹 - - - - - - 获取和设置UpdateService当前版本文件夹路径 - - - - - - 获取数据服务执行文件的路径 - - - - - - 本地数据库文件夹 - - - - - - 本地产品图像文件夹 - - - - - - UTS使用的数据库连接参数 - - - - - 远程数据库地址修改 - - - - - 远程数据库类型 - - - - - 远程数据库连接字符串 - - - - - 远程私有库名 - - - - - 远程公共库名 - - - - - 本地数据库类型 - - - - - 本地数据库连接字符串 - - - - 系统文件夹枚举值 - - - 错误记录文件夹 - - - 设置文件夹 - - - 用户临时操作文件夹 - - - - Temp文件夹下文件夹 - - - - 创建项目时使用文件夹 - - - 设计时使用文件夹 - - - 测试时使用文件夹 - - - - Temp文件夹下文件夹 - - - - 产品原图文件夹名 - - - 产品预览图文件夹名 - - - - 本地缓存数据路径 - - - - - - 厂商名 - - - - - 校验程序所需的所有文件夹是否存在,不存在则创建 - - - - - 用户设置文件夹完整路径 - - - - - - 行节点风格存储文件完整路径 - - - - - - 用户日志文件夹完整路径 - - - - - - 项目站发布文件夹路径,与项目测试站包发布路径区分,可修改 - - - - - - 项目站包远程存储路径 - - 产品索引 - 产品工艺站索引 - 产品测试站包名 - - - - - 产品原图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品原图本地存储文件夹路径 - - - - - - 产品预览图远程存储文件夹路径 - - - - - - 产品原图本地存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 项目站发布文件夹指定项目名路径 - - 产品索引 - - - - - 项目站包发布路径 - - 产品名称 - 站位索引 - - - - - 项目站包文件路径 - - 产品索引 - 站位索引 - 包名待.uts后缀 - - - - - 项目临时编辑文件夹路径 - - - - - - 临时项目设计文件夹路径 - - - - - - 临时项目文件路径 - - - - - - - 项目站设计文件夹路径 - - - - - - 项目站包信息文件名 - - - - - 获取指定包名的项目站包文件夹路径 - - - - - - 获取指定包名的项目站包信息文件路径 - - - - - - - 获取指定包名的项目站包资源文件夹 - - - - - - - 获取指定包名的项目站包测试流程文件夹 - - - - - - - 项目站包文件夹路径 - - - - - - 项目站包信息文件路径 - - - - - - 项目站包资源文件夹 - - - - - - 项目站包资源文件夹 - - - - - - 解析模式,并且确定有关参数 - - - - - 常驻线程,执行各种Mode - - - - diff --git a/AUTS_DataService/bin/Debug/UTS_DataService.InstallLog b/AUTS_DataService/bin/Debug/UTS_DataService.InstallLog deleted file mode 100644 index 7d3109c..0000000 --- a/AUTS_DataService/bin/Debug/UTS_DataService.InstallLog +++ /dev/null @@ -1,1628 +0,0 @@ -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -在卸载 System.Diagnostics.EventLogInstaller 安装程序的过程中发生异常。 -System.Security.SecurityException: 不允许所请求的注册表访问权。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -在卸载 System.Diagnostics.EventLogInstaller 安装程序的过程中发生异常。 -System.Security.SecurityException: 不允许所请求的注册表访问权。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -在卸载 System.Diagnostics.EventLogInstaller 安装程序的过程中发生异常。 -System.Security.SecurityException: 不允许所请求的注册表访问权。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -警告: 源 UTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 UTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -正在日志 Application 中创建 EventLog 源 UTS_DataService... -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -正在安装程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 UTS_DataService。 -正在从系统中移除服务 UTS_DataService... -已成功地从系统中移除服务 UTS_DataService。 -尝试停止服务 UTS_DataService。 -正在安装程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在安装服务 UTS_DataService... -已成功安装服务 UTS_DataService。 -正在日志 Application 中创建 EventLog 源 UTS_DataService... -查看日志文件的内容以获得 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe 程序集的进度。 -该文件位于 D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog。 -正在提交程序集“D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - logtoconsole = - logfile = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog - assemblypath = D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 AUTS_DataService。 -警告: 源 AUTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 AUTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 AUTS_DataService。 -警告: 源 AUTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 AUTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 -正在卸载程序集“H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe”。 -受影响的参数是: - assemblypath = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe - logfile = H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.InstallLog -正在移除 EventLog 源 AUTS_DataService。 -警告: 源 AUTS_DataService 未在本地计算机上注册。 -正在从系统中移除服务 AUTS_DataService... -在卸载 System.ServiceProcess.ServiceInstaller 安装程序的过程中发生异常。 -System.ComponentModel.Win32Exception: 指定的服务未安装。 -在卸载的过程中发生异常。将忽略该异常并继续卸载。但是,在卸载完成之后应用程序可能未完全卸载。 diff --git a/AUTS_DataService/bin/Debug/UTS_DataService.InstallState b/AUTS_DataService/bin/Debug/UTS_DataService.InstallState deleted file mode 100644 index d0d1367..0000000 --- a/AUTS_DataService/bin/Debug/UTS_DataService.InstallState +++ /dev/null @@ -1 +0,0 @@ -0.7223_reserved_nestedSavedStates_reserved_lastInstallerAttempted0.72230.7247AccountLocalSystem-10.7247installedtrue0.7267logExistsalreadyRegisteredbaseInstalledAndPlatformOKtrue-1falsetrue010 \ No newline at end of file diff --git a/AUTS_DataService/bin/Debug/UTS_SeviceControler.xml b/AUTS_DataService/bin/Debug/UTS_SeviceControler.xml deleted file mode 100644 index 3704f82..0000000 --- a/AUTS_DataService/bin/Debug/UTS_SeviceControler.xml +++ /dev/null @@ -1,549 +0,0 @@ - - - - -UTS_SeviceControler - - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Form1窗体 - - - - - - 服务状态 - - - 服务名 - - - 可执行服务程序路径 - - - 实例化服务类 - - - 刷新服务 - - - 服务已存在-G - - - 服务不存在-R - - - 服务安装成功-G - - - 服务已安装-G - - - 服务已卸载-R - - - 刷新状态 - - - 已启动-G - - - 未启动-R - - - 无服务-R - - - 已关闭-R - - - 已重启-G - - - - 更新服务 - - - - - - 更新状态 - - - - - 显示服务状态 - - - - 工具栏检测服务按键 - - - - - - - 工具栏点击一键安装 - - - - - - - 工具栏卸载按键 - - - - - - - 工具栏启用服务 - - - - - - - 工具栏关闭服务 - - - - - - - 工具栏重启服务 - - - - - - 连接状态 - - - TCP连接 - - - 接收线程 - - - 数据流 - - - TCP连接 - - - 发送数据 - - - 接收数据线程 - - - 接收数据 - - - - 委托添加文本信息 - - - - - - 校验数据,根据回车换行符截取数据 - - 必须,传参buf进入检验数据 - - - - - 公共命令 - - 返回公共命令的Json字符串 - - - 按键状态标志位 - - - 测试连接 - - - - 根据连接状态发送数据 - - - - - 添加任务 - - - 修改任务 - - - - 单个任务命令 - - 返回单个任务Json语句 - - - - - 所有任务命令 - - 返回所有任务Json语句 - - - 获取指定任务 - - - 获取所有任务 - - - 删除任务 - - - 删除所有任务 - - - 开启任务 - - - 开启所有任务 - - - 暂停任务 - - - 暂停所有任务 - - - 重启任务 - - - 重启所有任务 - - - 同步任务 - - - 监听任务 - - - - 加载窗体时,添加任务类型 - - - - - - - 任务类型分页 - - - - - - - 窗体加载时启动项 - - - - - - 服务状态 - - - 服务名 - - - 可执行服务程序路径 - - - 实例化服务类 - - - 刷新服务 - - - 服务已存在-G - - - 服务不存在-R - - - 服务安装成功-G - - - 服务已安装-G - - - 服务已卸载-R - - - 刷新状态 - - - 已启动-G - - - 未启动-R - - - 无服务-R - - - 已关闭-R - - - 已重启-G - - - - 更新服务 - - - - - - 更新状态 - - - - - 显示服务状态 - - - - 工具栏检测服务按键 - - - - - - - 工具栏点击一键安装 - - - - - - - 工具栏卸载按键 - - - - - - - 工具栏启用服务 - - - - - - - 工具栏关闭服务 - - - - - - - 工具栏重启服务 - - - - - - 按键状态标志位 - - - 连接状态 - - - - 公共命令参数 - - 返回公共命令的Json字符串 - - - - 连接服务 - - - - - - - 根据连接状态发送数据 - - - - - - 添加任务 - - - - - - - 显示窗体 - - 把本窗体打包放在其他容器内 - - - - 同步任务JsonString - - - - - 根据类型不同,快速生成ConnJsonString - - - - - - - 快捷生成字符串 - - - - - - 窗体启动 - - - - - - - 隐藏Page表头 - - - - - 打开文件,辅助输入 - - - - - - - 拼接Json字符串 - - - - - 存Json数据的字符串 - - - - OK按键 - - - - - - - Json字符串解析 - - - - - - 打包Json字符串 - - - - - 解析数据One - - - - - - 解析数据Two - - - - - 连接状态 - - - TCP连接 - - - 接收线程 - - - 数据流 - - - TCP连接 - - - 发送数据 - - - 接收数据线程 - - - 接收数据 - - - - 校验数据,根据回车换行符截取数据 - - 必须,传参buf进入检验数据 - - - - 关闭线程 - - - 关闭Tcp连接 - - - 服务名 - - - 检测服务---存在 - - - 检测服务---状态 - - - 一键安装 - - - 卸载服务 - - - 启动服务 - - - 关闭服务 - - - 重启服务 - - - diff --git a/AUTS_DataService/bin/Debug/Ubiety.Dns.Core.dll b/AUTS_DataService/bin/Debug/Ubiety.Dns.Core.dll deleted file mode 100644 index b10ecf2..0000000 Binary files a/AUTS_DataService/bin/Debug/Ubiety.Dns.Core.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/Zstandard.Net.dll b/AUTS_DataService/bin/Debug/Zstandard.Net.dll deleted file mode 100644 index 83934d1..0000000 Binary files a/AUTS_DataService/bin/Debug/Zstandard.Net.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/x64/SQLite.Interop.dll b/AUTS_DataService/bin/Debug/x64/SQLite.Interop.dll deleted file mode 100644 index 1a86bfd..0000000 Binary files a/AUTS_DataService/bin/Debug/x64/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_DataService/bin/Debug/x86/SQLite.Interop.dll b/AUTS_DataService/bin/Debug/x86/SQLite.Interop.dll deleted file mode 100644 index 1e4490d..0000000 Binary files a/AUTS_DataService/bin/Debug/x86/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_DataService/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_DataService/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService-冲突-张虹_Win7.exe b/AUTS_DataService/obj/Debug/AUTS_DataService-冲突-张虹_Win7.exe deleted file mode 100644 index e92042f..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService-冲突-张虹_Win7.exe and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService-冲突-张虹_Win7.pdb b/AUTS_DataService/obj/Debug/AUTS_DataService-冲突-张虹_Win7.pdb deleted file mode 100644 index 252ef56..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService-冲突-张虹_Win7.pdb and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.ProjectInstaller.resources b/AUTS_DataService/obj/Debug/AUTS_DataService.ProjectInstaller.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.ProjectInstaller.resources and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.Resources.resources b/AUTS_DataService/obj/Debug/AUTS_DataService.Resources.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.Resources.resources and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.exe b/AUTS_DataService/obj/Debug/AUTS_DataService.exe deleted file mode 100644 index 46bcf46..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.exe and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.pdb b/AUTS_DataService/obj/Debug/AUTS_DataService.pdb deleted file mode 100644 index 299281b..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.pdb and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.AssemblyReference-冲突-张虹_Win7.cache b/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.AssemblyReference-冲突-张虹_Win7.cache deleted file mode 100644 index 501ba80..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.AssemblyReference-冲突-张虹_Win7.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.AssemblyReference.cache b/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.AssemblyReference.cache deleted file mode 100644 index 74211ad..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.CopyComplete b/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.CoreCompileInputs.cache b/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 7d43e47..0000000 --- a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -bd668fb08ee6f57ad7da262b8fb2fd92e38b6ded20b81b6a143593fd18817ea7 diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.FileListAbsolute.txt b/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.FileListAbsolute.txt deleted file mode 100644 index 319b370..0000000 --- a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,449 +0,0 @@ -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe.config -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.pdb -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Zstandard.Net.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Renci.SshNet.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbprojAssemblyReference.cache -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe.config -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.xml -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbprojAssemblyReference.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.pdb -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe.config -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.pdb -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Zstandard.Net.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Renci.SshNet.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbprojAssemblyReference.cache -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe.config -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.xml -G:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe.config -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\AUTS_DataService.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\AUTS_DataService.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\AUTS_DataService.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\AUTS_DataService.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FluentFTP.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FlexCell.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FluentFTP.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\AUTS_DataService.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FlexCell.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\FluentFTP.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_DataService\obj\Debug\AUTS_DataService.pdb -E:\Git\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.exe.config -E:\Git\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.exe -E:\Git\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.pdb -E:\Git\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\FlexCell.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_DataService\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_DataService\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_DataService\bin\Debug\FluentFTP.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_DataService\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_DataService\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CopyComplete -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.exe -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.xml -E:\Git\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.pdb -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.exe.config -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.exe -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.pdb -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\AUTS_DataService.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\FluentFTP.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_Dat.62B3E97E.Up2Date -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.exe -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.xml -D:\ML\Wen\AUTS\AUTS_DataService\obj\Debug\AUTS_DataService.pdb -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_DataService\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.GenerateResource.cache b/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.GenerateResource.cache deleted file mode 100644 index 17b6b8c..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.vbprojAssemblyReference.cache b/AUTS_DataService/obj/Debug/AUTS_DataService.vbprojAssemblyReference.cache deleted file mode 100644 index b8f1c95..0000000 Binary files a/AUTS_DataService/obj/Debug/AUTS_DataService.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/AUTS_DataService.xml b/AUTS_DataService/obj/Debug/AUTS_DataService.xml deleted file mode 100644 index f39c6a1..0000000 --- a/AUTS_DataService/obj/Debug/AUTS_DataService.xml +++ /dev/null @@ -1,1157 +0,0 @@ - - - - -AUTS_DataService - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 当前服务所属子网组 - - - - - - 当前服务索引 - - - - - - 当前命令类型 - - - - - - 当前包号 - - - - - 厂商名 - - - 公网IP - - - 本地IP - - - 本地MAC地址 - - - 服务索引 - - - 数据服务版本 - - - 更新服务版本 - - - 存入数据库日志类型 - - - 日志文件夹路径 - - - 日志文件前缀 - - - 在线状态 - - - 将日志写入到本地文件 - - - - 写入致命错误至本地与云端数据库 - - 日志内容 - - - - 添加日志内容至缓存的日志队列中 - 调用SaveLogQueueToDb将队列中的数据写入到数据库 - - Tip:缓存队列仅记录每条日志不同的内容,例如写入时间,日志类型,日志内容等 - - - - - - - 创建数据服务日志表,数据服务独有 - - - - - 数据服务的数据服务的名称 - - - - - - 数据服务的版本字符串 - - - - - - 更新服务的版本字符串 - - - - - - 数据服务的版本 - - - - - - 更新服务的版本 - - - - - - 更新服务的名称 - - - - - - 设备的局域网IP - - - - - - 设备的MAC地址 - - - - - - 与更新服务的连接状态 - - - - - - 设备运行中产生的异常 - - - - - - 局域网中与主机的连接状态 - - - - - - 设备加入的子网名称 - - - - - - 当前设备在局域网中的角色 - - - - - - 网上邻居集合 - - - - - - 当前缓存表字段数量 - - - - - - 云端数据库连接状态 - - - - - - Ftp服务器连接状态 - - - - - - 私有IP地址变化 - - - - - - MAC地址变化 - - - - - - 初始化MAC地址与获取本地IP - - - - - 上传服务信息至数据库 - - - - - 服务任务列表,管理服务的所有任务 - - - - - 任务总数 - - - - - - 获取所有的服务任务 - - - - - - 添加任务,默认开启任务 - - - - - 添加任务,默认开启服务 - - - - - 添加任务列表 - - - - - - 移除指定的服务任务 - - - - - - 移除指定名称的服务任务 - - - - - 清空所有的服务任务 - - - - - 设置指定任务的任务参数 - - - - - - - 返回指定任务名称的任务参数 - - - - - - - 获取所有任务的参数信息 - - - - - -开启所有任务 - - - - - 结束休眠,立即执行任务 - - - - - -开启所有任务 - - - - - 停止指定任务名的任务 - - - - - -停止所有任务 - - - - - 已启动 - - - - - 已关闭 - - - - - 设备运行APP列表,键为APP名称,值为App对象 - - - - - 判断App是否存在队列中 - - - - - - - 获取UtsApp对象,没有则添加对象至队列后再返回 - - - - - - - 获取当前App列表 - - - - - 历史通讯数据服务集合 - - - - 添加网上邻居,已存在则更新存活时间与状态 - - - - - - 校验其他服务的当前发送包索引是否与上一包索引重复,相同返回True,不相同返回False - - - - - - 校验服务是否存活 - - - - - 获取存活状态的所有网上邻居的索引字符串,以逗号分割 - - - - - - 最后通讯时间 - - - - - 最后通讯包ID - - - - - 服务索引 - - - - - 是否判定为在线 - - - - - 获取数据包的和校验 - - 数据包的内容 - - - - - 数据库同步器 - - - - - 同步表内容 - - - - 表名 - - - 同步类型 - - - 是否存在当前数据表 - - - 更新版本 - - - 上一次更新时间字符串 - - - 同步后更新的时间字符串 - - - - 同步数据库参数 - - - - - 连接参数 - - - - - - 同步数据库,开始同步 - - - - - 同步数据库执行过程 - - 本地数据库执行器 - 云端数据库执行器 - 远端数据库公共库名 - 远端数据库私有库名 - - - - 上传本地缓存数据,DataTable的方式 - - 远程数据库执行器 - 本地数据库执行器 - - - - 本地创建缓存记录表,如果不存在则创建 - - 本地数据库的执行器 - - - - 查询本地未上传的数据,单次查询5000条数据 - - 本地数据库的执行器 - - - - - 上传本地数据至云端数据库 - - - - - - - - 数据上传完成后,删除本地数据库中对应序号的记录 - - - - - - - 比对本地与云端版本表,下载变化的数据表 - - - - - - - - - 比较本地与云端版本表的差异,获取需要下载的数据表 - - - - - - - - - 创建本地数据库表版本记录表 - - - - - - 比较本地与云端版本表的差异 - - 源DataTable - 目标DataTable - 差异信息列表 - - - - 更新下载数据表 - - 远程数据库执行器 - 本地数据库执行器 - 需要同步的数据表信息集合 - - - - 下载修改全表修改部分的方式下载表 - - - - - - - - - 更新全表的方式下载表 - - - - - - - - 将目标DataTable的所有数据插入到指定数据表中,不检测是否需要新增列 - - 后续插入字符需要区别数值与字符串 - - - - - - - - 更新本地数据成功后,同步更新本地版本记录表 - - 本地数据库执行器 - 需要同步的数据表信息 - - - - 将.net数据类型转换为Sqlite数据类型 - - .net数据类型 - 转换后的Sqlite数据类型 - - - - 通过解析DbDataReader列名与列类型,暂不可用 - - - - - - - - 通过解析DataTable,获取建表语句 - - 数据表名 - 需要解析的内存数据表 - - - - - 数据库同步类 - - - - - 远程数据库的类型 - - - - - 远程数据库的连接字符串 - - - - - 远端公共数据库名 - - - - - 远端私有库名 - - - - - 本地数据库的类型 - - - - - 本地数据库的连接字符串 - - - - - 同步间隔,单位分钟,默认5分钟,最小值为1分钟 - - - - - - 最后一次更新的时间字符串 - - - - - 读取文件并将内容保存在本地数据库中 - - - - - - - 具体的执行过程 - - 状态值,暂未启用 - - - 监听句柄 - - - 服务任务列表 - - - 当前设备App列表 - - - 鉴权信息管理类 - - - FTP服务类 - - - 服务信息管理类 - - - Tcp监听中 - - - Tcp本地端口号 - - - 日志文件夹路径 - - - 设置文件夹路径 - - - 设置文件路径 - - - - 服务正在运行中 - - - - - 更新本地私有IP - - - - - 广播端口 - - - 广播套接字 - - - 广播发送锁 - - - 广播发送序号 - - - 广播服务管理器 - - - - 本地IP变化的处理 - - - - - - MAC地址变化处理 - - - - - - 初始化广播套接字 - - - - - 接收处理来自数据服务的多播数据 - - UDP套接字 - - - - 处理数据服务的广播包 - - - - - - 获取广播下一次发送序号,并将序号+1 - - - - - - 发送广播信息 - - 需要广播的服务内容 - - - - 初始化数据服务日志所需信息,需要提前初始化License与ServiceRegister - - - - web通讯套接字对象 - - - web通讯IP地址与端口 - - - web服务组包对象 - - - 当前设备公网Ip - - - uts系列软件访问ftp的主机地址 - - - uts系列软件访问db的主机地址 - - - - 定期发送心跳包,并获取公网IP与ftp网址 - - - - - - 接收处理来自Web服务器的数据 - - - - - - 处理上传任务变化后状态 - - - - - - 处理上传App变化后状态 - - - - - - 处理Web服务器心跳回复包 - - 回复参数 - - - - 填充反控App包的基本信息,含不包含附加信息 - - - - - - 处理Web服务器获取App状态包 - - 回复参数 - - - - - 处理Web服务器反控App状态包 - - 回复参数 - - - - - 处理Web服务器添加任务控制包 - - 回复参数 - - - - 处理Web服务器删除任务控制包 - - 回复参数 - - - - 处理Web服务器获取任务控制包 - - 回复参数 - - - - 处理Web服务器设置任务控制包 - - 回复参数 - - - - 处理Web服务器启动任务控制包 - - 回复参数 - - - - 处理Web服务器启动任务控制包 - - 回复参数 - - - - 处理Web服务器启动任务控制包 - - 回复参数 - - - - 处理Web服务器设置日志类型 - - 回复参数 - - - - 处理Web服务器读取日志类型 - - 回复参数 - - - - 处理Web服务器上传文件控制包 - - 回复参数 - - - - 处理Web服务器读取文件大小控制包 - - 回复参数 - - - - 获取文件夹大小 - - 文件夹路径 - 是否包含子文件夹的大小,默认包含 - - - - - 初始化License内容 - - - - - 上报添加服务信息至Web服务器 - - 任务信息 - - - - 上报更新服务信息至Web服务器 - - 任务信息 - - - - 上报删除服务信息至Web服务器 - - 任务名称 - - - - 上报清空 - - - - - 读取Xml设置文档初始化设置 - - - - - 保存当前设置至xml中 - - - - - 开始循环监听数据 - - - - - 判断当前网络端口是否被使用 - - - - - - - 处理数据,并返回回复数据 - - 当前命令的套接字 - 需要处理的数据参数 - 需要回复的数据 - - - - 发送Task信息至Web服务器 - - UtsApp对象 - - - - 发送App信息至Web服务器 - - UtsApp对象 - - - - 处理添加任务 - - 任务参数 - - - - - 处理修改任务参数 - - 任务参数 - - - - - 处理获取指定任务的信息 - - 任务参数 - - - - - 获取所有任务的信息 - - 任务参数 - - - - - 处理删除指定任务 - - 任务参数 - - - - - 删除所有任务 - - 任务参数 - - - - - 处理开启指定任务 - - 任务参数 - - - - - 开启所有任务 - - 任务参数 - - - - - 处理暂停指定任务 - - 任务参数 - - - - - 停止所有任务 - - 任务参数 - - - - - 处理立即执行指定任务 - - 任务参数 - - - - - 立即执行所有任务 - - 任务参数 - - - - - 获取DataService版本信息 - - 任务参数 - - - - - 发送数据 - - - - - - - 用于填充发送包 - - 发送包命令 - 发送包参数 - - - - - 一般用于填充回复包 - - 接收包序号 - 接收包命令 - 回复包参数 - - - - 包头 - - - 序号 - - - 包长,两位,小端模式 - - - 校验 - - - 命令 - - - 参数 - - - 心跳包 - - - 设置日志上报 - - - 读取日志上报 - - - 服务任务状态变化时,主动上报状态 - - - 增加服务任务 - - - 删除服务任务 - - - 获取服务任务 - - - 设置服务任务 - - - 开启服务任务 - - - 停止服务任务 - - - 重启服务任务 - - - 上传文件 - - - 读取指定文件大小 - - - App状态变化时,主动上报状态 - - - 获取App状态 - - - 设置App状态 - - - diff --git a/AUTS_DataService/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_DataService/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index ce55b45..0000000 Binary files a/AUTS_DataService/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_DataService/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 39f7c3d..0000000 Binary files a/AUTS_DataService/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/TempPE/My Project.Application.Designer.vb.dll b/AUTS_DataService/obj/Debug/TempPE/My Project.Application.Designer.vb.dll deleted file mode 100644 index f426fc4..0000000 Binary files a/AUTS_DataService/obj/Debug/TempPE/My Project.Application.Designer.vb.dll and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_DataService/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 7cfeeea..0000000 Binary files a/AUTS_DataService/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.CopyComplete b/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.CoreCompileInputs.cache b/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 9bf6bc0..0000000 --- a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -f09ef510fe953a9b9bd0de114f1c907ce5cb8883 diff --git a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.FileListAbsolute.txt b/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.FileListAbsolute.txt deleted file mode 100644 index 01592f7..0000000 --- a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,169 +0,0 @@ -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_DataService.exe.config -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_DataService.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_DataService.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_DataService.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.Resources.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.ProjectInstaller.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\UTS_SeviceControler.exe.config -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_DataService\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe.config -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Zstandard.Net.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Renci.SshNet.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.Resources.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.ProjectInstaller.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.GenerateResource.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CoreCompileInputs.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.exe -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.Resources.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.ProjectInstaller.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.exe -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe.config -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.exe.config -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Zstandard.Net.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\Renci.SshNet.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.exe.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.exe -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_DataService.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbprojAssemblyReference.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.Resources.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.ProjectInstaller.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.GenerateResource.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CopyComplete -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.exe -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.pdb -G:\UTS_Studio\UTS_DataService\bin\Debug\Newtonsoft.Json.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\SharpCompress.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\FlexCell.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Data.SQLite.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Google.Protobuf.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Zstandard.Net.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\BouncyCastle.Crypto.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Ubiety.Dns.Core.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\Renci.SshNet.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\K4os.Compression.LZ4.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\K4os.Hash.xxHash.dll -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.pdb -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\UTS_Core.dll.config -G:\UTS_Studio\UTS_DataService\bin\Debug\MySql.Data.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Memory.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Buffers.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Numerics.Vectors.xml -G:\UTS_Studio\UTS_DataService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbprojAssemblyReference.cache -G:\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.GenerateResource.cache -G:\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CoreCompileInputs.cache -G:\UTS_Studio\UTS_DataService\obj\Debug\UTS_DataService.vbproj.CopyComplete -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe.config -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.exe -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.pdb -G:\UTS_Studio\UTS_DataService\bin\Debug\AUTS_DataService.xml -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe.config -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.exe -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.xml -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.pdb -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.Resources.resources -G:\UTS_Studio\UTS_DataService\obj\Debug\AUTS_DataService.ProjectInstaller.resources diff --git a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.GenerateResource.cache b/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.GenerateResource.cache deleted file mode 100644 index acd8ea0..0000000 Binary files a/AUTS_DataService/obj/Debug/UTS_DataService.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Debug/UTS_DataService.vbprojAssemblyReference.cache b/AUTS_DataService/obj/Debug/UTS_DataService.vbprojAssemblyReference.cache deleted file mode 100644 index 5c2c9a1..0000000 Binary files a/AUTS_DataService/obj/Debug/UTS_DataService.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Release/AUTS_DataService.vbproj.AssemblyReference.cache b/AUTS_DataService/obj/Release/AUTS_DataService.vbproj.AssemblyReference.cache deleted file mode 100644 index 0a675b8..0000000 Binary files a/AUTS_DataService/obj/Release/AUTS_DataService.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Release/AUTS_DataService.vbproj.FileListAbsolute.txt b/AUTS_DataService/obj/Release/AUTS_DataService.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_DataService/obj/Release/AUTS_DataService.vbprojAssemblyReference.cache b/AUTS_DataService/obj/Release/AUTS_DataService.vbprojAssemblyReference.cache deleted file mode 100644 index b4de436..0000000 Binary files a/AUTS_DataService/obj/Release/AUTS_DataService.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_DataService/obj/Release/TempPE/My Project.Application.Designer.vb.dll b/AUTS_DataService/obj/Release/TempPE/My Project.Application.Designer.vb.dll deleted file mode 100644 index aeefba1..0000000 Binary files a/AUTS_DataService/obj/Release/TempPE/My Project.Application.Designer.vb.dll and /dev/null differ diff --git a/AUTS_DataService/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_DataService/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index b7f7a36..0000000 Binary files a/AUTS_DataService/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_Repair/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_Repair/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmCheckLog.resources b/AUTS_Repair/obj/Debug/AUTS_Repair.FrmCheckLog.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmCheckLog.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmImage.resources b/AUTS_Repair/obj/Debug/AUTS_Repair.FrmImage.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmImage.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmMain-冲突-方鹏洋_Win10.resources b/AUTS_Repair/obj/Debug/AUTS_Repair.FrmMain-冲突-方鹏洋_Win10.resources deleted file mode 100644 index 276ec6c..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmMain-冲突-方鹏洋_Win10.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmMain.resources b/AUTS_Repair/obj/Debug/AUTS_Repair.FrmMain.resources deleted file mode 100644 index 714b10a..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.FrmMain.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.Resources.resources b/AUTS_Repair/obj/Debug/AUTS_Repair.Resources.resources deleted file mode 100644 index 11296bf..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.Resources.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.exe b/AUTS_Repair/obj/Debug/AUTS_Repair.exe deleted file mode 100644 index e185385..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.exe and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.pdb b/AUTS_Repair/obj/Debug/AUTS_Repair.pdb deleted file mode 100644 index e18ec59..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.pdb and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.AssemblyReference-冲突-方鹏洋_Win10.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.AssemblyReference-冲突-方鹏洋_Win10.cache deleted file mode 100644 index 33e1469..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.AssemblyReference-冲突-方鹏洋_Win10.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.AssemblyReference.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.AssemblyReference.cache deleted file mode 100644 index cdf5a32..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CopyComplete b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CoreCompileInputs-冲突-方鹏洋_Win10.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CoreCompileInputs-冲突-方鹏洋_Win10.cache deleted file mode 100644 index 5015ad4..0000000 --- a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CoreCompileInputs-冲突-方鹏洋_Win10.cache +++ /dev/null @@ -1 +0,0 @@ -7dc0063585dc9536289409ad3ef9ba59f4f56d5a diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CoreCompileInputs.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 2762c4c..0000000 --- a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -633636fb0e8e6888140ccfd14b7f61c81bde021fbce143725da848c3645363fc diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.FileListAbsolute.txt b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.FileListAbsolute.txt deleted file mode 100644 index 3c9895b..0000000 --- a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,322 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\AUTS_Repair.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\AUTS_Repair.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\AUTS_Repair.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\AUTS_Repair.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.FrmCheckLog.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.FrmImage.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Drawing.Common.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.ValueTuple.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FluentFTP.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Drawing.Common.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.ValueTuple.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmMain.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmCheckLog.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmImage.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Drawing.Common.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.ValueTuple.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FluentFTP.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Drawing.Common.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.ValueTuple.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmMain.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmCheckLog.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmImage.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\AUTS_Repair.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Drawing.Common.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.ValueTuple.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\FluentFTP.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Drawing.Common.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.ValueTuple.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmMain.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmCheckLog.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.FrmImage.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Repair\obj\Debug\AUTS_Repair.pdb -E:\Git\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.exe.config -E:\Git\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.exe -E:\Git\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.pdb -E:\Git\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Drawing.Common.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.ValueTuple.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_Repair\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_Repair\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_Repair\bin\Debug\FluentFTP.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Drawing.Common.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.ValueTuple.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_Repair\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.FrmMain.resources -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.FrmCheckLog.resources -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.FrmImage.resources -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.Resources.resources -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CopyComplete -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.exe -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.xml -E:\Git\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.pdb -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.exe.config -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.exe -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.pdb -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\AUTS_Repair.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Drawing.Common.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.ValueTuple.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\FluentFTP.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Drawing.Common.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.ValueTuple.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.FrmMain.resources -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.FrmCheckLog.resources -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.FrmImage.resources -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.Resources.resources -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Rep.516CDDBB.Up2Date -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.exe -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.xml -D:\ML\Wen\AUTS\AUTS_Repair\obj\Debug\AUTS_Repair.pdb -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_Repair\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.GenerateResource-冲突-方鹏洋_Win10.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.GenerateResource-冲突-方鹏洋_Win10.cache deleted file mode 100644 index 0d05972..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.GenerateResource-冲突-方鹏洋_Win10.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.GenerateResource.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.GenerateResource.cache deleted file mode 100644 index e98e039..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbprojAssemblyReference-冲突-张树友_Win10.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbprojAssemblyReference-冲突-张树友_Win10.cache deleted file mode 100644 index d161398..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.vbprojAssemblyReference-冲突-张树友_Win10.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.vbprojAssemblyReference.cache b/AUTS_Repair/obj/Debug/AUTS_Repair.vbprojAssemblyReference.cache deleted file mode 100644 index 09504db..0000000 Binary files a/AUTS_Repair/obj/Debug/AUTS_Repair.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/AUTS_Repair.xml b/AUTS_Repair/obj/Debug/AUTS_Repair.xml deleted file mode 100644 index 491aad2..0000000 --- a/AUTS_Repair/obj/Debug/AUTS_Repair.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - -AUTS_Repair - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 显示登录窗口 - - - - - 项目索引 - - - - - 返修订单号 - - - - 当前编辑产品图像的序号 - - - 产品处理图像信息,当前上限4 - - - 修改图像显示时图像线程锁 - - - 从数据库中读取或保存,产品维修数据 - - - - 维修产品索引 - - - - - - 维修站位索引 - - - - - - 内部订单索引 - - - - - - 绑定测试记录索引 - - - - - - 产品条码 - - - - - - 测试流程 - - - - - - 失败步骤 - - - - - - 失败提示信息 - - - - - - 错误代码 - - - - - - 维修日期 - - - - - - 维修类型 - - - - - - 维修原因 - - - - - - 维修来源 - - - - - - 产品单号 - - - - - - 维修方案 - - - - - - 维修结果 - - - - - - 维修产品图 - - - - - diff --git a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-方鹏洋_Win10.cache b/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-方鹏洋_Win10.cache deleted file mode 100644 index 142deab..0000000 Binary files a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-方鹏洋_Win10.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index 64ca0bb..0000000 Binary files a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferencesInput-冲突-方鹏洋_Win10.cache b/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferencesInput-冲突-方鹏洋_Win10.cache deleted file mode 100644 index 31f435a..0000000 Binary files a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferencesInput-冲突-方鹏洋_Win10.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 049c8a8..0000000 Binary files a/AUTS_Repair/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Repair/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index c468633..0000000 Binary files a/AUTS_Repair/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/UTS_LogoViewer-冲突-方鹏洋_Win10.pdb b/AUTS_Repair/obj/Debug/UTS_LogoViewer-冲突-方鹏洋_Win10.pdb deleted file mode 100644 index 07e4675..0000000 Binary files a/AUTS_Repair/obj/Debug/UTS_LogoViewer-冲突-方鹏洋_Win10.pdb and /dev/null differ diff --git a/AUTS_Repair/obj/Debug/UTS_LogoViewer-冲突-方鹏洋_Win10.xml b/AUTS_Repair/obj/Debug/UTS_LogoViewer-冲突-方鹏洋_Win10.xml deleted file mode 100644 index 69d32ae..0000000 --- a/AUTS_Repair/obj/Debug/UTS_LogoViewer-冲突-方鹏洋_Win10.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - -UTS_LogoViewer - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 显示登录窗口 - - - - 摄像头是否运行 - - - 摄像头控制句柄 - - - 当前编辑产品图像的序号 - - - 产品处理图像信息,当前上限4 - - - 修改图像显示时图像线程锁 - - - 从数据库中读取或保存,产品维修数据 - - - - 打开摄像头显示图像 - - - - - 是否暂停摄像头捕捉产品图,暂停则使用最后捕捉的图像 - - - - - - 运行CMD命令并获取返回值 - - - - - - - diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.FrmCheckLog.resources b/AUTS_Repair/obj/Release/AUTS_Repair.FrmCheckLog.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.FrmCheckLog.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.FrmImage.resources b/AUTS_Repair/obj/Release/AUTS_Repair.FrmImage.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.FrmImage.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.FrmMain.resources b/AUTS_Repair/obj/Release/AUTS_Repair.FrmMain.resources deleted file mode 100644 index 714b10a..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.FrmMain.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.Resources.resources b/AUTS_Repair/obj/Release/AUTS_Repair.Resources.resources deleted file mode 100644 index 11296bf..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.Resources.resources and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.exe b/AUTS_Repair/obj/Release/AUTS_Repair.exe deleted file mode 100644 index b2393ea..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.exe and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.pdb b/AUTS_Repair/obj/Release/AUTS_Repair.pdb deleted file mode 100644 index 9d38a5e..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.pdb and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.AssemblyReference.cache b/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.AssemblyReference.cache deleted file mode 100644 index 85e432f..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.CopyComplete b/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.CoreCompileInputs.cache b/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 1cd4c3d..0000000 --- a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -3539824e040df0e945216e84e9fd4797da94977f diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.FileListAbsolute.txt b/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.FileListAbsolute.txt deleted file mode 100644 index bc9eb51..0000000 --- a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,54 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.FrmCheckLog.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.FrmImage.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\AUTS_Repair.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\AUTS_Repair.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\AUTS_Repair.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\AUTS_Repair.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Drawing.Common.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.ValueTuple.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.ValueTuple.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\bin\Release\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Repair\obj\Release\AUTS_Repair.pdb diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.GenerateResource.cache b/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.GenerateResource.cache deleted file mode 100644 index 2c5fc8b..0000000 Binary files a/AUTS_Repair/obj/Release/AUTS_Repair.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_Repair/obj/Release/AUTS_Repair.xml b/AUTS_Repair/obj/Release/AUTS_Repair.xml deleted file mode 100644 index 491aad2..0000000 --- a/AUTS_Repair/obj/Release/AUTS_Repair.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - -AUTS_Repair - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 显示登录窗口 - - - - - 项目索引 - - - - - 返修订单号 - - - - 当前编辑产品图像的序号 - - - 产品处理图像信息,当前上限4 - - - 修改图像显示时图像线程锁 - - - 从数据库中读取或保存,产品维修数据 - - - - 维修产品索引 - - - - - - 维修站位索引 - - - - - - 内部订单索引 - - - - - - 绑定测试记录索引 - - - - - - 产品条码 - - - - - - 测试流程 - - - - - - 失败步骤 - - - - - - 失败提示信息 - - - - - - 错误代码 - - - - - - 维修日期 - - - - - - 维修类型 - - - - - - 维修原因 - - - - - - 维修来源 - - - - - - 产品单号 - - - - - - 维修方案 - - - - - - 维修结果 - - - - - - 维修产品图 - - - - - diff --git a/AUTS_Repair/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Repair/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 1f1c059..0000000 Binary files a/AUTS_Repair/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_ServiceControler/bin/AUTS_ServiceController.zip b/AUTS_ServiceControler/bin/AUTS_ServiceController.zip deleted file mode 100644 index c586111..0000000 Binary files a/AUTS_ServiceControler/bin/AUTS_ServiceController.zip and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/FlexCell.dll b/AUTS_ServiceControler/bin/Debug/FlexCell.dll deleted file mode 100644 index 0f6c38e..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/FlexCell.dll and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/19.png b/AUTS_ServiceControler/bin/Debug/Icon/32/19.png deleted file mode 100644 index 1f39d97..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/19.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/cancel.png b/AUTS_ServiceControler/bin/Debug/Icon/32/cancel.png deleted file mode 100644 index 396459a..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/cancel.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/chat.png b/AUTS_ServiceControler/bin/Debug/Icon/32/chat.png deleted file mode 100644 index 0fbddc8..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/chat.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/down.png b/AUTS_ServiceControler/bin/Debug/Icon/32/down.png deleted file mode 100644 index 85bd0ed..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/down.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/fav.png b/AUTS_ServiceControler/bin/Debug/Icon/32/fav.png deleted file mode 100644 index 887c0cb..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/fav.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/folder.png b/AUTS_ServiceControler/bin/Debug/Icon/32/folder.png deleted file mode 100644 index 9bb7dea..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/folder.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/hand.png b/AUTS_ServiceControler/bin/Debug/Icon/32/hand.png deleted file mode 100644 index 193a6e4..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/hand.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/internet.png b/AUTS_ServiceControler/bin/Debug/Icon/32/internet.png deleted file mode 100644 index f1ba7ba..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/internet.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/left.png b/AUTS_ServiceControler/bin/Debug/Icon/32/left.png deleted file mode 100644 index a5cf5d1..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/left.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/mail.png b/AUTS_ServiceControler/bin/Debug/Icon/32/mail.png deleted file mode 100644 index a50bfa5..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/mail.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/no.png b/AUTS_ServiceControler/bin/Debug/Icon/32/no.png deleted file mode 100644 index bb4d9b7..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/no.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/ok.png b/AUTS_ServiceControler/bin/Debug/Icon/32/ok.png deleted file mode 100644 index f59725d..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/ok.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/paint.png b/AUTS_ServiceControler/bin/Debug/Icon/32/paint.png deleted file mode 100644 index 96ba92f..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/paint.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/question.png b/AUTS_ServiceControler/bin/Debug/Icon/32/question.png deleted file mode 100644 index eedcce4..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/question.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/recycle.png b/AUTS_ServiceControler/bin/Debug/Icon/32/recycle.png deleted file mode 100644 index 91c128b..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/recycle.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/refresh.png b/AUTS_ServiceControler/bin/Debug/Icon/32/refresh.png deleted file mode 100644 index bf4bed5..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/refresh.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/right.png b/AUTS_ServiceControler/bin/Debug/Icon/32/right.png deleted file mode 100644 index ab1aff4..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/right.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/shutdown.png b/AUTS_ServiceControler/bin/Debug/Icon/32/shutdown.png deleted file mode 100644 index f85080d..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/shutdown.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/up.png b/AUTS_ServiceControler/bin/Debug/Icon/32/up.png deleted file mode 100644 index 9d1645a..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/up.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/wlm.png b/AUTS_ServiceControler/bin/Debug/Icon/32/wlm.png deleted file mode 100644 index 9d9344f..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/wlm.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/32/wmp.png b/AUTS_ServiceControler/bin/Debug/Icon/32/wmp.png deleted file mode 100644 index 361661d..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/32/wmp.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/19.png b/AUTS_ServiceControler/bin/Debug/Icon/64/19.png deleted file mode 100644 index 103fa81..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/19.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/cancel.png b/AUTS_ServiceControler/bin/Debug/Icon/64/cancel.png deleted file mode 100644 index ade18c2..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/cancel.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/chat.png b/AUTS_ServiceControler/bin/Debug/Icon/64/chat.png deleted file mode 100644 index 27a3c96..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/chat.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/down.png b/AUTS_ServiceControler/bin/Debug/Icon/64/down.png deleted file mode 100644 index c2f3ee2..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/down.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/fav.png b/AUTS_ServiceControler/bin/Debug/Icon/64/fav.png deleted file mode 100644 index e81bdb0..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/fav.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/folder.png b/AUTS_ServiceControler/bin/Debug/Icon/64/folder.png deleted file mode 100644 index 1cd2d50..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/folder.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/hand.png b/AUTS_ServiceControler/bin/Debug/Icon/64/hand.png deleted file mode 100644 index 59b1cf2..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/hand.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/internet.png b/AUTS_ServiceControler/bin/Debug/Icon/64/internet.png deleted file mode 100644 index 90a15bb..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/internet.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/left.png b/AUTS_ServiceControler/bin/Debug/Icon/64/left.png deleted file mode 100644 index e4eea79..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/left.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/mail.png b/AUTS_ServiceControler/bin/Debug/Icon/64/mail.png deleted file mode 100644 index 9a433ea..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/mail.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/no.png b/AUTS_ServiceControler/bin/Debug/Icon/64/no.png deleted file mode 100644 index 2c3fdf0..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/no.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/ok.png b/AUTS_ServiceControler/bin/Debug/Icon/64/ok.png deleted file mode 100644 index 0d854b7..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/ok.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/paint.png b/AUTS_ServiceControler/bin/Debug/Icon/64/paint.png deleted file mode 100644 index 33950f8..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/paint.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/question.png b/AUTS_ServiceControler/bin/Debug/Icon/64/question.png deleted file mode 100644 index 9da2cb7..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/question.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/recycle.png b/AUTS_ServiceControler/bin/Debug/Icon/64/recycle.png deleted file mode 100644 index 7f7796c..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/recycle.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/refresh.png b/AUTS_ServiceControler/bin/Debug/Icon/64/refresh.png deleted file mode 100644 index c301e2f..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/refresh.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/right.png b/AUTS_ServiceControler/bin/Debug/Icon/64/right.png deleted file mode 100644 index 6a71fc5..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/right.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/shutdown.png b/AUTS_ServiceControler/bin/Debug/Icon/64/shutdown.png deleted file mode 100644 index e64fc56..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/shutdown.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/up.png b/AUTS_ServiceControler/bin/Debug/Icon/64/up.png deleted file mode 100644 index 0f0a566..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/up.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/wlm.png b/AUTS_ServiceControler/bin/Debug/Icon/64/wlm.png deleted file mode 100644 index 437775d..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/wlm.png and /dev/null differ diff --git a/AUTS_ServiceControler/bin/Debug/Icon/64/wmp.png b/AUTS_ServiceControler/bin/Debug/Icon/64/wmp.png deleted file mode 100644 index d9de055..0000000 Binary files a/AUTS_ServiceControler/bin/Debug/Icon/64/wmp.png and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_ServiceControler/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_ServiceControler/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbproj.CopyComplete b/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbproj.FileListAbsolute.txt b/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbproj.FileListAbsolute.txt deleted file mode 100644 index 50844af..0000000 --- a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,380 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_ServiceControler.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.exe.config -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_ServiceControler.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.CodeDom.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\System.CodeDom.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.CodeDom.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.CodeDom.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.CodeDom.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.CodeDom.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.CodeDom.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.CodeDom.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.exe -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.xml -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe.config -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.pdb -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.CodeDom.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.CodeDom.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CopyComplete -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe.config -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.exe -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.pdb -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\AUTS_SeviceControler.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.CodeDom.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.CodeDom.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_Ser.B9EECE48.Up2Date -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.exe -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.xml -D:\ML\Wen\AUTS\AUTS_ServiceControler\obj\Debug\AUTS_SeviceControler.pdb -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_ServiceControler\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbprojAssemblyReference.cache b/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbprojAssemblyReference.cache deleted file mode 100644 index 8c82647..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbprojAssemblyReference_BLV_MOMO_十二月-04-004446-2022_Conflict.cache b/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbprojAssemblyReference_BLV_MOMO_十二月-04-004446-2022_Conflict.cache deleted file mode 100644 index 577c837..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/AUTS_ServiceControler.vbprojAssemblyReference_BLV_MOMO_十二月-04-004446-2022_Conflict.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-张树友_Win10.cache b/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-张树友_Win10.cache deleted file mode 100644 index c0df038..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-张树友_Win10.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index e434917..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 9dfbb25..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_ServiceControler/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 232432c..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.CopyComplete b/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.CoreCompileInputs.cache b/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 8367733..0000000 --- a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -50b9acbd5222d07845c008d4a3d6a2f1f6191a85 diff --git a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.FileListAbsolute.txt b/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.FileListAbsolute.txt deleted file mode 100644 index 04fd805..0000000 --- a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,286 +0,0 @@ -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe.config -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Form1.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Resources.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmMain.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\log4net.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmAddTask.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmListenTasks.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmSyncTasks.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmTasksDbType.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe.config -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Zstandard.Net.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\BouncyCastle.Crypto.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Ubiety.Dns.Core.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Renci.SshNet.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmAddTask.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmListenTasks.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmMain.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmSyncTasks.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmTasksDbType.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Resources.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe.config -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmAddTask.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmListenTasks.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmMain.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmSyncTasks.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmTasksDbType.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Resources.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe.config -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Zstandard.Net.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\Renci.SshNet.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmAddTask.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmListenTasks.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmMain.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmSyncTasks.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmTasksDbType.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Resources.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.pdb -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\FlexCell.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\Zstandard.Net.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\BouncyCastle.Crypto.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\Ubiety.Dns.Core.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\Renci.SshNet.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.dll -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.xml -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe.config -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.pdb -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\FlexCell.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Zstandard.Net.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\BouncyCastle.Crypto.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Ubiety.Dns.Core.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Renci.SshNet.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.dll -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe.config -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmAddTask.resources -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmListenTasks.resources -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmMain.resources -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmSyncTasks.resources -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.FrmTasksDbType.resources -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Resources.resources -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.xml -E:\BY\工作档案\VS2019\应用服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\FlexCell.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\SharpCompress.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Data.SQLite.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Google.Protobuf.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Zstandard.Net.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\BouncyCastle.Crypto.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Ubiety.Dns.Core.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\Renci.SshNet.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Compression.LZ4.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\K4os.Hash.xxHash.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\UTS_Core.dll.config -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\MySql.Data.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Memory.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Buffers.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Numerics.Vectors.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbprojAssemblyReference.cache -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.GenerateResource.cache -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\UTS_ServiceControler.vbproj.CopyComplete -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.exe.config -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.exe -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.pdb -G:\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.xml -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.exe.config -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmRegistry.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.exe -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.xml -G:\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.exe.config -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmAddTask.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmListenTasks.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmMain.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmRegistry.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmSyncTasks.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmTasksDbType.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.Resources.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.exe -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.exe.config -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.exe -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\AUTS_SeviceControler.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\bin\Debug\FluentFTP.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\UTS_SeviceControler\obj\Debug\AUTS_SeviceControler.FrmUpdateConfig.resources diff --git a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.GenerateResource.cache b/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.GenerateResource.cache deleted file mode 100644 index db275a9..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbprojAssemblyReference.cache b/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbprojAssemblyReference.cache deleted file mode 100644 index 6d3f627..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/UTS_ServiceControler.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.CoreCompileInputs.cache b/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.CoreCompileInputs.cache deleted file mode 100644 index c0d5850..0000000 --- a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -403b6e1dadf3a34ed45559021e33f2c2ba9b9ea2 diff --git a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.FileListAbsolute.txt b/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.FileListAbsolute.txt deleted file mode 100644 index 01cfde9..0000000 --- a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,12 +0,0 @@ -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe.config -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.pdb -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\bin\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Form1.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.Resources.resources -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.exe -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.xml -D:\Sync\UTS\SW\UTS_Studio_UTSDataService\UTS_SeviceControler\obj\Debug\UTS_SeviceControler.pdb diff --git a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.GenerateResource.cache b/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.GenerateResource.cache deleted file mode 100644 index 2941403..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbprojAssemblyReference.cache b/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbprojAssemblyReference.cache deleted file mode 100644 index 0f597b4..0000000 Binary files a/AUTS_ServiceControler/obj/Debug/UTS_SeviceControler.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.AssemblyReference.cache b/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.AssemblyReference.cache deleted file mode 100644 index 4686d5f..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.CopyComplete b/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.CoreCompileInputs.cache b/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.CoreCompileInputs.cache deleted file mode 100644 index d7166e7..0000000 --- a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -5a7b5df093e9f0adf34f38e8fcbaefb1d0456ce8 diff --git a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.FileListAbsolute.txt b/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.FileListAbsolute.txt deleted file mode 100644 index 716a74d..0000000 --- a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,55 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\AUTS_SeviceControler.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\AUTS_SeviceControler.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\AUTS_SeviceControler.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\AUTS_SeviceControler.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.CodeDom.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.CodeDom.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\bin\Release\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_ServiceControler.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.FrmAddTask.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.FrmListenTasks.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.FrmSyncTasks.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.FrmTasksDbType.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.FrmUpdateConfig.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_ServiceControler.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_ServiceControler.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_ServiceControler.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_ServiceControler\obj\Release\AUTS_SeviceControler.pdb diff --git a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.GenerateResource.cache b/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.GenerateResource.cache deleted file mode 100644 index 5bfd7cd..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_ServiceControler.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmAddTask.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmAddTask.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmAddTask.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmListenTasks.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmListenTasks.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmListenTasks.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmMain.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmMain.resources deleted file mode 100644 index fc847a6..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmMain.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmSyncTasks.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmSyncTasks.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmSyncTasks.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmTasksDbType.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmTasksDbType.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmTasksDbType.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmUpdateConfig.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmUpdateConfig.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.FrmUpdateConfig.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.Resources.resources b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.Resources.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.Resources.resources and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.exe b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.exe deleted file mode 100644 index 672ffb9..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.exe and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.pdb b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.pdb deleted file mode 100644 index 1011c8a..0000000 Binary files a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.pdb and /dev/null differ diff --git a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.xml b/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.xml deleted file mode 100644 index 00d9ff8..0000000 --- a/AUTS_ServiceControler/obj/Release/AUTS_SeviceControler.xml +++ /dev/null @@ -1,959 +0,0 @@ - - - - -AUTS_SeviceControler - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 获取数据包的和校验 - - 数据包的内容 - - - - - 加载窗体时,添加任务类型 - - - - - - - 任务类型分页 - - - - - - - 显示窗体 - - 把本窗体打包放在其他容器内 - - - - 根据类型不同,快速生成ConnJsonString - - - - - - - 快捷生成字符串 - - - - - - 窗体加载时启动项 - - - - - - 初始化本地IP - - - - 所有服务的信息 - - - - - 选择下拉框改变值 - - - - - - - 更新服务状态 - - - - - - 工具栏检测服务按键 - - - - - - - 工具栏点击一键安装 - - - - - - - 工具栏卸载按键 - - - - - - - 工具栏启用服务 - - - - - - - 工具栏停止服务 - - - - - - - 工具栏重启服务 - - - - - - - 连接服务 - - - - - - - 初始化网络套接字 - 注册表中无端口号时会引发异常 - - - - - 更新网络的提示状态 - - 是否连接成功 - - - 公共用户 - - - - 校验回复字符串 - - - - - - - - 添加任务 - - - - - 删除任务 - - - - - 开启任务 - - - - - 暂停任务 - - - - - 获取任务参数 - - - - - 设置任务参数 - - - - - 重启任务,立即执行 - - - - - - - 工具栏添加任务 - - - - - - - 工具栏删除任务 - - - - - - - 工具栏开启任务 - - - - - - - 工具栏暂停任务 - - - - - - - 工具栏获取任务参数 - - - - - - - 工具栏设置任务参数 - - - - - - - 右键菜单全部开启任务 - - - - - - - 右键菜单全部暂停任务 - - - - - - - 右键菜单全部删除任务 - - - - - - - 右键菜单获取全部任务参数 - - - - - - - 与服务通讯,包含发送,接收,处理过程 -→◆Recv: '接收 -←◇Send: '发送 - - - - - - 添加记录并设置格式 - - 添加的记录内容 - 需要设置的记录颜色 - - - - 点击是否收起通讯日志 - - - - - - - 点击清空通讯日志 - - - - - - - 显示窗体 - - 把本窗体打包放在其他容器内 - - - - 根据类型不同,快速生成ConnJsonString - - - - - - - 快捷生成数据库连接字符串 - - - - - 存Json数据的键值对 - - - - 当前需要生成连接的数据库类型 - - - - - - 窗体启动 - - - - - - - 隐藏Page表头 - - - - - 类型变化(SelectIndex),改变页面 - 如无必要,不要使用文本改变(TextChanged) - - - - - - - 打开文件,辅助输入 - - - - - - - OK按键 - - - - - - - 窗体加载 - - - - - - - 初始化配置信息 - - - - - 选择所需要存放的根路径 - - - - - - - 自定义选择文件夹 - - - - - - 选择所需要的License文件 - - - - - - - 自定义选择文件 - - - - - - 开始一键发布更新 - - - - - - License检测 - - - 初始化FTP服务类 - - - 数据服务的文件夹路径,不含版本 - - - 更新服务的文件夹路径,不含版本 - - - 数据服务升级时存放从FTP下载的最新包文件夹路径 - - - 服务子网名(组名) - - - 服务角色,0为普通,1为服务器 - - - Ftp远程升级文件夹路径 - - - - 创建运行时必要文件夹 - - - - - 获取更新服务的最新信息 - - - - - 一键更新 - - - - - 下载服务包,完成服务安装 - - 数据库中该程序包的信息 - - - - - 校验数据服务包 - - - - - - - 判断本地与云端版本号是否一致,不一致则代表需要更新数据服务 - - 本地数据服务版本号 - 远端数据服务版本号 - - - - - 取消关闭窗体 - - - - - - 设置窗体父容器,并显示 - - - 获取参数 - - - 设置参数 - - - License文件字段枚举 - - - 客户名 - - - 注册日期 - - - 截止日期 - - - 管理员账号 - - - 管理员密码 - - - 远程数据库URL或IP - - - 远程数据库连接端口 - - - 远程数据库账号 - - - 远程数据库密码 - - - 远程数据库私有操作库 - - - 远程数据库共有操作库 - - - 本地数据库存放文件夹 - - - 本地数据库文件名 - - - 本地数据库密码 - - - 客户MAC地址,锁定|MAC时使用 - - - 备注 - - - UTS版本号 - - - 签名 - - - License文件校验返回枚举值 - - - 未找到License - - - 无法打开License - - - 无效的License - - - 校验通过 - - - License校验结果 - - - 校验通过 - - - 无效的客户 - - - 无效的注册日期 - - - 无效的截止日期 - - - 无效的用户 - - - 无效的用户密码 - - - 无效的MAC地址 - - - 无效的UTS版本 - - - 无效的签名 - - - 无效的数据库地址 - - - 无效的数据库名 - - - 无效的数据库用户 - - - 无效的数据库密码 - - - 无效的数据库端口号 - - - 无效的数据库名(sqlite) - - - 无效的数据库文件夹名(sqlite) - - - 存储License签名校验值 - - - License密钥 - - - - 获取客户名 - - 客户名 - - - - 获取注册日期 - - 注册日期 - - - - 获取截止日期 - - 截止日期 - - - - 获取管理员账号 - - 管理员账号 - - - - 获取管理员密码 - - 管理员密码 - - - - 远程数据库URL或IP - - 远程数据库URL或IP - - - - 远程数据库连接端口 - - 远程数据库连接端口 - - - - 远程数据库账号 - - 远程数据库账号 - - - - 远程数据库密码 - - 远程数据库密码 - - - - 远程数据库操作库 - - 远程数据库操作库 - - - - 远程数据库公开库 - - - - - - 本地数据库存放文件夹 - - 本地数据库存放文件夹 - - - - 本地数据库文件名 - - 本地数据库文件名 - - - - 本地数据库密码 - - 本地数据库密码 - - - - 获取客户MAC地址 - - 客户MAC地址 - - - - 获取备注 - - 备注 - - - - 获取UTS版本号 - - UTS版本号 - - - - 获取签名 - - 签名 - - - - 读取License文件所有内容,并进行解密,将解密后的内容存入License字典中 - - License文件完整路径(含文件名) - - - - 注册服务返回注册服务的索引 - - - - - 软件索引 - - - - - - 软件名称 - - - - - - 软件最新版本 - - - - - - 软件包MD5 - - - - - - 软件包名,不含完整路径 - - - - - - 软件发布日期 - - - - - - 描述服务的状态 - - - - - 服务名称,服务版本 - - 服务名称 - 服务版本 - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 检测服务是否存在 - - 服务是否存在 - - - - 获取服务的状态 - - - - - - 安装服务 - - 服务状态,未知字段 - - - - 卸载服务 - - 服务状态,未知字段 - - - - 开启服务 - - - - - 关闭服务 - - - - - 重启服务 - - - - - 用于填充发送包 - - 发送包命令 - 发送包参数 - - - - - 一般用于填充回复包 - - 接收包序号 - 接收包命令 - 回复包参数 - - - - 包头 - - - 序号 - - - 包长,两位,小端模式 - - - 校验 - - - 命令 - - - 参数 - - - 心跳包 - - - 日志上报 - - - 日志上报 - - - 增加服务任务 - - - 删除服务任务 - - - 获取服务任务 - - - 设置服务任务 - - - 开启服务任务 - - - 停止服务任务 - - - 重启服务任务 - - - 上传文件 - - - 读取指定文件大小 - - - - 描述服务的状态 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 检测服务是否存在 - - 需要检测的服务名称 - 服务是否存在 - - - - 获取服务的状态 - - 服务名称 - - - - - 安装服务 - - 服务程序所在路径 - 服务状态,未知字段 - - - - 卸载服务 - - 服务程序所在路径 - 服务状态,未知字段 - - - - 开启服务 - - 服务名称 - - - - 关闭服务 - - 服务名称 - 关闭服务结果 - - - - 重启服务 - - 服务名称 - - - - diff --git a/AUTS_ServiceControler/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_ServiceControler/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 6939880..0000000 Binary files a/AUTS_ServiceControler/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/A5/A5.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/A5/A5.xml deleted file mode 100644 index bbaaae6..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/A5/A5.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - 43 - -1 - A5 - - A5主机 - 2022/11/19 11:58:24 - - 0 - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/AE-1802/AE-1802.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/AE-1802/AE-1802.xml deleted file mode 100644 index fa4f21e..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/AE-1802/AE-1802.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 29 - 3 - AE-1802 - P_AE-1802_20211008_110208.png - M1背景音乐模块 - 2022/4/6 14:32:12 - - 2 - - - 93 - 1 - Q1 - AOI - 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 - - - 扫码目检 - - - - 94 - 2 - A1 - Assem - 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 - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A10/BLV-A10.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A10/BLV-A10.xml deleted file mode 100644 index 0fbb3ba..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A10/BLV-A10.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 18 - 1 - BLV-A10 - P_BLV_A10_20210925_180018.png - Boonlive A12 RCU 主机(A12主板 + W5500模块组成 + PM-1202电源模块 ) - 2022/8/30 10:29:22 - - 0 - - - 52 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 53 - 2 - T1 - Test - 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 - - - 烧录 - - - - 54 - 3 - T2 - Test - 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 - - - PCBA 测试 - - - - 55 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 56 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A12/BLV-A12.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A12/BLV-A12.xml deleted file mode 100644 index a709bcc..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A12/BLV-A12.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 2 - 1 - BLV-A12 - P_BLV-A12_20210925_175539.png - Boonlive A12 RCU 主机(A12主板 + W5500模块组成) - 2022/8/30 10:29:22 - - 100 - - - 8 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 2 - 2 - T1 - Test - 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 - - - 烧录 - TP_2_2_REV_86_20210810111527.uts - - - 3 - 3 - T2 - Test - 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 - - - PCBA 测试 - TP_2_3_REV_107_20210812145843.uts - - - 4 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 14 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A7/BLV-A7.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A7/BLV-A7.xml deleted file mode 100644 index 3575ab1..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A7/BLV-A7.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 6 - 1 - BLV-A7 - P_BLV-A7_20210925_175642.png - BLV-A7主机测试项目(A7主板 + W5500模块 + 12V/2A电源模块) - 2022/8/30 10:29:22 - - 200 - - - 11 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 12 - 2 - T1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAEG2SURBVHhe7b1ldFzpmf0ru9tttmVLspiZmaHEzMyymCxmssi2bJlkki0zyzIzu91mdjNDkk7SSWaS/GeSyWRC/t2n1M6s++F++N816UzAz1rvOqdKUqnOu9+9n73POSqpvKpX9ape1at6Va/qVb2qV/WqXtWrelWv6q9XaWk2b1gZaYe/fPiq/sFqipGO+iZDnUW/D/X1NbA1069zt7PJUX4hOsjZUPl15f6r+jstfa2FBQvmzPjjItU5mOtrX9LVVPutjbnRU1c7CysrU8NfKHzc3TydrKriQ0N1lN/f29s7dfIHX9XffpkbaXqqL5z3m3mzZ2Ciq46Ohirz5szAw87sT8a6i/7VzFAHKxP9d+0tzP6g8PKq8HOxcvV1sX8iIL8eHx8/N8DT2frlS72qv8WyNzcqUJ03h0ULVNFQnc+CObOZP3smpobaLJw7GwNtDQF9IZoL5uBsafihqZ7Wp/YWpi8iQwKcPRxttoT4et1Wvo63g0VwXJB/sHL/JcNfyfrfQqWlpc2ZP2fmT2bNmI5yzHhjGrNnTmfOrBnME6D/DLyhpjoB7jYsnDMLHycL/F1tfqmtofZHaxOjX0cGu8V52Fv/ICYoYI+85BSFh9NYRlxEgvL1FR5mejmRkfOU+6/qf6l0jTVPTZ82lVmz3mDaa1Mnx6wZbzB92uvMmv6GgD2ThfPmTgKtNn8eTjbmOMqYJ89nxYXgYW8qX5uLh63JT8P9nEdcbK3+GKXw7Y+P95lra6L/VZi/15c3RdKVvysm1NN88pe+qr9OqaWYBk71UP1Pr2A7ChcHoakxF3UZagtmCcCvMW/+t1vleOP11yaBnz97lgAusq62AEsjA4x0FqGlNp/2JUXYmRqgrTaPwuSAXyk8HT4wM9RHevcfmyoqFgV4OzjHh4d8H5FwhOnxwV5JL9/Gq/pLl0G73wLLestRz5aoX5ukOGOX68PcAC1MIszwT3SipCIcCxcDZntrM2PG66gumD0JrlK+NTU00Fq0CNW584TFs1CdPRvNhQsw09fFdHLosLyvExtTY/QWaeBoacTiJL8vbC2Mf+ThaPfbrFiFVYCnU1RGfNTP/tyvEyMDZPdblgOv+vf/pNKOpr32eq3ZGcdWN+aVWeHRHI9fexTmxV44FvuTUpfMzEAd5mSZ8XqKAQHJbvT3FxCksEdNVRU9HR3MjI0xNzHB0swcI30DtDQWiXyLA581Gw3p20qwbc1NMdLVIcDDnu7WGrTFrHnZm9FUHP9bJ0vT/7C3Mv19TmJoVoi/S052Svxv7k9MzFS+v+iggK3t7ZULlPvKBfByEbyq/9uaWWrep1JpgkqNKSpLzJi6xAbDDgVmzTJafPHuSMKtLV5GAulDxTjURWCT64VljCM6WtroaGqhr6OLsZ6BsNUQK1MzAdMSR2vbyX0l0HNmzGDOzJloCLONdLWxNjORr5mIXDtTWZKHsb4mof6uLGsteuFobfrC0kj3RWt10mhYgGdtUkz4f61ob1dTvldvF4dNsWGBX/f2Ni1SPhZT+JpyKPdf1f9HzSq1j1LJsfi9Sok5KtVmaFY6olJnwZRqO9naMaXWjnmd/izsD8GgI5ppPZ44DLrhtDIBT4UXpkZGk4xVgmwiWxM9PQFZbxJgeytrrMwsMTLQmczSsydBniWyLo5c3LeamDRtdXXMDQ2wtxAn7u1OZkrsC1MDXfIzY9g9uvJFgIeLyPpCYgIcr8eFeg87WFr8Z2JUxLtjY2PTlO8/2Nezrrm8wHfyYKRSU70mWf+qpNTq3CynFJv/q0qJNSoVlqjUWvBaky0qzbbYC4OnN7szrdkZ81YFr7e6s6DJG5V+d/RXB6GWLs+bmGIggJoYfguypYmZDKNJZhqKbFsa6eNsb4e1pT6pSV4C6kx0DdTR0lRlvmRqJcAmRoaT0q6nrY2WuprkbC15DWNc7W2JDPLHRmTd1cGK7ZuWkRwVKAvBHH2tRX/Kjve6kRDi3ZMQHvLjod72UOXxhIT4maREhQ5OHpxUjJ/9Avgnyt9Ks2LZHlRo1RUWbt8bqTe1yOypSqEFKkXmzBSQNeodUGmxYWqjMFf257d6saDVA5U2F3R7gnmtT/Z73JhW4YS+gbBVgFWCbGxghJ21HWaGIrsClpGeLj6OtnjYmOFqYyHfI3070AtnLydqm3Lp6yvEztYQXQHTWgBzsnfAyUGGnT0OwnozeT3dRZoyNEQV9EXqrfB2c5IoZo2FsREeznbs3rqSzLggDLQ0SA73+HFyqMs+D0frS2V5GY1/NmphPu7r/9yvIyMjp3t7O0zK+j9s6TYG1Jl0h/5JuyPwxWul1r+dkW2Bm5gpJcBTKi2Z2mDNDJFl285QNKvdUW10QaVRQG9yYqoYMBUBeMpSb3QczdDV0hNZ1pHeaYSZkamYK0thriWGegKIja04ZXPcJBvbmRvLYys8nexxd7CThWCBiwDt7uuGoRgvM2GrvY3NJMiOsnWVrbOtHU4yXBydMDEwnDzJsmDebOnzi7AQJ+4s7PYTOXeytZH3oMGxw9sozozFwkAff2fL32fE+7/r5+Z00N/T5XCCQqEqhz7Fz8M1LSkqOOzbmRDjFhpgXZ6fqvvy4d9/mbcGxuh1Bv+XZmcwU6vsmZZlhGGBE9MzRZpLrVCpUkq0jBobVCplVMtosBdGS09uc0KlwwWfkTx8GsLRlFyrrak+KcuGItGOtg7YCPP0dfWElToiqxbYWVjiLMCai1x7OjvjaGUlj62F7fo4yNZOWGlrZSESryuvoy9OXBtDcdhKhtrL15ztbEWaHdHT0pIMPpe5s2fKmPUt2PPnvPz9utiIArgpF4+jA3byequXtVO2OAtna3NMdDXIjPX+Nz8XmwvujnbPQryd3MvKyqYp41dMaPAXgR7OyjNtk+Xl5TVToTCc8fLh31fZt4bYG3YG/lK7O4Rpde6oZBnwWqpIbIMClWwBtdoeq9ZAYa+wtdaeKeV2vLbEgemNbih64gRceX6pA+ZrI6jLFjOlO5+F82bJhM9Adf48NLUXYSDGykom28bSatI5W5uZibkywMFW2Gxtg52l5STY9vLYVvatxVRZmJpObpXfYy0LwsrMQlitP9nX9QVYQwHf2EiHpAQnjM00mCPGTHXBHNQXzhPQ5zNbwNZQX8giNTV0hcnmsjjcHB1lAcnrSevw93JnRW89tqaGWMvIj/P8Q2q07xeudtbnIoMVL0L8vGr+LOGudjblGQnh+pMTJuXn5KTxcvdvuzx6I+fZVwe9b1jiwbx6MUnZxqjkSiTKl95boATXEbUyF4xr/HmjRfprjRuFfWVE96SgUi+9d1UEcwd8mT7gxcphFw70WVKSE8lC1dnMFWc8V4yTqvocZs6bzqyZb0xOtrHIqqerM0XZsSTHhOEk0qt01OZiwuxt7LEWhitl2dRY2O3mLkxWMtpGsrQJDTVLWNrZTlFBPr7eXtjbWRGTqMA3yAU7R2PKlkSTEOuOgakm8wRsfYlcytdytLOb/L064soXqS1EX1NTQDWV32s1qSYuttbs2raOCPECHvY2+Li5CctN/hAT6PzM3c5iubuD1ZnEEHdlFJs0ZR6OdiPK7cua4uJipf1y/2+nlKtTvTX44IL2EKbX+zElScxQuR/T4414LcVMnLM45iW2OHdEMKPSmanVzrhUh7Lj4BAa7QFiqLzxWpvBotWRJHaFs6liKgfXZXJ4WxcmJlqoi1Srq81njuosZsx5g5kC8OzpAvqsWUQHOXHjSDvBQa44i3zaCrPdnF2xFfm1EQabGBlPstbdxRVHe3sByVYWhSs//Px9fv/v/8Iff/Vz/v1nP+arT97n2sWzLF/eR355Hhn58VQ25BGTHExyWqCohvR06dVO8hquTvL+7aSHi1mzUaqBOHnNhWpoyaIzMzSc7PFKwAM8PLAwMqF0cSZr+xpwNDXAzdr4RXak6/9JivC8YmtuPOBsYzmqlHLlPJYuzrZ3sDLrnZxUKYWNzRxXE5P5Lx/+79WiluDOOe3BL15vCxITJVEo3xCVPAPpu8ZMzTOVXisAV0jerRYzVeeGeVsEu05skYgULsbKBXWJR/YDydisiJVJ0acpXZveYn1SEoyJTnBh1epqcrIjUROZVBXJnC9yPXvmzMkxd+4sZqrOZOaiOcyVnrlIQ03AFeaKMfIQIJVsVQJso2SYtfRm6eejI6v5zc9/yDdffsyjt67y4dP7/OizD/nyo7f55N1HfPHhc37w+UdcOHOc9o5mAgMDBGDLyZ93c3bBXV7XQxaR0qgp+7eyLzvb2mNrYTWZvZUXSXQ0F4gp1MXS2FgMoAU+rqIMEsWcrM04cmCXHKcDloa64v5NX6SEe//Q391+t62p0R4PJ9v8P8t5YmTYPld7i8mrY8ryd3HRVigUf93+rd4UHLWgNfB3czpCeK3ejdcKDZlZJiAXm+JQ5o95qS/a5d5Mb/ISMyV5t9GT4YmNWPWEk7w0F7Vmb9xXJDO7P4CEPF8iXDUpTHCgb2kSsRmmROVb49QSiLWvNYsWLUJLSxtNTcmy4nQNDBZhZ29Kbn4ii/TVJxmupjZXHLO29M55aAjrzcU921pbigTbCegCgrUtYyPL+MUPP+SL9x9Pgnv26CHOHDnMqcMHuXLqOM/v3+LhzSs8vXOdD57d46uP3+fKuVO01NdNstjYUHq+KIESXC9XN7xEHbylBSijnJHuIox11dDWmC8Gbb708bmSw+eitWiBuHNNTKX324hvMBEvoWR7WKAv61d2kx7lh62xAG5t9FtPB7P7NqZ6W31cnf4jMTLIVDnPvb1VcxRerp+khvkbT078X6N0WoIsZ7UE/Mt8ccxvtPmhU+XKm2+d5evP3+Pg1YMkrylDp15AbgwmsC8N6zoF6f2ZeA6nSyyy4XWJRlO7BfgeD2L7E2hY7MFQXRD1ZUEvAruCMC4wY2h3HvPEsE0Pk0kRmZwzZy4LFizAyFKXlVvq2Cwyfvn4SmKi/PH0sKW6JFZ6rhbzJe5oLpqPjrb6pIGaN2e2uOL5ItPCOmdHwgM96KrN5ezBNXz5zjW+//FD3n10j0snj3F2YpyD27dx4fgEd69e4vP3nvJfv/gJ//bTr/n4vWdsXLta+nPMJKAmApK1uTkuDvYCoDYNS2JYXKTAwlwWobYq9vI+DXTUUJ80bXPRVldj4dy5LJJjUBo85dk4MzGJ1sZiRmU/MyaIwsx4jEQBlItF4Wrzc1dLo5PeLk6XXG2tfgR/pfPjjnUK1TkNAe/O7QhmboeCKdXmVG5r59zEAS4eO8RXMil3Lp3l2uXTrDs+SsKWSua3e2HZFcCUTolDrbYUjFaINEdgMhhGbbEfx7eUcmxrLVXD+S9er5GsXGqLoTjsaXUedO/YwsSxs6gt0mDazOmYiREybvDGReR9aVcM8TFObN3SxPjWUgJ87dBYpMoimVg12SrH7FnTJ09hzp09Gy3NhegaaKKnr4W1lan0ZFviI3zFGdvQWFPKifG9PLv/FrcuX+D4/r0cP7CPO1cu8OzOTX72vU/5rYD9XBaDh6u7qMK3pkvZ+y3E3SelhFJWmYJ/sCNVlTF0taVLD/fF0FhT2oWesFdkWty8lSwOfVEi9Xnf3s2iK6bNWBaIsTh6Q2G6trQjHfUFdNSVkBzhg66GSL6Bzpsvp/+7LeUq0q8JOr6gPYgZwt5pJTZMX2zJyfPjXBBwj+3bwdnxA9y/JpNy+zr3rl3k+Z23+OEPPubA7XHM1kSh1enDwnZv5nZ6EZnpR0a0JZf3t7FlrPmFXqUHVml+uPk64ZXsJ4YtlJJlzXQNtWArznahrzHamdIOljgxp9eLlGoPaip9qWyKoSnPmbQsT6q6symrS0HfSE+YpIWqqjLuzGaOZFxNYYeG3kLmqc9j7oLZEoFEysUAGRvqiNM2EYkXIGRblJ/B1fPHeO/Jbb744DnbR9bxIzFn//mLH3F4z06Ra2dMxUQp3bnSvCmjm4O0AkcvyesOdkTHhophy2TN2lbCozwlpkmrEPPnMnkmTRy5/Iy9pTWWSrCl9WioLpi8BLpgruRvYbqhAK4vOVxDfIdS5s2NdNe+hOC7LcOGwAHH+rAXmtlOTMu3RTXLHpe2aOm/lnh1JTO4f5gbN87y/sPbnD2yl3Ur+kXqLvD+g9t89cETLFYHo77UHd2eAALrQvH1tWdJuvWv1w2Vv4juT8OkPZqc1jwiY/xFTm3xCHTFssiPzOYEEgujsa+JkGjlhsqAO2Yj8ZSvSmPn3hJ2HV1OYZwpsYmO2LaF4dUQiZU4WnNza2xtHdCX/rdA+rKO9Gs1fTXMbYwlAs2edOlmEoeMRNqdXSxwdLHC1sFCpF1PpNaI0EBvRtcv56uPRKp/9RP+5evPKC8uEsDsMZFMrOzLjgKa8jSqk+RjzwBPYbQNNhYCvDxnJK3DykVyuRg1pbtWDkcxbMoMbzt5ssZCmG0u++Yi2Qboa3/bUuYpF+NC1cn70/S11HGyNE59CcF3VwbNgSl67SF/MO4OZ36tF3NybHALdqBwoBRTMVNTiq1QqbVhhhiq4I2FrDw+wltvXuDBjUvS3w4xenIjKkvFVS+3xWhjEPnprr8N9LYcXdcVH1o6kP/H14tFviucmFvojmNzHOnLS7BqCmVaji3qYebMD5ZcXeuBSp8vKkNeTFvhTeT+JSKDQQSG+9DWHktBbyqZHTlktOdgKP3XQNyqjq4OJpbGBJcEU1gdzUBPCUd2NBAY4MxCjXkYmmoJoNoCtC6+Pg6YWeujpb9Ier0Btk7COuVCc7IVCS/j4O6tk6y1FIAcbJRnymwEXDFdji64eLvj5uIiz9l+C7idE1ae9qIQ5pgbm38LuEi6hbh7SxMTYaWRAG3+7Zk1K3Hq4sTNDY1RmzeXharCZA1VAVkWoKHm44KC79hB2zRF2ui0BP/SQMBd2OSPSo4Z7omeciCGdDUuJn9ZLmHdKWi0inFqEqC6XFHpdmambGN3lNF/eiXu/VHYdiqYucaN8BLPF6uaIvKUr710c32PcX0QKjWuTK1wZFFTENOKPbAbTGNmvYBZK4xVnh3rD0OlI4DX26X3ntvCsjPryRyqIkjhR3xSCOXrakhenEJtUxkVS8sIivBA00CdeaqzWairimWxF0594WQ1hLOiPY7cnECy88Jx9xa37mQqTDfC1U0ilbhzEzNtTKz00JOtoanIpa6mAGQujtkZX08vMVZWOIuTtjRVni2zkDhmTUiwjzznNMleB1ENd3HXvt7e2IiKKL/HwcYePS0drCWjKyPctxdRDDDSE7MlYCsvfyovfESGOr0I8LN4oWukJoxe+EuFs43ZJAjfVfm0xM/VbAp8z0jAXdQRxNRcc1SSTZiSaMrMKCMSu7KYLqbotXp7ppRaCsD235567HJEpVf2+5RDsnCvHVOXOpA6EsiG/nn/58yOTM26VUWWUQPpv1LJd0S7SUHstipGD65Hz9IEO4UHcU35xI9U80a9LJw2Abvdj7zxAX75k+9x+82LvP3oFrvGNrDt2DYS+8qw8bansaWUDbuXs2RVNYGV0cSnB+Ma74Z6rTcqyxwxLbahSNQntiaYmOWpDO7pZPOOLrIzAwkOdcJSGGwlw9HRBHd3kWuRbyWjNMXsGOhoYGKgJb3UBC9310mw3Z3dcLG3JSE6CEdbJ3HW0mNl6yALwE56rZLlyoXgbO+ErgCsPAljJfKsvDNFuVWeb//zY2UMi0wKeLF+ZMmLwtywF1YmCwtewvDdlPJOBu36wHHDrjD0u0KZXmSDSoH0jFQPIvIjWJgtwKUa49IVhU27MFskWqVORr2MFpHjTvl6j4ylMvrtcd0UyuEdc19cOqBesmdP74yadaX3jdtiSGpIJ22wFEVrMoUb6kjOFrY7WmBgYoRDZQRTqjyYUuNFQHs+1x7c45OP3ubx/Zs8vfcWT+7c4p0n93jn3fu8df8SG0+PseXQRgJrMomMCiIiLZyIrlys2pKZsiqc0IFUGqu9yepNY/DcCnZs62b/3j52XF5H845qkjrjqWnJJDzUhQB/u8kzarZ2xri5ClPN9YTNathZ6k8aoEUL5+Nqa0JpZgh+XvL+fAOE3S4CsDMWIuPWStk1MZ9kuBJo5eVPpeu2kp5ra2n77VUy2TcTNlubW00uBDUHQzSybYjpif71hg01019C8d2UYXNwvVFH8At9ccyzapxRyTRgSrJMepY3pXkJLN/agUGzPwsLha0V0oOVV4e6XGQo45A81/qSzX3OzB32ZtVmS64dmnXr5k3F612bKmtMJCe37e6jubsSnVJfXJdlkbO+juANhXiuyCKuP4cZHcLcSnfeSHLk+q0HfO8HX/PVV5/wX//+M34s24/efsrdW9e5eeMi92/d4OGdG7z39gMuXz5Os8h15ooGkfJ6mvevZOqyTIlewfgOJlG4t4PO82t4cO8Yjx5MsGRkCQ+en6Brbxt5qwtZK9uW9WUoCgKJivbEy9tSZNiBjEQvYkKccBYWL1JTJVZhQWa81+QpVSMDXcnb1mK+HPBwc5U+7Cggmk32YH1tcejinJWO21a2ShlXsld5nlvJ3j+bs+LK9B/vPLnmv7wHou68hOG7KdvaAHedVsV/6Unend8iElkkZqDYlEUCsGGYFelxCvzF2NiWBaBb6yvybI1baxSq5a68VuvAojYf3NamTEr1lOXOZK6OYfcqnZ9e3eds3TKQZR7Rm/zLN5Z4ES351X04m+D2DBRtGTjnBFDfXcG0zgBUVshYGYjKcChTJTOXDNexdn0b28ZWc+HhZZ49v8sHAuYzkepnj27zztMHXJdodvPqRW5dv8ydt67y9vtPGTy/F+utbcxaVc7U/gwsRgrJObKc0EPLsNvfTdjEINES1RI2LiFvSw2bb2zixq29BBSFMi9VZLban4KRYhb35VJUH0drbTy7NlQxtqqEjuowcfxmLBSATSVmGRlqY6C3SIa2sFNYbClOWQBV3rTg4erx30xVgqmUbOX+pFkTc6Zkel9P5S/6OpK/+fz9a4EvofhuKqc1SS+2LvIDl/pgzEuc0Mszx7nGRdyzOXbu4gzjXAhtSsWvLQGLMi8WFTgwr0xiQ1sUcZsrcetOQrNDFsaAHfYbw1jdE/3B6dEi54mJhpnla4quvSELwW84h46j/WTsbaR3zwBrDgwzuK6d5I5cWRRivARYlbUSjdbHMKs3Eq9UH5oas1m5qonmTX1ERgvorRWMPDjPs8+e8fEHT3n/7Ud8/tE7fPDOY65fuTB5IeEXP/sBDZcOYrqlmwWiOn3XD1I+Psri7StwHm3FWfqw5a525o7Woj3WgO++DnI7i1EE+qAI8cE71g+LikCMpG9bd0RRtbmE3jVlrFtVSl9fGv4+1gKuNtZWBhKvDKXfmolEG6CjrSlA66CtqSFgak2y1cFa2aPtBVhhtfJGQn0jTA3FdAnLzS3MqR+ueJG+o/JfU/fVNGbuqNV8Ccd3U729ZepZi0PWmwfovXAIMSC/KhRFihXWBbaYF7gQ2JmIZqkXzs2xTJeIY1juh1NHLA7tMYStzBf22jN3nTcRue7014XUKl9zcEv1JrPGgBfug9nU7ermxFtHWXN2C7VbOzn/8AKBW8qZUuAp0i7MXSUAD4t7HolFZUsGM1Yms3ZiJfWD9bIQ+sjNTaeotZKyHWsZO7GdqhMb6bx+jDufPOXXv/opv/31T/n5T7/ix//6fdx3LMN4xyBxx7fwwUd3uSvS/M3PPuXSew/ZfmGCgM296GxqRnVbExrrymnYtYyitmLyixJJSQojOi6Y4JAAwuNDiCqW45Njzxorwmsgmbo1+fR15dBUmUBSpLu4bcm8NibCZj1hrh4G+lroaClZrYOejpaArSGOWmPyCpW90oRJn1aCbGInrrzcE8X+YgIOlOC6I/dX5pvSa5Tz9l3VFN1A40FzyaH+2d6EF/lj4qmHu/U8CuKMsY+yxEEA9uoVAJa6MqvbB8PmIOYpzVa3GKtVrrh3BjFdZy4pcS73129qqI/tS/mtSp490X2L2XX1AENr21i8poa4ZcUkDZXxRqlk3QKJWTUiz20Kyc3hqGwWqd9RgOepFYyKPFdXlXD+7DHpu5Kxr13jzsNntAx00XRhD/mnthBxcgPdp7dT9vgUVz97Sv2VcRx3Lsd0zxArtg8xuLSKDZs7+MW//4Df/PYnPH5wh8++eI+rb7/J8Nl9pO5bTdBYO5YrawnevJTSXSsIiVIQEqQgJiqcOBlBIX7oVgSTlJSAa0wQ1WISdx5cQc/GOlYvKyM/TUG4v6P0VkPpxcZYmOhLXDLEUEBWgq28oWCR+kK0FqnLc5LDjQ2x8rXFQo7Zbd9iPPcXYbcjG89tWW0vsfjL1/PbE7VXL2z7w7DImEumJwlloUQke+ATLI7SRZOsJHsWLpyFpZMBJsl2qHd6sbDVjp6dRRJJnDBfH4a2jQZTF0xnod4CmtZWTZqe+g2DNA7Vsrgyg+jCZBLbCgjqzSBxVw1aa+KY3i/sbfVnSr048wbZXx4nDC5i3fPTZJ5YS3PPEsbHt7N3/ygje7dy4MghgtIjSRgdoHPbKrq2rqPx+A4WXdwswA6hJ8Ba7l1NwL41XDt/gLVrBwjZ1sUK+d7b965x+coVrl27xNUrl7h7+yafffoen33+Ac2tjQQkx5NUXkRgoC9BAV6Su70JFaC9U0KIrMgkPiaG5PhYopOjiYqKIjk9mTVrezg4sYbjx9eSUhtLUXGksNoSX1cr3OyFpcZ6AriBOHItNDWVd4FqoK6vjpfMscv6FAG3EA8B2XgsA/fRvIiXcPwFqldlqqJu8iYylSd3jgVuG2n93b6tgwxsaUEz3IK6unT8kjzQM9SQ/qEmBkKXuCQXYsNscLLRRUNzHlniqh2WyereHEhAqivqRqpMmTcdzzgvYptz2DS6g/v3H5FWGEd+YyY2tmbkdhVhPxTPlEoXDKNdMRtOFfYHS/+NFJMl6rAihcC93VRd28Ps3b1YCbuSlxWJ6akioreIqoFMYnJDsNzTj0dkMI7OtkRmJpJ0cgzzA2sxPbgW9wMj+J4ZlexbS2VTL4rYBHySYoguzyZfZH5wzQAHx/dx4uRJDh46zIljx/jJjz/n+eO7PHl0k927tlBZWkhMZhxhSUE412cQGxNNWEgQYcFBZGWmCPDBRIaG4B+iICoynFhZHAU1eTQNL2HPrl72SiSLSfMjKzkADwcz3BwkC5sZMnfhXPQjLbDPlWy9pwCvA0W4712M7mjqH5r3NGtNYvOXKO1mt3qdFrdfGrV6HVi1r//Ddx+fYdWObhbGWkg2zCWzPBptWwOszYwwN9LDw9mKaDE+ta0p1NbHYuykJSYogqR0R2pqPchIsyBa9q3jHUgcSGdqpg1W/jZ0Ls2jpDQFn6IoevcupWJjvQCeLEpgg3uAB9G9hUxp9ENlUOR5SxoW463sefscetKndXYPEnpiM+VX9+N7agPmG9uwSnPGoySM8MNreOed+4xuWYlhdSbm4yOYCcB2B0dwOrUVm+tjRLU0smXfSWral5G6uFKkN4notHSis5MITJRIVJhIbmU+h08c5MrFMxw9fJDvffE+D+/f5psff8yKywdJ3D6IVUsBMcLeiDDJ2WEhJMRFER4SImAHE6DwJyYikqRYWQzBgSQnxZEYF8uqwTaOiU+4cnGMDUPVLG0RZQhyQttJF7dKX2xkgXvI8fop++/ufBy2pn/5F/u7Kb0a98hFzW6/0233QL/DE4Meb3yGYijdWCHhPxOvXAUGCuWtq0bYmBnjYm9FQnooOiGWrFi/hA1rayXC1BCW64N5oAnZWc50t8hKrvCmZqSMGYslE+dY4hLvRGZ2ENFh3gKoJanrygkZTMPayRo7GyviE+K4fOMyi+xNUCn2xXx5PqfevkjSsdWUifGJ3LeKe1/e4+5n9zj+3ptY7RtiwfI8bLcvweLwMLmXj7Dr6V3cj28i/NgoxofWYXFohFAB2PXQGnqGN3Hxzn32nzhOyZJaqtr6KK1fSlp+GfFpmbJgk1GI3HtHeJBQlED3cBcnLxzj/Lmz/OrfvyZW4lPB9j68tnbj0b1EYl0iAWGB0pujiAgNlz4dhLuLEwlR0STHxuLl6UmYQkGojOjQYOKjlcBH09fZyFuX95E4lMMbxZYEdMZg3BuC6vZ0NIajsRmOxWN90sS36PwPS3mrp26t4+eaDfZoNzuh2+aO8VIfjAf9MVsRiN2qcDK2FJPXnEawnwM25sYkJIdgneDGgkhzUjszWNyfi29pEIElwfSvraSiJwv/UgXNkjk9W8QJJwlgAvDrKWYY5jkT0pskTjSJGdXuLBRHHpQUiJuLHfv3j1FUWoyWnhbOpWEMSi878uQ0JuJwK8aW4jTWz56n0iu/95g1d0+z/s4p+u+cxP/4ZuzGN+AmrLWRXtt1dDMBRzZiJo8dDq/H8cYuYgaXsuvYWR5//iFPv3qfS/cusX7bStr7O1m1aSvL149RWttOXnGluOcCMgsyCIwOwFlhR2ZVKut2rSZ65wBBKxrxlajmO9xAyGgnHusasWvOxTwxGBtHO4ID/YkSZsdFxuDo4EiUyHZMWCje7p74eXkQ4u9HVKCCAG8vPNzdMPGSnymNxmpTBvp78lHflY3Z9kx57dz+lxD9zyu42t/FusT6iVmtw5+M20Q2Opwx7PWaBNhI+qHlmjDs10cRtC6JouXZdK+qRzvJjqDmBMme52nb3IhNoRdTw/XRzXDAuzyUmJQggoM9Sa7PZFqlA68V2aFZ5cOMXHHZxXa8VuU8eQVpSokrK44Ms0v65M59m9EWp2njbU3ZYBnXru8na1ktYdlpJC+tx3vLUmz3rsJqzwq8Dq2n7Okp+u6fZvujC2y6f5ZNkoldjo5gOr4a/fF16B9Zj41Iud2x9ZS29HDmrTd5+MUzHn7vOY9/8A6PvnzGvU8ecPvde9x+do+z16+x95i0pi27qWjsobKumbr6JRSX5xEQG4BbhBteBZH4lSQQ1laIW1811ivKMOrOxG3tEhxXlWDfkIpNcjA+Af64OTsLc0Mnh4WZBWHyXLCfL6F+/thZWRHk602wjzdW3vY47i7EcG8BujtzBOAs4jfl/2X/nrmmJnK6b4Z1lN1iizMmtda/s+j1wKjPA+Nl/pivDsFufSROm2Kx3xiDc18YJXsaWHlwiLxlEvx39PL5h9fwbhdjlGzEtBBD9ISFyttOF3gZCXsl5KcrRM576RCz4V4Xj292BP71aSxY7MP0Ynd8l2XgVB2JrasZwRURbNvay7Hzu/EL8sPDyQd3We0pbdWE7hLTtH0VpntXon5yPVOvbkXt6hi5949SKb35+AdvMnTrOIslhtkfWovW1VE8O+vpG97IvQ8f8+Crx9z/3rPJ8fAHb/Pw+2/zWMajL5/w6PPHPJIcffedR9x8+ICJMxfpX7We8uoGmuvraWuspqahBN+EIDyzw0g6tYp5w0WYdudi2JPLvLY4zHsz8e7LxWX5YkwrozCPVJ7q9MTc1GySvWEByuNxxtPFeRJchbDaLNAOt4NFmOzNw3xXHs7bs/9Us6FE7yU0f/GaokjVM3PIM11lscTmp0b9Xi/0Vohkr1JgtCYEh7VRaLdID92YhNnGFMJ3VdE7McThs6MsSJdeK3KsmWiFo70p2oaaWFcFYlIdxNZ1PSwpTic2XhxmWhTODnbSo1wIjg4SmS9EvdKPuUu8pbfFMbfGmxO3DhLZUYi7pxvujp4SUQIo3thH3cQGAkWOPYWhZgdXo3Jli4xNqJxfw9TLGyYB7Xh0kvTTW3E8to7phwaJyy7g8JnTkwA+/FIA/vLpt0OYfF8J8tfv8OD7SsAfC9hPeaIcsgCefPaMO8Lst+7f4cyFSwwNi2pUNdHQ0ERNXTWLO2oE0BJm7G5g1qYy5i3PYEFTGF5tyTh0p2HXnoDfUD7WXUkY5SkwUzjjrbyt1sSEEGFygIcsbHdXzJNd8ThQjP2+AhwFYO9tOV//+S7L77Ti4y3numYbFDvU2D7R63L7k9aQHwvLbNAdisB4JBGDDYlob0yUWJSE3Wgu5ePdlG9uoGm0mYYV5WiWOaLSZEfVthbuCqMmdnQQkeHH4qUl5BbFiTHxEBmzJaNjMeqlgSysCSN3Uz1hGypoOb9ZTFYlBf1VJGTGUt5WQcTeIQr3reSHP/mMTz57hzPv3yHu0VGmXxpB5aKAfXGtjPWoCNBeJzeiI8+bNJYQnpRFfUc3R6+c4v6nDwXkbwG+872n3Pv+cx4IyEqg3/z8DhOPDomxO87Vjy7z4HsPePb9Jzz5/AkPP3zE3Se3JTvf4Zgwe/nwZvLyy8VQZpOYEodbegTzy8KZsiKZ16WVzegMQm1JABriRcxl0br0JDB+YQOfvX+LnVtWk5+VgpO97eQFf9v6YNyFwY4i0S478ySn5515CcFfpxS9itd9cwwDHYrMTy+qtP3dtH4/pvZ6M2tFMGprY9DckIDupmR0ZBhsEZbubaBmfw/JYr4MxUk3DdVQV5tBTZkf1dKHB8bEhdbGEtWcSVhdMkHhCvKKMmhc2cLQ2AATd8aZuzwX/U11mG9tQSHmKkEcs/vYIMdlgt57/pCJ8UNcv3yR50/u8Uj66uCHV7G8sY0pZ1fy+oX1pB7dwJRjPTj4+BASnYR/WILk0ELKm3vYe+YsNz94yN2vvgVYOe4KY5Xjxue3OPpknH33d3HowR5OPZvg2vsXpVffFkY/5tlnz3nyofzM04dcuX6D3fuOUNfQQWhoJD5ennh4u6If7MwbWU6otHsypddTlEmMa32ggHuSa6c3c358KT/98XOycuLRM9XAf30azvvzJ09weArAMdvyO19O/V+/YrJMzB1yzFdqVTv8cEa3F1P6vXhjeSDzVkeiLkAv2JSIluQ5rW2Z0kuKadjZTs1oE1GtSZQU+TO2KoqNY02kdGRiWOhD6vIyBla0kJgcirWtORnpyVQ1lJNRV0z2cCc5u4ZFsvpx2d5LzO7V/P73P+Nff/YF778jE3zhLNevXOLSxXPs3bOPnwizrwnjFt8bJ+34OmZMdKDtZcJcPTWMrS1x9wvCP0SUIzGXjuUbOX/nIVefP+atT55w56vn3BZW3/riIbe+fMDlj69w7Mkhxh/sZvzuDg7f3s6Jewe4/u4VHogKPPn0KQ/el0Xy5BaXrl9k/4EDDAysIDklEycHJ0yNTTGyMEHNzZhpyVao9EvGX5vHsuZ8+pZW8s0PnxEe54dVjAU+I+k4D8fhujYR7+3Z5GzJ+d//HM/4IqV8mxWbVto+ndfu9mJKvw+vLQtg1uoINKU/64+mS7xJxbBZgfuuQtJ31zG8u53h0Vp2jfcxvK6e2sYcela10r25i42SWQ8f2UJj/WJcJG54e7rjH+hDXGYi3duHWX5iO5UTWxi8f4Kf/J+v+NPvf8G7z+9/C/SV89y+eZUnD+7w0QePOXt8H58+v07N7hXoDUYz02wBUxfN5DXNOaib6GLn5k5QZAJ5pbWs2bKXU5fvcOn+EwH7Adc/vMPVD29w45ObvCWSff3ja5x5epSj9/dy/O5+jt09wJHb+zj94Cg3373Gvffe4s3HF7lwY4KJ49vYtKGP9tYaMtJSCQgIxNHOcfJqkou3G6nZiTx76xzLl1bzTHK8S20QTk0BRB6pJEh6sN/2HNxWxf5uxabqyY+U+Juo3l6VqT6pht6WJVYHFjY6/cfrg95MGfJnznAourWeOG7LxmevGIjd0l/2FaHYXsLQhXWcfHMPY8c30L+uhbymXKK68jgksWjwwBoaespJTQsjWOGJt5cLoUXJ5BRK3t67jlzJtU0XdjJ4c5zD985x4841Hj+6xRefv81Xn4tZuvcmB8aHefvBIWxXZKGyMxOVZT6o5JoyxXkhRoHGGHjoM8toASYOVvgFh5KQkkVLRy+7D57i9NV7nLx5nf2X9rD36npOPzzMrQ+vc+/T29x47zJnHx1n/NZe9l7fxNiFQQ5cWcWlhxNcvneUs3JMR89sYPeebtavrmT3jnVcvnRN8v1h2lq70XcwxWOJG1oV9qiWueDeGoZTfzRh4+UCcAn+MkcB23L+cmew/tIVmmZiYL/Yst+wweHHc1vcmN7uIb05DsPRNKykt9jJATjtlfwoQHvuKqJ4Qvrhjd0MHl5J56oGqjrEaEhf3nRwA+XSi5ukJzevaeH+zQOs3dCL/5YBolNjWTrQzrpDW1h6cSfuB4ZoOrWbC/cu8e7b9/jBv3zMk49ucO/SAJUHanHYU84bfbGorItGZVPo5MdELKyywSnXHtdYGxY5aqLnZIR/kAcFBbnU1NQzum0nh4+eZu227fSu62Dd7mYOX1rL5YdHufXedW6+d5Vzj49z+MZmtp1pk8Wwiot3D3H6xg5OXNrI+KllssiWcuXyHu7ePjupLidOXmZekETGVWI8S80xqvImojEOv63ZhB4qI3B/Mb4yP4ptuX+ZM1jfZaVV2cxxzzLOsWv3uKs2FPiHqWtDmLYuHHVx22bSYyZB3lOIpxyUh7A7eFclg5c2ULGti8ViyFr66lixtpOthzczdmqMM+PLmdgzwODYMvoGm0hOjiYw2Jec4myKuhtI3zhI4YERgsWI/fxXX4iBecQvv7lDowCsl24rUcsVk/xgDPaVMPVIGSon6lDZncnUblfmhOrhuNiG4GxhVLglOZkhFOUm0d1az8jqQXaObaV32Rqae9pZOlzLpgPtHLiwlvFroxwXJp+4vYuJGxs4ckVazPlVHD63ij1H5b3vreDEuTU8uH+OO7eusnrNRt5I0GNKu0TIDB1c6oKxXexJ9HjlfwPsJSQI25rb8HIa//ZLmeX8i8wDLOsdj6j1+/7HtJEIpo5EobopAfPtWTjuXoz7/hJxj8UCdgnOOwqIWF5Axc4+WjZ307Whm6q6POrbC1hSE0jdYBkp+1czdGYntU0yIV5OMlwJiQgkuSSbbVcO8va7FxhbEcu7756XfnqRppFl6BtpEZ+dQlhLHCFrM/AX86W7uwXVo31MOdPK67tSmNnvinu9F4V10Wzuj+Hx5X4Obqint7GY4WVdrFm5gsEVa2hs66Ohu4mu1VWs2FHMyMEqthxewuYDZWyVMXZoCaP7K9m4s4BNMt588xBXr16isryKjI1FzGyxJ3t5Gra53jgvURB2uJwQAVh5od9jRy4pW3J9Xk7f31eFLzbV965z7jPo9vn+3DURL6ZvjGXOxjj0tqYJ0NKfBWyr3ijcNmahOFRB6O5qKk4O0zcxQtaedmFAGuvPd2O1aQntZ8doHF3OkrYS0jPCCZRe7Z8czAXpyz//5UecO7uN3/zmKw59coOdp48RE+lBTf0S+le1oV3kiX6xMwqFKx7Z0fhdWYPuW+tRvzmM8XgFFSvDSOoJp0/AfXD3LFePrSU50oWKoiQqi/IoLymmpraJkspGshaXUtqQRftAPCvWhTK0zp9VI4Gs2hDC5p1FHDm5nF372jh0eJzmmiq+kRimUeCMfr4r5b2iYN1RhAm4wQdL8duzGI/tOf+xen/T7JdT9vdZqQ1eM71LrTKdurwfqq8M+cO0jTHM2BSL/uZkyYp++Iib9D1QSqAS5CM1cvC15BzsIH9MWHFzOTkjS+geaGDr+Bb2C2P7xzfSs7qdvJU1ZGfHSPypYeLMOnY/PMLA9eO097Ry8tgoQ8s7CekqRLUukfP3b07eA11UUUxUTyppW/JIOdlH9KEe+jdVC/tPc+fuKOsPtJK3LJPcpgi27VhCflkQcal+hIX6Eh0ZTlREJAmJqWIIc0mVeJeW6UpRsQaVlTNo7zBh5+4qRjbWkZaaw6aVPfzxP36EQa4Xtuluk39t4b06mbCDArAYLCXA0n8fv5ymv/9SyndUtZ2bTZ3jTt1+/1/rtgUQOFZI4L4y3OVg/feXojhYQfChakLHawg/Ukf0LgH3+Gp2HdvKhu0rJeKsYGTnanae20Xv+Z1sOL6F4tE2mjriWbYmB6MMV7SLPbHJ8aK2VUzdsS2E7FnGxXt3KV0cxdi2LRw5dQCNch9Ma72JTgnEO9yXihNDrL63S0zVLg7sT0OxNYG5vd74tyjIrAsiMM0RM3d9LJV/FWFjNXl/lZOjC87OHjg6uuLqYkJgwHzKy4xIT/PEwtya53fO8skHd5meakVmYxJ+xQqC9hQQJNI8abB25RO2PX/s5fT8Y1V8tbOOd4VNe8yy2E+ixgpfJE40ELKvUla1SNd+MSDC5uDD1UQcrZ8coWKeyiYGWH9iK6P71jOyXZx0VzXVE8Oor00jvC+O9uEM0uI9cXcxwNzfAL08F9SWZbPp3gVx4Z1cP7+HicN7qd6/keT9a/niB98jPMyXqMhQkehMMrZmUXa6i4oLA/hdGMLl2krUz9Xw2qYQDDtd8Wt3xSfHAX13LdTN1NA30Jr8YBjlJwMZGRphbGyCiQxNTa3JD5G5dnKUxbUK5ubYUrm6mIAiX3xWJRK8twg/MZ1e0n/jtxRUvJySf8xSXtHKbPWIUXQFnonamPWH+MP1xIzXo9hXLhFC3PZhcZwTSwiTEXVUGD1RR/zoEroOr6JwQwd5N7ejcrwFlW0Z6HWHUTZQKNJcRmlOEBkpHti566KXYC851Av7Yh+27Rqi9+EFOq8c5ukH79PblsfywW6u3TiPQUMImlW25KzKQRHuT2BrIa4312F0ZyUzLzWjsj+B11fYYNXnSGCOC76h1szVm4eq1nwWqqmirqaGs4OtAG0qz6uKLJvjJi0ovi0J35ZwPBoVRO3Iw3MgFteeSBxXxVOyvcTp5VT841dyi6d5fGfA6ojViT9OPlDzIu1YG1HSj0MOVIkxqSLmaC1JxxpwrAohRmQ84VijOPImNA938vqxblSOijsWcOy6U5g4tpya9nwaO/MpyBWJ9bPAKcgE6+ow/Hd3c/mjJ1y+cICnN49w/vRxGg9tJWXfat7/9H2WdnfiYGtEoJi4pLXJ5B5qJOjKCuZeW4rKmTqmHEmb/CC32QXmLAzV53WdmUzXnM0b6jOZozaHBQvm84ZiESpLLbCr9ya4KozolmiCVseTcrSCpIlyog4sJmAk8d+Uf9Lz8vD/eaqszXV+ZL17QeJw4sPYbUV/yj7eSaaAHbZfJHu78tNpQ4mfqCXjRLOMFrJPthO5vx6rfa0sPLyU4m2d1NZmUD9YgqIyjKiOVHG9pXQ3JBEdZkNAjA2ehYFEDCRTsS6Ht64eZPXTq7Rd3s+1t5+wa1Mf4cHu3Ll9G5umWFSLrYnuiyexLRVH6dkLRnJQOZKFytYIAdERlTITpoRr8rqtKs5hZhgqtJlSp4dKszA4XxOfEl/cS7wI351L7HgJyQJwzMEiEvfm33t5yP+cpTRlKe0OnnFLg/dljOb/OnO8CUWLTPTeWuIP1ZE8Xku2AJxzso2C050UnGojY7yRyI1VFG/poH9rF3295bRuaGX9+jpWjzWwdE0pPW2ZJEc54+NpjEuUBSFtaSQeHOTMhw+5cmYvnz89xdEDuxk+ewS/bV0cuX6CWzffJDY6EB8PGzwS3Yhdm4XXgUJmjoWhsl5A7jFFpcqIqWX66CQaMKfQGJVSE3TKHTDLciW0KpSEwyXSfkrEuRcRsCeH6B3Z/+/PzvrnrpJWD72wFtfu5PqAT9N3lL0oPNUroPaQMdFM2pEGAbed/JOtlJztpOS0RCzZzz7QRPPefmpG2uldXsWa9S1UtqYT251B86oi9m1robYohIRIJzx9jPHM9iV1IIGOLcWMHxxm7P5l8k6MMHBqP3dvXqQoUzLviqUElsej1myNcbMdcUMxBI0kYLYpkCmrbVBtsePOpXHOHFyParoV2pk2RHbHEdwRRvzhIiIF3OiDhWIoc8naWZDy8vBe1Z+rtzftjYh6u/TM/tCbGVvzf1d2UiT5bD85x9rJmmikQAxXxdkuik63Uyij5EwHBRMtYsxqGNrTz9qd/ahNdKK/sQKbZcmEj+TRtXIxbSK/ZXlBhEqvtk2ywEdACdrdyYqH5zh98iA3z+1gx7pOth8bp3f3AHXX+9FYF4hGsz3qrVZ41nlRvi2Nun3ZvHl6I4MN6cxLNcatxJ+QmmAClseQIODGH5IcflD6767MP9Vs/+5u0fm7L+U/3Sju9XSI6/DaULA581/yDjdRen4ZRcLswhPtAnQzpWfaKTvbTsX5TtlKX97fTLkYMuuJHtQvDTPn7AC2OxtYub6G5etKCa4Mp7QpiYBCF9RDNPDwM8S30Bfr5gAcxYWXty9m07Zh7r1zih/97CkPv7jKmx+epe3KICmrMwlfF8oHt1dxflcpucvCeKPQnMSaaFqXFROyNpEkATdeem/o3jzCdmb84K/2UUl/79W7PkE1falHeeHa5GcF+6r+VHNhOXWXVlB2qpNS6csVZzuoFVa3jTfQcLGd+vMdZByuwedQK9F7l7J2tIuxsQ66eksJLw+hbX0By1bns6w9i4JULxReIt/R5liXeuAzXETfg63c/eQy4+cPcfbROT764X1++Yt3+Pyr6/zuFw/54cenWHdmkAWF9izuz8Yp3Z6w9Yl4dgXjszSciB0ZxO/MPvvy7b+q/9tSmrLqIUVg+kDwkeqdxb+uOdUj7FpF7fkBqnZU0n6unaaLHbRe6qL+Qhv1F9soOVZH0nZh8JEh9hwaomdLJ0MrlrBxUwNLBnJYvrqErSNLaCwPJ9zPCq3OaOaezGf1uTV8+fETbt46zcTFfTx4foN/+8UnXBF5vnJqmD/823v0bG5DIY4/sjWEpAN5JMiI3paOR2cAJWsy//uzKl/V//+aUjnor5+51KO3YH3K1w0TTSzdVMrYnU3sureRDmFwiwCtBLtJGN0s29qzLRRLDMvYUEvd6mb2H1pO/ZIkEhqj0BDmZvanMrqlmhkSceIvt3H/4Sl+/r2n/OSze3z10QOeP7rG7ZvnyE7yITvFlZ9984SmgSW4VooCLA0jYb9EpL3ZxOzJEgankrc1478/m/JV/Q9qz56CGQ3LFbmbdpTe2X9jzZ8uvH2Qr392n0dfXqH3Ui9N51ppviAgn2+n8XwrjRdbqTxeT+2Bdpbv6SK2v4Q3+hOZWmFD0po0DB8tY/DmSn785TP+9csHfPPJXb547xbvP7vN83vnuHlhnCN7hjl0eA+e4Z4kl0QQtSWVWDFfkXsyiNyVTsS25N+PfNd/7P3PVmNjrtNKe71CW0aST+y+MPifH399h+13Rzn6ZC91Z1qpO91Eo8h2y6U2mmTbJKDXCeA5+8Rtr0rDeTiMgJ2V3P/5exKf9vPNV+/y08/v8fV7V/j+Oxf56OkF3r9/gsdvHub6uf0cG99Ndnk6xpGmJOzLIWq3EtwMQrYnE7U1+YN/qn/u8deuwTXh+jXDoV1Ldxd/NXRh4E8rrq9i8NoKak+3UXOqgbqzzSLbYsYutNIgYC8520hwTxRBJ3r591//ki8+vMU3X7zLN5/d5puPrvPVO1f57PEpPnowzsMbE1w/v59TR/cQFB8oPTiIyJ2pIstpRMrw35pA5JbEzS/fyqv6Lksp30X93jEdo5lnGw9W/LbrQh8dl/qpEUaXnaqn8nS9gNxC5e4SvJaFoHO8la6T63jn8UW+/vQZP/7kLX76yWm+9+45vv/8IB88OMHTt8a5c3E3+3aOEBLnh2dnEBHbUwjclkjY9lT8RuPJ3JiS9fItvKq/Rinlsm2lr0Hjmsje6m1ZP2w6Xv+i/mK3ZOdmFp+oIbs/gbh9KRReW0nb4TY+ffsG3//oEV99+FD6711h8CW+fHqULx4e5G0B+Oq5CbZtWk5IrDtRnQrCNycQvDURxWgC7iORf2wbyTN4+atf1V+7Vq8Om1293C+zYl30zfJ9i/9YfrKepJYA/EfDCBnw4bTk6l98eY9vPn3MDz56zJfv3ueT57f44PE13ntwmsdvneDNyyfobq9ieFkGA30hJJQ7kNETSsz6WEJHYr9Q/nfUl7/uVf1v1dGjaa+V9jr5DIwkbKgcivq5yxrFi9L10VwWo9WUG8Kx0R7eu3WCT5+9ycfP3uL9R9d55/5VHt+6wOPbFygsTaOmJYkqceC5PYovVvYktPb0xI4sGU6e/K9qr+pvqIaGYhZEN9nVZiz1eDe2w/5Pta32ZEabYKuvirejNcvaq3kmYD+/d4kndy5y//pRzFOdsGrywKchgPAq/wMvX+pV/S3X2FjZtOou38DUTqf9UU3Wvylutyc/0xhvG1UywlyY2NjIg0u7Gd/Rju0SN9yGAvEcDiZwKOxr+fFXsejvqXp7FVoZbY5tic12n6e2ObyobrDmyMZ01q5PJabHG7d+bzxWBOKxMhjFUNjtlz/2qv7eau3a1JnpLa6JWc1Ob/rUWfzBttESs3Y7dDscMF7qhv0yP8JWRKx5+e2v6u+1lFErr9XZenG720aPBsuf23c5od/rgp6M4F5F4stve1X/CFXd7q5WvdS7OqTJ7oF/t+eHlWLSXn7pVf0jlfLypfTqyX9n96pe1at6Va/qVb2qf8RSUfl/ALqbYxdN2ttfAAAAAElFTkSuQmCC - - - 烧录 - - - - 13 - 3 - T2 - Test - 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 - - - PCBA测试 - - - - 15 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 16 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A7B/BLV-A7B.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A7B/BLV-A7B.xml deleted file mode 100644 index 2ee34d3..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A7B/BLV-A7B.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 8 - 1 - BLV-A7B - P_BLV-A7B_20210925_175720.png - BLV-A7B主机.(A7B主板 + MD-W5500模块 + 12V/2A电源 + 12V/800mA电源) - 2022/8/30 10:29:22 - - 100 - - - 20 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 21 - 2 - T1 - Test - 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 - - - 烧录 - - - - 22 - 3 - T2 - Test - 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 - - - PCBA测试 - - - - 23 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 24 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A9-LD-CH8-CR/BLV-A9-LD-CH8-CR.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A9-LD-CH8-CR/BLV-A9-LD-CH8-CR.xml deleted file mode 100644 index 4827a02..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A9-LD-CH8-CR/BLV-A9-LD-CH8-CR.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 32 - 2 - BLV-A9-LD-CH8-CR - P_BLV-A9-LD-CH8-CR_20211014_174309.png - 设备名BLV-A9-LD-CH8,4路恒压版本 - 2022/4/14 13:58:19 - - 0 - - - 99 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 100 - 2 - T1 - Test - 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 - - - PCBA测试 - TP_32_100_REV_02_20211014145954.uts - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A9-LD-CH8/BLV-A9-LD-CH8.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A9-LD-CH8/BLV-A9-LD-CH8.xml deleted file mode 100644 index 8d0ddae..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-A9-LD-CH8/BLV-A9-LD-CH8.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 26 - 2 - BLV-A9-LD-CH8 - P_BLV-A9-LD-CH8_20211014_174339.png - 设备名BLV-A9-LD-CH8,8路恒压版本 - 2022/3/4 9:02:25 - - 2 - - - 82 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 83 - 2 - T1 - Test - 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 - - - PCBA测试 - TP_26_83_REV_07_20210907141700.uts - - - 84 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - 85 - 4 - T2 - Test - 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 - - - 成品测试 - - - - 86 - 5 - T3 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C12/BLV-C12.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C12/BLV-C12.xml deleted file mode 100644 index dc5b28d..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C12/BLV-C12.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - 33 - 1 - BLV-C12 - P_BLV-C12_20211105_172245.png - BLV-C12主机 - 5/5/2022 5:22:25 PM - - 0 - - - 102 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 103 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 104 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - 105 - 4 - T2 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C1F_Core/BLV-C1F_Core.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C1F_Core/BLV-C1F_Core.xml deleted file mode 100644 index 62d4802..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C1F_Core/BLV-C1F_Core.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 31 - 3 - BLV-C1F_Core - P_BLV-C1F_Core_20211012_155020.png - C1F核心主板 - 2022/4/12 15:50:15 - - 0 - - - 97 - 1 - Q1 - Test - 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 - - - 扫码录入 - - - - 98 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C5-PCBA/BLV-C5-PCBA.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C5-PCBA/BLV-C5-PCBA.xml deleted file mode 100644 index 8f6ed0a..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C5-PCBA/BLV-C5-PCBA.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 20 - 3 - BLV-C5-PCBA - P_BLV-C5-PCBA_20210925_180252.png - 宝来威C5主机,C1模块+PM-1202电源模块 - 2022/8/30 10:29:22 - - 1 - - - 60 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 61 - 2 - T1 - Test - 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 - - - PCBA测试 - TP_20_61_REV_11_20210831162838.uts - - - 62 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - 63 - 4 - T2 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAHJ9SURBVHherf1lmBxXuiyM+se995wB24JmZmZmZmZmRrFazMxs2bJkMVvMajWDutUkNaNaLOOMh/fe5+yOGytLJcue2efb97nnRzwrMyuLMlbEG29WVtVHDWd3/+fxLQumvtiwcOrLbaumPt++ZurM4d1TvW0Ppr571j/1/fOBqR9eDE79+Gpg6qe3w1N/+mZEwp/fjkz99e3Q1F/fjE799HJi6rvJiamJgf6p3ic9U497uqZ6ujvfoX2qr6dtavhJx9TY486pp73dUxO9fVOTA4MSng8NT70aHZt6MzYp4ZuJ5xK+e/aCz/tMwo8vn0/94dWLqT++fimNAn96+1rC3354S4jx9dRfv38l4S/fvpVu+/M3b6b+9v23U//48fupv//wnQSxLIe47cNtf/3uG95Xhj+9fSPhD998M/XDN2+nvufyN69eTn335jVHvkbi7ctnU29e8HUTYvnb1y9+Afl+8n3F/b959Zq3vZp68XScGJt6/fzpe7ycHJfw6tnEe4h9nk+MTr2cmOTy5NTzyWdTz57J8PTp06lJrj9//nLq+bPXxJt34+upF8/fSPhovPXaVOu1I7h9ej+unzqIgfYa/PCsHz+9Gpbwx5dD+NPrES4P4i9vR/DXb0bf4y/fDOPP347hD6/H8e2LMTwd6sVwXzcGH3e+x3BvJ0YHOnlbD572dWGyvxsvhgfwemwEr0aH8WZ8BN88Hcd3zybxw4vn+PHlC5BA/PH1K/AAvwcPOv763bf42/ffSfj7D99LIDHvQbIkkGDe5zVIMO/zDfcX9/tniP1+vS6eR+DP37yV8OPbtyC5ILEgMSBJxPP3IJHv8f3bV79Y/3A/EsxRbJM9zpsXz4jJX4Ak/xNIOEgyXj19xuVnePHsOZ4/l2FychLPuP7ixSuQTOLtu/ENXr54K+GjH0Y7p74b7cDboTZ8N96Dv74ZwR+fD+JPL4fxl9ej78e/vB6Wbvvb29H3ECQLgn96O4ZvXw6QuG4863uE0a5mjHW3vMfo4xZM9LVhvJfob8PkSBeej/X8Aq8m+iW8mRwiBvH66SC+eTZBcPI8H8f3PEDfv+IkeP0M3/FgfPfiKSfVBH7gwfvxzXP84S0nxpuX+OM3L/EjD67YR9znT9++wU/fvMYfefAFfr0ulsU2Cd+9wZ+/58Qg/vQd9yX+8O1r/PidDN/yed7yNQiyPoQgQhAkI/FnUuWQk/fqmdjvJfGc67JtHxIsh5xcKlgiWOD1JIl8SkIFnj2TCJaNL/7PBP/4YmhKqPSPLwYk0gSRf389hn+8GZdGgb+9IpG8/S8vB/HXV0My8D7/9moE/yD+/oZKf/4Eb4fb8eJxIya76iSMP3qAp931mCDGHzdgrLcRY/1NGB9owuRwK1VN4gebJTwdbJMwQUwOtfP2R3gx2okXYx0SnnP57bPHnATdeDv5BG+ednMSdHMUy714PfEEL8d4+zjHkUFiCG8nOPPpEsIt3oyPSvhwXT6K/SQ8pZtMDkv49tmIhLcvxvHmpQwvuf786RCe0XUEaJ0Sfr0uh5wcSYEk6xVdSqjw5aRQpoy8X99HQOwvh3zbSxIrV7AgVqhXruBnz17g2eQr0Jr/meC/vxmZ+geJFfgbyRX468sx/OUFlUtC//5GENovLf8a4rZ/vB2W8NOzJ/hmuBPPH5O4riYJo+11GO1sIOox0lWP0Sfc1tdM226ifTdIGOH6aH+LNI4NtErLYnw6TLKHOQHe4elIK56PP6L62/Fyogsvxvlcgvgx4Qa0/hFOhPFu3iYmQd9/iddPhVP04eW4bFK8GheTgg4iQTZBBF5PiNt73z+mcJkXY0+IPkwO9OFpfy+eDfbTmZ5ImBzo5/rALyC2fbj96VA/xkdkmBgdkDA+NvRPeDr6MyY4WQWejo5hcmz8PcaGhjgK8ieIpzw2JH3iJZ5OvMDk05cS4YLoXxAsV+dfXlCxz1l7nwti+0n6AP76ov+fICf4b68H8cfJxyS4Hc+fUI3dDRJGH9VgpP0+htvvYejRPZJcg+HHArUY7HqAwe5qDPVw/GB5qJv3eVKHsT6qvr9Bgnx5kkof72vE8+GHEp4NtRKcCJwUTzkpJgfFNjrAgEA7DypdgJNO4NVot4SXLA9i/fkQJ4dwnJFHeMkSJUOndLt8HwncLlzj5Vg3no8Qw8wSQ0/oKP2crF10ox4Z+kn0QK80yjHBiSDwlBNBAgmeGJZhpP+xhGHu92uM8HHkGB3skzDCiTI2NMjlgffjcL/YzkkyPILxoTGOExgbGcf46ISEp+OTMoL/7RvaMJUrV+afn49IBAtb/vOLPqIXf33+S/yF2/7EUeBHHoDvx3hwqMLJnnqMdTzAcNs9DLTcxvDDW8QNDLXdYIAjHt3EsED7TQxxfbSD+3BZjGJ9rPMOFX+btn4P4133uf0ut93DU5I/0f0Azx7XcxI1SJAtsyTQCSa5PN5Zw/vUEjWYIMT4jPtN9tTxtTXheW8DXvU3c2yUrXP5xUCLNL4cbOUyXaJPhleD7RJeDj3EK7rJC5aOl5wULwe7OHF6WG466EiP3o/jDJdjvV1c7pRGsT7e+4RK75PG98skUGCSZI/29mD4CR+LBA6J5T4STgz9C8jJ/+W2PkIQP8zJIjBCwgclwuWK/y8IJrm/IvhvJPJvrLN/f/6Yoww/PX0sKfcPrIUipImDPt4pyL1LcklmK4l9eBXDrVc5XsEglwfauN52TYK4baT9urQ8+kisX5HWR9qv8nFucdsNLt/AeMcdWj5JJp711LAM1EoQyy+o9pG229znHib43JPdtYQYq7l/tbQsbhPrE533eb8aaduzJ7wviZ4g+U8f10kTQqwLB5LwjuhnwjEGW6SJMNkn8JBu0Y6Rxw8x3NP6wSi2tXO5TRpHn5D4xyT9yWOOJJHjSI9Yp9p7H0sQyyOEULkYR7lNYIREDj7pZvdBBb/D8AAJJYb6e95DqFooWEbwECcKlTw4jIkhEjzMbDBKgv+NPS0hWa2wY0HoX57/FyDRf3nxhOR340/POvGTUC4t7lvO8Nc8AEJRgmChOKFKQejQw8sYbL2E/uaL75cHWy9zAshGsU22/WuOl0joFWkcfcSJ8IiEd3ASkGih8DESPfboDgm7S3IZ4Kjwp913SM5NaUKMPeI+j+5yX7oGJ8YInWKMbiBG+bYPMdp+W4J4TPFYL0j2M4bDZwyFIiwKd3j6pB6TVP5T4Ri9zAM9jSSQGYIlaKibeYLkDnU/JATBHVx/xJLTJo0ysjtIbBeGujolguUY7OyQILbLyRcTQY7h7q73y+K2IT6GIH2A6O/rwQDtfZCuIFNxH7cLRQvChX2zlgvbJj76929HWYOHIUgWtVQi+Vnve/yS3MdENydBB225FT+MtuJNPw8G1TBBS31KRY11VEu2KidYRqgMAy1fo6/pgkTiQIsgXGy7KJH74bqcaEGybKR1k7wR2rxQuCBTYLKHZFL5T7tly0LpguCRDrpAx7V/idFOOgYfV4xjHbKJMdElJs9NTPB1TzAriMeQXIBqH+dEEgRPUt1PSewYw+JwbzMGehqIJlrsQwx0t75HX2cz+rtauL0dgz1UN5UsLFkoVJA0TFXLlSqWxTb5bWIU28T4IeT3+zXBcnLlGOrrI+kyCFX/E8GyxMx26EPVvif4Z3L/9LwNP4w34duhBs70+9LBGeaBF/VzhIFqmKqQam4rbflfEDzczuXW85wAF34e/wXBY4KINqr44TWMtd/iKEi5LpE63nlDIlaME13vSOIkGG3naxCq/y8w2snyQGcQo3gscX8xChd43kMrl8pAtTRZxrs4aUTtp4WP0fpHO+uYE0QgJLkkerCbBL9T8EDnQ0mtQslCwTI1t8nWOx+h/xHtm6oUihXjh6qVq1Wsi2UxyiG2S/f5FwQL1cqUKye5nxDhS2bbEyOj+IjkShYtt2kB1mWpJv/tJdOzqL3PejiSYI5/nuzGH8c78M0AgwnDzVMGqjEGKhnuY5ypeVxYpaitJGqo9cIvMNB87hf4+TZaNDFIgsX9RknwOMkd5cQYo4VPsC6PcHmCyhO3ifFpF8nl+GuMss6PtXMSPOI+nUKZJJHrHy5L4wcECzyj3T9neXneWY1XtOlXJPIllfuit56TqRZDdKehjhr0sv3rbW/Ek7ZG9D1qIQEyaxb40KrFdkHuQIeMZGHVH5InI/tfgYr9gGjJxntkE0Aof4D7iDrd/7hLIlwELjEOs3Ub6vslyf+SYNEyCZL/8XoIf6dl/4N1V07wn5524cfRdrztb2LNqqelVX9A8D2MPqRttrH2/V8meITqH2sj0YJAcRvtViwLlcshJ3icNVdgjHV2grX3KeuwWBejWJdvl1u0qOMCz+hGE51Ubftd6b29oA1LwYsYZ30eY/0d6KwlqQ3ofdQkU24X6y+JlEIVMfIOQtGCLIlgYlCaBDIFC/x3CJZD1OqRLtl9B3n70Ds19/VwnelbUjXJltXkAa73SjYt6vEvCP6ZaFlfLAj+By1bECzIFSQLgn8YYahiXRLkCsVKpEp4RzTtVE7wYAstmJCT2d90VloW28T6zyOt+QOCxSiIFSQLSCSTbKFasZ8gWa5kObnvyWb9Fy4yIWyWo8xRaOMijZPA9+M7CEt+/vgByaxljrjPes72ioHxGR1KtFBPe5tplc0kleR21ksE93c0v7dmGcGd71slAaFkQZa47ZeQESzHP5P7cxiT27eAIFiycdbk0T62SyRWTq7ol4WKR0QaJ6mCZDH+PxL8b2+G8e+sy//+ijX4HcF/GGNqFm1DT61E5kjrHQw2MVARguxfEzzS9jV6G05LxAoyxXJf45n3RMvHvkZBOgPXBwTL1SsglkfFSFJHqGQ5wQJCzZPdVOw7gkfZez/tEK+FBFONAiI8TdJ6n3UxffM2McraKRlE2yVaqcnHJLu3TlLui172ymyVJpieR9g6DZLkJ49Ye7sYsjppzf8XCBYKF+2UGOV4TypJ/jXBUgijTQsFC4Jl/TDbKtFH06IFucKmhT3LLPqbARIsC1miH5ZAYj/E318N4m8v+qnex7TnTtbfh3guzi+3MzFTtcMtDFmtVBD731GGLKn9YP0TYWmYAaqv8RSJPE0iBbGnORlOYqj5FO93WholNJ2jDTOANZ8nmSRZGnl/tlcSuR+QLeqxHIJcOd6Tzhoss2n20g+pZJIrhyBXTrSsZ5bhGS1YkCrSssCzviYZ3iu4lcS2orejRQpRUu0liRKRov6STHlvKyCI+jWZgmA56bLWqYNO0CpNDvljSXi3vyBUDolQYoBWLJ0MIaHiDJeMVDEOSO2RgFzF4mTH/08E/3G8m/bcwfrbKvWLcoLFQRx5eIPrtEKqRtQ4oaThh8Jmac8keFAiliRzeajxJIabTmGk+bQ0ynAGoy0kufksxpisxfjfIfi9LRMfki0LVOx/mQeEJf//Q/DErwlm+yPaoaHHTMmEaImGWA/HhE0KyxREdFGNJPOXoIJF3eQ4LGomx/5OhjJBHpd/hmx/YcdCsQKCWIF+3l9+1kuod3RQhKp/Jrj/8RNIbdK/Ivjf33L5A4JFLf4rW6WfJnrw/fAjvBFndBg2RGoWEAQPtbDtaGOda+UBZf87RhWOtZ7jOutrHRVbfwrjtGiBMZI8QTWPk3CxLEaBpy1npe3SbSRYBCsBQa68FgsIYidFa/Mrgn+GSNskmfValqZF+ZDZtCBWDjmxz0W9FeOTn4kVtVdgUiKZKiPBou0Z6CZoy3LI07O8fv4SMnv9GTL1fojhblFnf42f7/O+Fgsr/hVkBMtaJEGqsGRBsGiP5Ovva7AgVeA/3o0fQiL4ZS9+muzC96OP8KqvgSphwGqrkVQs6u5Q8w3WYyqm5TpJofJouaOstZIaqc5x1tnRehJKjFLBk23n8ZTqFvuMsv6O1J3FJBU82nASE02cCI0XeR8mZ2KcjzdBTIpWhz3wBMdJtjkT7LWFW4y2CRJly6L2iz5Z9LWiPxYnSQQmSa5ofwRekNwX3TVSSn75mLX23fiSdVacrRJ4f6qS5E48acXAI3HWiolYnNBg2yMRJNmzOGv17oyVaI8+IFa2j2idZC3TL21YEEwb7u7GOBU6yvuNc3mM1j38mPtTqULZcgUPibpODD4RSmbNHyTBQ7TuAdZfEa76hzE5Mi7Zsvw8tFC1dKry378dxX98Q5DM//Urct8TTIv+Ay3626F2HogmWiBnP21a9MFyixYqFrVYEDzCGjpM1Q43n8Rgw1GMNh0niUcxVHMEA3WHMNos2zbKejxKixaKHW85iZHGoxw5ERi+ZNuoamKy7SIJpfrbOAk4MZ4+eqfoD2svIRQszoCNcbuAWJbWSb68VZrsukP13pWClTiXLR9fcOKKc8/S+We2gQLjJH68h7bcITsdOdhDq6atytQrCBbKlp+LlhMsw1C3qNO/xLAAW6thcTqzq106ASKvufKJIa6EGRBXw4i0/ERAnKUSipV92CB96CDOT4/Qnof7MToyJKn1qfgk6d0pSjmkM1n/8d0Y/te3hCCZlvyvCP7H8378NNqFb8Ts7qiVIMgV9UwiVTrbJKt5g40XJIJHmJgHGr5izT2Cp20nSdgxEnwIfXWfoa/+c9bT45wAJL7lhFSPR1qOkcBjVKiow8KiWaeJ0VaqnhhsPM77cZJIwewM73vu/ckOQa5I0tLYI3rbm1LIE6NYFx9IiJTc3yRqNJN+hzjNeR+vxMUHJFh2Dr1aOms12lUjfbwpxlGGyeHOBongJ21N0mnIISqst6MJj9vr0N/diG6WqUFOApGwx/o7pTrdy/DU1VqDxurruHP1LNoa7nE8hxNfHuDkaEdLTTUunjyOLevW4eCePbh7/Tp2bdmCnZs348b1q/jq8BEsW7oM69duxNEjJ7Bw3mLMm70Qx46cQmX5HBTml6KlhZNucBgjJFeodYz2LBK0IPb9p0n/XYL//WU3/jjSjO/66vGq6x5e9QjlitOHN6RTfMOtlzHYfFkie5TLogYLBY+2nEFfzVfoe/AV2i/vRfeNg+i+/Rm6iN7qw+i9/xX6HxxD+63DaL99EI9rDqP7/hF03j2KY5tn49aRdXhwahs+W1mI07ur0FN9HDXnd+Pmsc2oOccDc3o/Pls3H4e3LEHjlaPYuqgYq2dn4dqxndi/bh5O7FmNivQw5EQHIS3UBzHezsiKDEBJchSKU6ORHOaNqpIsCWUZ8VhaUYDVc8uxdn4FFpXkYte6Rdi3aTnmlxTAydIE29Yvx+5Nq7Bu6Vwc3LWeJH2Gwwc2YN2yOTj55W6cPrwPe7esxeF9O3Hq0CF8sWsXdm3YgDOHD+PIwc+xY+dOODu7oax8Nnbt/gxVVYtRtbAKmzZuxNw5czGrchY2b9uBVes2Iq+wDHMXLMPGLXtQkDcLeTnlWL1yC/JzK1BRthCVFfPxpGcAw+JTpOEhjA8NSUTLyRUXAnz0v74fn/rfP0zgP78nvhvHf5JoYddycoU1/2nyCSpTA7A2zQ4nyh1wvMwZS0K08XmBPY7mmSDNUwvhHtaov3QYebEBWJKbhE2zsrF5fjbmZyXwoOdic1U2VpXlYePcIny2bDa2V/HF5yZi09JS7FlTju3LSnBg/VJsX12CLcvyEWBngsXFidi8OBtblmSTtHQsK0vCmf0rsGleFpYUx+D4rsX4fFMVti0tw6aqAtw6vQdLyxIk8r7cMp/PlYcIZycsqyzAlWNbsGv1HOTE+mHj4iJ0153HnlVzUZIYSaVfxekDy3mbL1runqMt12HjklIsrkiXTsvev3gYW9YsgqWZHprqbqPh3gWUZkTgwaVD6Ki9hD2blqI4N05S89XzR1FekIYzX+3HrYtfYcuG1UhKjEVDzTWcOrIPa5avhZGRFSrnzMeZc6eQk5OFrLQU1N66gfPHTiItKQObN6ykgo/i9MkryC8ox6nzJ/GgugHxcSk4+NlhLFm8ElmZ+fjqyGn09w1Qxex7B0cxNiCz5cnRp5gYZj0emfwlwVMCJFlOsEjQcoLzI3mg4gywP1UT16u8sMBvJhaFaOBksTmi7afB0dYE/i5W2Ll6NhbkhKHx0n7cOb0N5WkhuHFqA5pu7kdykBMyI1152wG03zuFtCgXXDyyHnfObEJlbhiyozxwdPccfLlzDiy1pmPXkgJcO7wGt4+vR4ybPs7uXoSaMxvxrP0clhcG4uaRFfh8bTlfmwvO7lmKW0c34fN1JSQ/GlcOL8XXB1fBzcQAMQHuOLFzES4cWIu0QAd8sX4uDm2ag6M71iAj1B/nv1iPLzghcqL9sX/9Iny1cw2O7V6HnBiur5mP7cvnYjkVrammiD07N+LQ9g0ojA/G6spsHNu1DkNtDUiOCsb2dcuxc8MaZCfGIy0mCtvXrETt3XuIDI/Erq0bsXfnVixfvQZ6Rma4fPkGDuzeg/179yEhLk6y5yvnv0agfxhyszKwcf0mrF61GbEkddW6Dfj8i6/g7ROIpGTetmk78vJLcOgLlrjhYYlgKWQJYpmgBdmTo5N4+fTVPxP8n9/+TLD4sEF8ZPhHtkftV3ZhTbIxtqdqYU+eFQp8lHB3WwyOpP0WG/MtYWGuChNDNSwqz8DJvUuxc3ku9qytQGqoCw7tqCDKkRbminsX9mMLVRnmaYgAFz1cJSlb5ychigf+2tFd+GprKfZvLoeR2kysm5WBncsKsLQoBmGOuji4dhZRhHmZvihNcMbRrbO4TwpSAmxxhASd4fMm+pkiO9QBRzYWYvuiHLhQdaF+jlg/L4evaRZSA90xNzsGW5cUITPcF2nBflg/Pxdr5mQh2tMBWRF+mJ+bjNzoQGk5J9wbZWlxJG817K0tsGbFYmxYUIb8CC+sK03FqpJUbJhXjLhATySG+GBxeSEivT2QFhGO+OBg5GelIzoqHOlJ8SjIyURFRRmCQqOQkJiGORVzkJKSgfz8Qswur8DihUtQXDIPS6toy+u30LKrMHfuEqxYvQnLVq6j6hdizvzFXN+Assp5WLliA3bs2IGR4UGqdUJSrVDwKJUsCH4+/uKXBOOHp/jf7050iLr7lxd90hUb4nKc8yRoU7YN9hc5osBbBcme+ij1VMTBOAXMj7WFjqYGDLV0sKgiF5VZYVg7Lw158d5IDHTC2gWpEuIC7ZEe7YGSjCAeDGf4OxliUVEcAqxVeTA8kRrkjFmpHtiytBB2Rga06DRUZkSiICEAWVHe0vKc7AgsLIil2t2wvDwJc3JiJCwuScHK2RmYm8f9o/yxtjIJ6+dkI9DJEhF0jvWszcsr85BJ4hKC3DGHlupnbYJAeytkkKyMcHfE+7oiysMeRfERyIkKQISbrURySXoc5hTlwcrUEKsWL8DsrAiWnlCsn5WEbVU5mJ0ZiqyEICo3FHML+RqKspCTEIlSKrFqbhkyU2Mxt6KEy5WcICvg4xsIL59grFm3hfV1JzZs3IJDn39Jyz2Bvfu+pEt8hu3b9mDNWk7+bfuwfechrN68E2vXb8fSVRuxbPVGLFi4AiuWrsGyxUswyD5YhKvRAdlHhIJscRHeO4seI8GsvQRI9P+mekVfLD4X/ullH16PiMtP6pHtrYE1SZZYF22IjYk2yLRXQr6rEnYkGcPLVBkGuhqw1lNGFO0wOdIXW1ZUIjPWCyFupkiN8MDSWVmIDLBDdIgTFpZmMNz4INTTFqmRPrRnKtjLjSS7YDFr7eyiNFjoaeD8Vwewfskc3rcQK+eV4sDW1Vg5vwRrF5Vh7+bFWDY3FwvLxAHlBOK28px4rFpQgp3rqlDFibZ8fimcrAxhY6KHxEhvRAe5IcjTHsGejghwd4CrtRk87CzhZGEMe1MD2Jro8nnVYK5LN9JWlmCopQYTPS3oaSgTqrAmyRYGyrA304C5ngJMdGZwvxkw0FPlJFeCrqYKtDW5rKEGDWUVaKmrQk1VGWpqqlBWUSHUMFNBBYpK6lBS0sIMRTUoKKtDUVUTCioa0qimaQAlVT0oq+lBVcOA64ZQ0DaGvo45DEysoWVoBndHTzzuZFsl0vO7FD0xIs4/i6swRxm4WI+HxvDR1B+eThGY+lEoWBAs++BfXLrz47PH+Ga8Ey9G2lCY6AVvayX42CjD3UQRAVa68DBUhrfhTJiKN2eoCz19LWjyzZnxYDnYmsHGggeNFmmmrwFjHR40XXUY8CCYamvAREsDBmoq0Oeb11VWhKaKwAyoq3wKJcVPoKw8AzNnfAIFhWlQ4rKy0gwoKUyH8kwBbpv5eyjO+C3xOygrfML7TcfMab/j9o+hqsh9Z3wKhZmfQkVVATMUPoW6pjK0ddWgpq4EJT6XhoY6NNU1JOhoab+HrrYO9HT0YWxoBDMTM+jo6EBDiwdfSVGCnoE+dPR0oUKyDI2MYG5hDkNDQxibmsDYxBRGxubvYCGFKVNzG9g6ukHTwAxK6toSwXr6xoQJtEmaqoY+TC3sYWXrAgdnLzi5+hABcHUPhodXGJUeATePEHgHhMDd2w8OoQFYtn0j2pta0M0eul+c5ZLOZMlOWYqrLaUUPTouWfYvCJ76nvVXBKuX7HmfPcH34mK6MXE5KZv4sYdIpZ3qOhjA3MEMtjZ8A1bG0DA2gqmlESytTKCswwNowANnoAE1EqpvpCttV1ObAX19dbg5WsPdwQrONmZwsjYl+QawMdWHNRVmZaxLdejDyswIqsrToKpKIkm4lrYqtPm4Ajpa6jDiATfgBDHS1YSuhhKX1aGnydvUVbjO5+Q+hiTJQFtbmmgGfC16+mp8LZowNNEmEQYwszCBmbkpVBQUqTiqk8TKoMP76/G++nx8Q5gZmsLKygL6hjowNNaTRl1OYj0DXS7rw8BIH1o6mrC0toQxS4qBgQGMDIxhaECiCVMjS74Ga1ha2nE/Q2jpGkBVTYMTVh0amlSosjZmKmlDRd0Arh6BsLRxhb2TNx/PA7b2Pu/h5BIIZw8/mHp4wCw+HPlrl6O75zEVLAjukk5Ximunx4Zkl9ZKffDI2M8E/yfJpVXj378V1twv1V1xKew3JFdO8Iu+RiQtTMKSk6swa3Uh0vPCERjnA/cQF5iScNdAD9j5O0PVVgMarnrQcTOCjo0RtAl9O85Y2p+VOd8I657oJ61Jvr2ZoTQKWOnzQBnpwIa3qTCtKjJkzVD6FIpUt7KyEjSoPDV1qlqRqpwxgwRoQVdLEYZ6JFRPE0Y88Po6JFtbjcua0Oc2NXVF7k81876KmtN4oMw5cT6m9c2AJm135vQZtFNtaKhpQktDFzpqdCFVksjRQNsQ+rpGMDIzh7ImLVRFmS5AJzKm6lRVJQUrKSlBS0sL5ubmJNicz2kMI9qnHu9nQIUac1lst7K2hybJNbO0ltxAje6hyPckMF1BFZo6xpKC7Rw9JBU7uwZRtaESsa7uVK5nGFy9QrHj6Gms+Owg9hw9geaHHXjU3Ix+8UlUfxcmxYcMfbJrqGUkyz50+AXB4kOHv7Duygn+lvYsCBYXmA8MNyJucSJcC33hm+eHgIIAOMTbwzXeER7RLjC204VzqB3c0hwRNycU7gk28IywhUeAAxJTwpkaw2BnbQhntlOuduZwoOoFHKlwoWIbY5IrRhKsSltVUJrO2jSNB2E6VaQPfz8rRMW6Q0dfplKhYgNarq6WMmsf6x5rpBaJFCSbGmnzAGtR9epQpbJVWUft3cyRkh6GGPa6mroK0DLQlOxZmwpWV9WQEayuJ5Grq8FRi1ZMaJnQpUwM4ervAytHe5hYW/FxdaV6qkAHMCLhBgaG0NPjZKbyBTTEY1GxOtpUNV1AW98I7j7+UNPSpXPYUM2ssay3MxVVqWDav7IOazEnHNUsX56hKLbL1K2spg9Dczd8dvIS1u7/EofPXUFNwyN0PHqC7s4O9HU/wiCtekQKW4/fkfvukp2pP05KBMvVK66B/sPTHgmCYHkNftbfiOt3j6Ou5RK2HliO4OJAOBW7wSHDEYVr8jBrfTkSy2LgEG2G5FlB8I4zQxDJdgkygz1bIgdXI1hYaMPUmDVPk7WMAUaTKtXTVmEgUSQ5ov5OhxrrrQprrRLrppLyp6zpCqyL05GfGwo7ezU4u5tBjSpWU5wOFdZqUXdnfPpbTP/kN/j09/8D0z7+n1J9ns7tqmoKEsHOHi7Q0FdCUIgrrG3YNkX4Q5eWqzhTgaBDKDL0zFSBGg+2miLtU00bn34yk+VBH7rmFrDz9ISbPye0mwesHJxopfa0fFP2s6bSaGJuJY26BiYwMKZqzSyhz1FDm/nDyhYWtg6wcnKBgTnt2s4N9s4+cPEIgK2TFxycaL3mLpJKhTXr6FlTuQHSuqd3GHODpaRor4BkuPvFc6JSzb5R8AtJQXBUNlurFRjsFJ8VM3ANys5Vy+rwiIxgkiulaLl6f2Kw+pDgbye68GrskfQFsU3sNS+e30+L2ICAeeHwqPRHwtoMBJSHIXpuIuLKE2HlaYrkwlAkl4VSyVEILvKFX4Yb7HyNGTaM4ORgAkcq2NWJb5YBzJq2bS/qsS1tissGOhowNdCBrZUpw4uqZMFmrH1WxppSr21oqgQzI3VYGLNemxtJMOHtQrkCxgbaVDNDFNWswWAl6qSTmxNtVlWq58K6falGYZmyQKUHE5IjqZUKFrZsQZWpqjEwirBlYQNzGwcGIVsGKpJlYUfCHKXtxlw3tbKDvgnzCElWI6EmljZcN+d2W0znxLFzcYeprT3s3D2hJwKXsz8nO+utvTdVHQFrW5kl6xnYSqOqugn8/JOYXfzYTiXwPdjCxTUSLl6JDFmEZxztOhZegclwDchAXs4sDD7qRn9PBwZo1cKiReAaH3532ez/okX/BxX8dyr4z68H8IfnT/DDZI8UsEQNfsM26e2o7Ds+9Z33UF97FSm5wfCbFwS/ucHwLOULKQpAYFEwfPL9aN/eMPLUhGuMLewT7WCbyhmZaA3fKAc4OurDxd4IzhY6iGa9drLUZ2uiDTtzfdjb6zF4GcKQydrRxhRmZnwMJ9qj8sdsYYxhbaAFD3umUyZxE9ZYM0NtOHBiiN7U0oRpncHJxtxYWjbj7fZWZrAQy7yvrY0VLVsXRky/JkzBVjbmtGi6iak5TJiUJYKZcK1NrfjYprAws2aSp63bOZNUEkyICSFINLa2ZS11gYWVG5VqJ9VNExJnSaLFpHCiKgXs7Dwky7Wx94Czmz/v48RJ4kRCPSXVOpJob99ImFvxOIha6xYBOwd/5g9DuHlGwt0rmmk6hC5hR9cKgrsHSfWJgRsnhZ1LCFy8SbRPPGIT89He1o2+Liq4TyRq2cXw7wn+N/bBJBl/eTP4Lwl+Pdwmkdwz8ABpS9Mwd2k2ZuWH4Pi59QhJcIedlxHsPag+1mALGyrNlgfeVg+e7H+t7XXg6W6MDcsLUJjkjQR/WziaqCLIzQoBhJMFCbcWddgIrvYGcLM3hTEDjUjYHo5mcLFjDzjzt3AwJ3ms0XYWVJg22yxDDZKnLUGQKhQvRjtLTgy2a5pK02DNNG5nacbQw0RM6OnpwFhfjzCAhSXVxjSur8/2huSa0k612H/akFhjPVk4EgTb2TqxFeJEsbSFBtWsY2gCfXNLksLtJiRdh2q3dqCrWEj7qPAxbG1dmZodGbwcpfpq7+T5rvXxke5nZuEiWbCAvaMv9AytpEDl6BTCSeMpEezhHfOeYCMzJzpQoESwi3s43DkprJ247pcIT9q2T2Acujp78aSjQ7JpcW2W/ItqEsFU7tQ/vhuFwB9ZfwW5coKFRQuCXw09REfHLYRXJSJ9UQrqHxzDgjmxVI8aQgNd4OJAQlzY/jAhuzA0OTMoubIVsjPRh5udBbfr4Mudi+FmoYZANxsEu9tIJzmEgp0sBbHm8HMyhbOVIdRYf8WJBy+GMU97Y2gqfAxrYwNauR4sTWmptF0BS7ZWNuaGkoIFwYJQsSzaJ3X2xeZGepKN65NYXR0t2rOajGAmXdGDaugy8RqxZjIAidZGaboizNjaWBiz5SHBM6dzIpmwzWHdFEFJBCRNPU4IKtjI1AbqtHRVTR2Yc93U0hK6DFnKDE5mVLUViTQxscOnM1g2jKyZjH2odC+YWzqzTXOU1GtLizY0tpcClLBpJ+dQku/O8MVj4hrKtimS9wviY7tKCpZsmvXXnvZuZOEBN9q3gKdvNB6196C7rQ3iM2RxlaWowSJkiUtnP/rT64Gpv7L+/lkomPiRChbECoK/Y/0V9iy+eVffcg3hSxMRMD8UiRWBWLQuG0XFibCzokqdzalCAzjZMi2yZXJhPfVytmRaJtGODvBwd4GJmQ4iQz0R5GGDACdzxPg5k1QzuPH+3vaGiPakjbvaYuanv4e7jTFCXUwQGWhDwj9mf6pJ8vRhoqsMU1q0HlO2DSePULqLvVAde15DTgCmXUP2paokWBAtlvV5Xy0mXh1trlOxJmxbDEigspqOdDJC6llJ9rTfTIexLgnXo12zDiupasHA1JKBypHhiQSzbzXg/sa0YxNzO24zZ8JlP8zHM2Ofq0cXUGAaN2LAMuak0OFzqGiY0NVcGKxcOBHcYEl7linSH45uPlItV1GnMzl60p59JfLFmS0nj3AGujBYO7JWO/ixbsss3N0nCi6+DF6mtG1fZiD/RASGJOFR2xM87uihirukCwSGe/uliwT6ux9Twd+NThH4B9skQfRPTNJyFQuihT2Lb9ZVMz1HrUxC6NJIJM8NRVCiDRJiXZGb7It5eVFYUp6EZbOzMacwHZU5yZhXnIny7ESU5yagJC8OpQVxyGebEuZpiUCGrRgfW2kMYp0VCKRF+7tY05J/D287I4Q6GXECGENbdQas2KpYCUUa8AAyKEk11oIWTAU72FhQ3SYwp8oFTEm0ClO2CFuifVJnr6nDvlNPW5sBihZPksWZJh2qVvSsUitDVc/4eCbbK3OGGl1oUamCLKFWAwYmsa9odXSFRZNIoV5BtuhhjWnrWpwQ2gxr6hrsxQ24n54BJ4kh2z0DmLCuixpubS3qtgu0hUvQ+mXhzBxKagyRnCAWvN2M1q4tJqGlPeu1sH5bPp8VJ4UtHcGRmYGg9evqm8HVMwBRiZnIKShDK3vizkdd6H70CJ1tLKcdnejt7pEuvPvob7RoQiJXrmJ5HZZOdIiARYLvNp9FxPI4BC8OR/ysEEQyGVfNScKNo2tw9/BK3Dq8CteOrMLXh5bg4heLcenQUpzZNw8XDi3H+c+ruK0Klw6vRmKAHcL9rBEVYA8PO334uVgSVnAXqneyoL3+npasSZvXg62RJjRUZtAqWUPZTumx/qqpTmNqFv3rTCZfRZibiX5THdrsdQ30Rf/LXpKTRF1NEaoqCtAU54TVxXliNcmuNTQ0pNOFCspsi9Q0oKurj5lslWYqKEGZt+myr53J26YrKkkHX8/IGAoqqpihpExLpqpNTDFNge0Xl6crKpIAYypVdipTRY2Tz4IBTkebVqvMNk+NtmzCXn4mSdGDMvtuPRMjzFRlz25gAFVOOukUr5ER1JnAxfMZMywastxosNdX0VDh47MH5sRV12ZvzcmozwmiZ2GF9PIyNLTQWZua0NzagkeC3I5HaG3mMknufCRI72DI+mF8ipAU/Je34hd1fg5agmBRfwXBl+59gYgVMfBlcs5bloqoLF8sW5qPh9f3o/HYSjSc2Yz7Jzej4ew2VB/fgLtfrcW9o+uIzbj5xTLc+XIBrn6+AMd3L2T9YXtkq8+ZbQBtWqeOlg7tkC+eb1aX6lRhi2Nmwb6SNqtjpAUlHUUYsl7rcdmMwUxJ5VPuR8IMad3WtFuVmUyw7KVZZ/VFm6SjCk0tFQnGxobSc4hWypC1WqybmJkwIGlL55vtHYRSTKDD7YbWFrB1c4ahuSnTrx0ceJuntxfbOwf4BwfBJ8AfkbExsHexg5u3Kzx83RGTyDDk7siWxROugV4IiYuAvZcLguPC4RXig4jUCNh4WCE2PQ5+7L8jE2m1fu7wZKvm5uOFhNR4+AX7sTd2YvvkiPCYUN7PH+YONjBi2nfydod7oA9JZdawt4RvYizCF5SzVJbizt1q3L5TjeoHDbhf24DG5jY0kfDW1la0tLRI40f/wTbpQ4L/yF74u+eP8d27kPVm8CFe9bfg1N2D8F/Gvpb2HL8uFekZfti6sRwd94+g996XaLy0FzXndqH5wh7Und6OulPbUX1sMx6c2oy7x9aj9uRG3PpqJa4cXYbMihCsWJGPyjlZPDCuCAxkr8yDk5SWgtDIaPgG+SM4LAB5uekIiw5CUEwgnH2cEJEcgcBo1qMQLxh60+KjQxAcGQxdS0Oom+nC1d8DHp6usGaLpGzLFomBLjQiABahLlA11Yaqow4CkwOgqKUABSNtqBhqISwlDspcVuTyDDqHZ2IIFMw4qUy1MI013zHcGzNNqVATTjw+hoWnPdRsDKDEVk/FghOSaX+moTqUzKlaM21osryoWeljmr4y1EzoLLa0arqRqg3rOkdF7jfdWJ2PRyfh/sp8TnVzXWiLgMngqM6soSEmvhUDJoOmCnOMAVtK42hf6GeHwTg3EpbF8XCvysXlmzdx58491D6oQ11dA8ltRQ3JFqiva5bw0b//ODElyBV1WNizUPD3L57ge3kNfkfwocvbELwqBqELQhG9Oh5ZOf7YuLYYrbcOouvmZ2i78TnqLu9D47UDqL1Eki/vlcaa8ztRf2EX6s9sw82jq3H1xCos25iBBXNjEJ/mAe8UdyjbqcLG2wQB4e7IyIhBUkIAPP3Moe2pjrjcAGQXhqGolD2gly6KCoOQnsN0GWIBJS9DWAfZw5q2b80WzI627xTMGhVhB6U4W7jGezCxWyIyiunU1xwzfMzhEh8I/6RozGRLpurOA+hhgmmu+vjEWRefuLL2eplDgS3e/2Q797GpBn5voYnfsFtQYej7nZEK/oeeAn5nqIzfGSjjE2M1TDPXxDQLTgZiuiUnio0+FOlOimzxlDxMoeRCiyfpCmwHVRkelRlEFdkdqHhYQjPICRohjtAMc4RWuBO0Iugm8e7QTySZKQEwTA2EWVoI4lZUIGxBBdzmFiB4Tgn8stKx/vhhXL97F7du3cWD+zWorq7Bvepa1NY0ShDk1tU2yQgWCpbXYDnBQsEiRYvf0BK/vbGBtTXzQAkCZwcjbEk0snmQd2yZhbY7X6Dv/mH03D+K+iv70XLzcwlN1z+TSG6+8QXVvR/153ai9uIO3D6/GZ8dqUJlcTBWbiqCebIVNFMskTo/EVZuegwPxrBwUkLG/HAYRhggKtkFge768HXXQ0qqBxKjHRDpy4QebgvtICZeN0O4hLkgIMEPzuEu8Ej2g3mBL1RzXOCe6wdHWy3klcZCP8YZ3sUpWLByNeITM5C+cB5mxjpLmJ7ggk/jnfFJnBOmx1PtPMifckIoeFtwUlhA0d8aH5P8mZ7sj30soRriAI1oV6hGc98EDygncJLGu0GFo2aKz3uoxbphegA7AwZKFR8mZj8i0AmKwU7QSw6ERpw37CszoZUWBo0Uf+hkBkA3yw86WcFQz+YknpsEh/kZKDm8GbN3boJpeiR8KvMQv3wuSvZtxu0HD3D79l1U33sgEXzn/gM8qK6XiH1PMEmV2iSh4Pc1+HW/dIpS1GE5wcv3zkPslkz4VwYiZHEUcvJC8NmeBST4EB6T4I47xL2j6Lj9JbruHsEjji1XD6Dh6mdouPwZWq4cxP3zO3DzwlaUL4jBl8fXoGR1BkzzHaFR4ACvbB/EV8Rg+b4qOKTawDTLCmok3ijEGGnlsYgujYBpFHtSb1MEJ/kibWkuFAOoiEBz6EU7wnt2Asyodu1Ud0xLpoJLWbdIdMaWSlgUBEAvywcuJenYeeo8ypauRcLiKkxL88Wn6T6YluGDT9J9CS9MS3XDpyT8d6E2+DTACjOCbKAY5oDfe7PtCXWCerAD1OkYeuGuktK0SKRuijfUkzyhkewFFU4OVRItJsnMKBf8PtwBH0dw8oQ44+MgB2iyRMRuWoiV149j+dVj2Hz1ayw7/hVWnziCJft3YO7eDZh3bA/8lhfBcW4qDMtioMj7m89LgQHf47zLB+FemIgN5w/jwt1buHnjFuoe1OI+yb17975EcPX9OknFEsHyFC0R+6JX1ia97JUsWvo8eKhNInjO1lKEb0iD3+wQRK1IQkFRBL46UIVWEtxbc0IiuLP6GNrvfkXSj0h4RMLrrhxAC1X88MYhPLi4BzfObUfGilg4lLpAv5AHqsgB+nn20I23hE6sOYyyaFf5TlArdIZugQuUYoyhGmUC9ThLKIUwYUaS/Ai2DiFWCChLhKYPe9QQc2imu/Gx/KGV5Q6NXDcqwAM6eX5QS/OGRirHaHcELSyDRVIcrDLioRDiium0xBlRTlCIdoYCFa5GUrRieX86gX6IO+zDA+CcEAW3zASoeTnCNy8dXinxsI71h01CKB83CNPyAqCS6wtljqoFQVDO9Yd6EW8rDoNKUTBUuE2JgVQn3R9KwXb4vYMeQkoykb96GRYc2IOUJVWIW74QAdkZMDA3h6WXGxKWzIVZaigSqwphvTRdIlhzTgJ0FqZAd3YiTCsSYV0UjzO1t9FAcptq66jgalr1A9TUkNxaqpg1WSx/REKnBKlCveIkxw/PHuPbZ+yDxcgaLBQsvkZZsD4PQRtSpA8ZolYlsRZG4MzhNWgjiZ23j6K39gx668++J7a75iQe151Gu1D1vWNou0lF3zyEe1f2InpNIkzK3KBbThS7QT/HGTqJVgwRTtApdIF6Ma2vhOSWuUBN7DPLB4az/GGUxLTKmuUV5MyG3xaFC3Lx5YUDuN5xB8a0Q8NMP+jmUUUlnlDIc4dCDsdMb8IPhlmR+DSKSop3wsepzlStG1Rph2rZPPDp3piW6AqFRN4nhvbMAKfhag8tYxPpEyNVtlJx2dlQ0NGBJntiPbY4Ssoa8M7PILmhUCgMxEy6hGJRkATlkhColIdhZlkIpqd44DceRvjYWpt1WwGKZqooWFgOS08PmLt4IWf1KjgmxyF35VLoMp0bONiiZPt6OBYkIGFhAcwXpUA/LRAGsxJ5nJjAC5Oh5mAOMw8nOAZ4o4Yhq6Gungq+T7IF0TUSsWJ8QPI/omolgoWCRd0VJH8z2S0pWLRJ4sfNRNBKWJoE3w1J8KRFR65IxNxZSbh6Zge6as7gSfUZ9NddkAiWEyu+79v14ARvP4nuByep8K8kgu9f3YeIJfGwKveFQQXtrdQburkeMMh0gG6RKzQqPKBW6SGNWpWeUOey9ixvGNJyzROcYMre2d7JElZ2hrBw1sHFE3tx/sRh+LNd+R1DlHZFALQq/KBZSjWXBUOjkPUsl0k7hctM/opUuHKmD1TS/KCc5kV4QzGFEyGJ22nVM2nxqpwsM11NoWFtzOezgA4DUuocHmwmeWM3axjyANszrQeXZrLW+0OjPBgK+QFQYgAUUCkmwWUkuJjrca741IGpmon6Y11FTDNQQUxpBhxCfRGTkQqfPNbYdWvgW5wN3fQwJC6bC6+CDOjF+mLH5a9gVpUMvdQAOooHnKP5Ptgna+nr8nVZw9HTHTW37qCpuVlScFNNPerrGbCIhgbWYY4SwaI1EvYsVCsRS+WKGvxGfNFsuE36hl308mS4LY6E/Zwg5KzMxlL2wHfZFnU/OIX++nPSzyQ9aTqPxyS5k4QK9NSdQeedE2gn0R33jqDj+mFcvfw5a3g8LMt8YUSCDcu9oZPrDIsiTxLjBhPacvGhKqgXekBzriemVbjAYE4g9EsDYJcfjIikELgEOMEk0Ja11wlLt6zA+j2bpJSrxoOpkO4JNSpSheQpMJSJUT2Z22K9oBTpghmhdlAIs2fttkXU/CLY5sfh40DWbLZS6pGu3McJyoQKMTPEGqp+VhIU/C2hHMB1hixFJvbp4Y74mJNCrYBkZgVQxQGYUcSxmGouJclUr3pJKH6b5oYZzkzrxjqYzt5dQU8dtuF+SKwsYo+cLENiAmLLCqATz5JQkgbb3FhY5Eaj8Mo+mJBgQ4YvZbZ8/imRMLczo4uw1zczg5WTK25cv4b2xnq01tSiXZz0aGDLxOUaAVr1RyR0SqhWOgdNUgW54ioO6VIdcZJjsBVjPXVUXSKc5ofCcV4I0pemsY8twv1L+ySCh1ouYeDhJfS2XHz/Szq9jeep3lOsz+fQQzU/qaOK3xEcuDAWVpUBMCC5JlSwcRbrbbYzzGb5In1uPBzYeqzZUIUFm8txvukMmvtq4c1A40wlmiRzErB2mgTbIKQwGtbx3ohYlAuTdD+o0GZVs7wlG/491f4/4uzx23hHfMJlpRgvfEIiP/Gzxu9EQg62hVt+IrzKMqDMAPSpny1mkLTprMXTIh2kdKwe7wnNWI60bZUYkk+LV2LgmsY2TD0/EDNKAvEpg5xivj9mUrnKJFSZ6lUrCeOkTIBWSQyUU32h4GoGBQs9fGKkjk8M1aDn74KoWQXIXzwfSjamcI0Kg1WoH6Z52iB62Wy4zc6ETWkStMtjoF0ZxfAYAqNQuhjdw9HDAe7+npi1dAmKZs1lir6J5gf38ZB1uJVoZLJu5Chsu04QTFKnpJboHcRlsgKCWOnLz08apF+XCaPqBMF2swORtSITq9eUoZFp+QmJFD+R9ITk9rZ+jScN5yRyxSjU3HP/NDrrTqGn5jh6bh/DjWtfIqAqFsZlfMFz/OG6IAK+RYGYt7IM7ukeKCxLgBv7xtTiZFSwRXj06B5a7lxBTmE6PFiLdELMYJjsDL1s9ouFfAweZANaoWYe7Z7qUWRt1aqMgMbsKKjMioBqBVsQ2qVKpA/sMuMRSqvVjfSEIvtn41BPuCdGwDM1BpGLStna+GF6EstEmj9t2hsFB7cySNE55qbDcU4Gtwci99hWuFRlImLfYuaDcHhur0ToroXIOroZUfuWQa8ins8XzdeQgIqzn2Pz6aPwY6hTczXHdDNNzDDXgZa3A+09C7GlebCKCkRyGdtFN7ZxuSkIm13INmgW/OfkQiM/FJokWJeTV4P3EQo2tDCAnqkBVJkD7N29pC+qPaKCBcFtAiS2ldbcUkebrmnAR7ThKbli5ZYslCtIfi79fF8TRrtr4T83QrJnm0p/ZC3PwNp1FWh9cJzknUZ3PQMWFdzfcYVWLX7UjIS/I7j73ik8YsruJcndDGPXrnwB/4UxMKr0henCYDhVBCJ7WSayF2ZDK9gY7lRmZVkm7GiZxqlO8Mr0R1JeHH5joggN9qr6rNcz0+2hWUBlZVBtiewz02ir2W74OMUe2mWBUJsdAcXZ4VCYFwmV+dFQ5bptViKiZ5UguiQPxRtXwCzGH4HZyTC2toSuqTES5pZAnWpVou1qp7HdYlKOXb4ALgvzEb19EWI2L0T6/jVI/Gw1POfmI2n3GnisrIBJYQLmnDqIoKpi+C4t4fui8hYkQ2thKk72PIKHlz8K586CppMZ1C11GbJ0oeZiBcf4UFgwMdswKDm5e8DR1Q2xFYXIW78Mn58/hRUHdyJyyzzozI6BFkOitp8zPOKCYUCC1fU1oaSvB/eAIJw4cUxScMuDGsmmHxKtrMUtD+pZk0kwLVkiWLo05x25z0dapZ8mfN0vfsLvAfq7bsBrWTgcZ/tLtTNjRap0mrKN5HXSgp80XkJf8xUMtF5Df8tV9DaQ7KYreFx7gQomyazRvQ1n8fD6UVygRQfxoBvM9YfZ/CDsv7oXHQ9vInMWgwcVvJlvavfSCiSnh8DJ3w7ODEBWVKluuQ80aemiHuvRSXSqQqG1mFgSAsUFgTDOY6BZHgfFhaGYviAcypUMObPD8OlstixUms+CEiw78QXSF89F1uoFsEkJR1BWCszNLGFmJK4jK0FkVRlMc2OgmxmJDV+fxY6rl7DtxiVsuXMZO+tuY0f1DRysu4uTzY34sqYax5rrcfrRQxx/2IwzrW043dGFrx/14OTjdphUpmPxxROo2rUbW/fuh7Ez2zwzDWjZmWIaifbLiIWRPQOclSn8c5NhyWwRTJfavnsXwjhRMpbNQuCyAgbOCOixHBjH+MHAxxbW3nZwoV1nzClDQm4mLl+5jIa799B8/x6a7t0hwQ+o5BppXSx/RFKn5IqVyCWxEsGDTXjVV4+Rztt43H4FbouCYU/VmZd4I215ikRwVy0tuP48Sb0s/ardk8aLJFr8Wt1l2vRFEkzyH5xHR81pKVE/unUC5y8dhDdJ0GeAsqvwxo27h9F49jMsW7EAdm5mWLO0DLs3LEYYU6Q9k6NTpAf8WIuMqHSVed5QrfKF7pIgaFX5Q22xP7SXh7GNCkL05kqYzIqGMsmfxl5dg/VQidY9ozIUn2R7wbEyGw5FyXDIisFMXyvMYC12jA2Gqp6WlEqTqeCZPtaYEWwPs8Rw3Gp4hJqGfty89RAP6ntwv/kx7jZ24359N6ofdOP2vUe4Xf0I1Y29uH6vHTcbuE9tP1pqBnCj9TFs5tJ2l+fBcW4GdNjWqdobQdPOGPpOVviYYats5UIUzClF+aoq+M3PYa2NhWVlIkJItklOOAq2LkPcjgXQnBUJg5wAGMb7wz7GF2ZuljBxtICSoQ5cvT2xddMmdDExP7xzl4RW42FdDdrq2RtX32NNJsEkVCJYqFciV9jyULP0O1HiW+/jPffQ13kdzgsCYMO6KQgWCt6xeRbaWV+7as+jt+mypGKBnnqm6fqv2S4xUVPB/XVf43Gj+H2s87TrMzh78QB85ooQQotmqPLKJxJcaGHm0DTVgDXTsIWHOdzjSXCiD67dvICTXx2Ctb8rdBLcYVQQBJ9FGfBflQeTOTHI2FGJ+Z8tQ9i2Cqw6uh2xKwtgwJq1+9ZJmLF+Tktzl0KQUW4k1JJ8oZkqwpiH7GxTuAt0gnnwvayhGOqI3wRZ4XdR9tDLDMOWy2ew7tIZrDh9HItPfYW5pw+j+OgB5H++C+l7NiJx+2rEMcFHbFqK4HVVCF69EN5rquC/fCFcRT2fnQjVudHQZmmbHmOLaa7GmGljCD1PO/y/tWZiya4NCGPZKFwxF5EsA7YVCbCZkwSrwiim5hBU7l2PiC2zoT43CjoFgbDIjGC99oKdjz0sna2hJC5osLVEZWUFam7eQkdDPdqpXDF2NjawfFajvY59MMPUlAhTgmCh4qe94id266Xa++Kx+NneGrR3XYfDwiBapQ9JDkDa0lTs3blQUrAgt5sk9jff5PI1JuhrTM+XeBsDVz1vE8sNVDb7ZGHRx87uhvesKJjPC4JeKQnLdoIZe+LZPDj55dkIifBCMkOJDfvPIgat0Z6HfLEPYO7sCHMPZ5w6fQxfffUVWyW+nqhIOHm4wIxv2qUoFsomWjDwskHsggJY21rAOzMKM7N9oZrNclCeCM0MKpapVpltk2KCK0xZa7VCXaEV4gbz9HBoJHpDmS2Pah772ng3qBaFYKboZ8sj6ASRmF4RiWm0+2kMb+8xm9sIBd4+g4TOJJRJisq8aKgtiGI5iYR6Gts3LyOouJnAMMARtqEesPR3hm2wOyeuC6yD3eAU7kP75W2R3nDh63aj0+iwQ1DLYj/P9lCo2CyZLZ+HKR/DHq4poYiszMGhsydx5euL6GkVpN6RSBUkP6qvkyApWCRmoVxBtMALYqy3Ac96avG0uxp1bRdhVxUEaxJsW+yPtMWp2LdjIYk9Jyn4ccNlieCBllsMVlfRXXtZGp80CMJvoovK7m/8Gs3Xv8LRczuZSCNgvIAEl7tztjoielsxUubkoXzNLISx9rr4O8LU1ggOYTawiLBHWHkqXKID2B544+Lps7h4/gq2HjyC7LUbYOPnifCKDKgzFWcsr4RTKluVIDuUrpwHzVAnzGB/Oj2TB600FdNY0z+mPX/iZyF9mOCcGc1JkIrI0mLWwQzY5iVAsTACCjyg0xPdoVQSgmmlrOkkeQaJlY8fEjyd5MoQTnIjJSjMi4Iic4baApI0PxYqGe6YIc6bi9OqLAMqjuJTJQNoulpAxc4Q1pzUKeU5mDOvEjmVBfAvSIYR1aoR4Qr99EDo5/A9ZXlBJ9kDWuzFjdiLm3pbwSHEE/EZqcjMyMAZukxz3b33BHc1NUpK/mj8cf2UUKtQruh3RWIWP5ItvlE4IX5Jp/Me2p7chO1sX1gXecOmwAfpbL4/373kPcFdtWyRGq9LBItRECsIFsu93NbF4NXP2txEgg+f20ErYjha6AetUjdYpHogky2XV2UqbNhDmhbRmhmQTDM8YZrtAvM5wdDM4YxPZ0vkYIJr5y7i1tfXoKNvAreYWEz3tIJKoC1UQx2kkxSqrKEKMS5QZx+rluqDTzO88Cl7Y5flhVArJAmFDGXibFN+ENTywxC1fSVi1i9H+vZ1sCvPwvQM1m7WQOVkbyjm+WNaMScIQ96M0iCqOViCIFkodmZFxHvICRbjDE5ghTmRUJ0fA/V57GV5u3q6J1TinGHIEmEQxQ5AfGAR4Qa9SDfoRLshjJPUNcAD8zcugw57ds04EhzrCb30IBjnhkO7OAyaVLAWJ6a+tTa0tGfCwEgXunp6MDI2RVlZKRoeMFixBnc0NaC9gQpm+yQRLFewIJnrmGTvKxT8nEQPt92WFGw7ywdWeR6wzfdBVlUqDu9bzhp8kiRfYLC69p7UvqYbEgTZYnxMZT8iuY8bLqDl9nEcPLMNtpXsZ+f5Qq/QHfFz0qGkpwbvxFCY0Da1c1ygkesEjSwnqKTbwCjPDYY5tFEqXTnWGobRrKmOBrBljVbwtcT0FHdoJnrBINUfClm+mBZmB4VYFyjm+EEx0wdKTOGfch+v9RX4tDAYvy0NxselgZhO4hRLQ+CwOBdu7Dm1o3zgmp+GjE0boBrhA41oDyime2FGif97TOPkE5heIogW55rDoEjyBBTKOHHKw6BcwclBZatQ1arz4olYaC2Ig3oRywNfn35eKHSTfaAS5gjtBC8STgvmRDTMCIRtdjiMOOk0C8Joy2HQzg1lgg6HYX4EDPOIdJYUEmzqoAdDnRkwJcF6+gYwNbFCpH846m7eQUv1fUnFwp6Fkj+iaqUaLMgV6hUQvzgz2luHoYd3MNB2B5erj8OC7YlZvjtsC9zZsybixL6VaLt7XApTnTUX2A9fRidrriBV2LUcvc130EnynzRcQeP1E9h3cjtMRLtT6QPdfNYevml3kraRtdmeB0e/3B+GDHLmhXzzPJi6+ZzF+V7QzfOETi5nNq1KN8OHB8cduuxblRnQNJLcoJXijZkpJCXREzNTvaHAUSWFCuZ+CqxfrpvL8SnDyu+KAvFb2vbvGbxmsN4aRwZC0dAUmm5OsI4LR1oxW5TyEujFeePjaHuoZLJm8/mUOYqJMo0Q4wzx0WKaJz5JcZPw22QX/C7JBf8z1h6/iXPAb6QzaC74NNGVr4evJcsPCrRYndwgqpkTJdIBmvEeVKU39LLYBpFQA5KvVyBIZXLODoUBt+vxtctO5ITBPCsERn620GcY1WNQMzDWkS4I1NM3h5OtI8PWjfcEC3Ilgpmgp4R6hXLlBIv/MBh+Uouxrhr0t9/BiaufwXyWP3tENuYkJW9JKk5/tpbR/Bg6H7DPZcjqbSGhVLuwZfGj4IOtt2VoqybBV9HDOt104yT2ndgOs1K+qVJPzlQ3mFIZFvl+sMhhn5tJa+UkEh/3aWcx4eY4UdHOfMOu0Mt1gVa2K/dxhxb7ZaUYWnGEHdTCHaUP3lXiaHdJflCitalRGcpxHlCgTSsypEzP8Yf7pnJMZz8pSJ6eFwAFBq/feVvCKSIM/qGxCExOhk9aEixd3Qln9p0+UIh2xP/L25iO4I6ZMQxKfLxpSR6YmejGyeMFlVQvqKb7QC2NkzXdH+p8THFeWpd10ziVpYW9uQhIOoXsxXMDoZYXyPvzvaX4wiI9GOaprK+0bN2MAL4v3j/TT/pARC2ZwZCvXznSBdpUu0FuCLTzwmGaGQzLMBdYWOvD1lgLpmYGtGhjaOuZwkDPEDV3brI1YnpuqJXQ2cwaLBQsTkcKYkUNltXhGvR23cNwZzW6W25g98lNMKnwhTFronWeK8pW5+DrI1vQfu8E+9tzbI3YIjXfQG/rTVr6XckBBMkCfS13GbKuSwQLBW/5Yi0sqFDdPBcYldGyyliLC31gVEpbTHPgm3fkAeJBIJFqqU7QzXGHQYEXlBJsYUZyVEioKQ/OxyRHNz4AaoH2TMY8wGyJYsoLYBgbgLj5RYhhP61OotV58P4/nAheywrxSbQTfhfhAI+qbCiFMb0zucZl50DXwBIxOTkw8nKDpokZtIyNYMhkrR7hhI9dTaDoZgVlImbFLHwS4ohPSbzAtBgnTBdXhBAqWT6slaFwYfJP37KcJYPJmyVHfEolrhIR+IRqNmIOSOFry5pXjITZebDMCIFmgif0MwPhxKTvV5osBcVVR3Zj+WfbsfTgLqw6dhCmqSHShAguToCtqzk8nSxgqKsBfQMT5hEzGPN137h6EU33b+FhLWsx0V5fjY9GumqmBKnDJEVOdL/4wTCGqyG2SE/abmHt4ZVUGt8Aa6EdD3b5ihxcPbadFn0UndWnpRQtFDxASxf/1/Cs+z6k/1jouCNt76q/gsdUec21o9jxOQkmsQasvyalrMN8PO0iEphmxZROe6a1acc6QDXMGnmrZ8OGgWTOzuXwyoxE+baVcE6NQ/7GVbCOj0DYnHJYJLGVEVdTRHth64H9WLhtMw4cPYTPr52FeggJDbTC/yBCV5VDJ4UqCnNH2pr5CCjJwDwGq4zSMsxU00FEViZmbViLrNJy5JVVoIhhR5GJVcnFDPFFuXD094WhH/v1KE+JrE9jnfApCRaX+XxMiNqv52ABWwsbaNkw+AW54/eR9vhtpB0+iXHghHCQxpnsCuLyU2Fgogcz9sQmib58XUSSNyr3r0XugjKYOllCRUsNVna2sHVhK+XmDR0XO9gmBCJxcQEsvSzh7moDKyN9GOobM2xZwtzCiu3SOTTeu0Fi76GjsRpdzTUyBUt1lxYtSBbo6LiNp2330U2SemivOZsLpfqrx57VlW1ScVUmvj65W/owX5xvFueeR9rEz+PfwWTXbTzvEr8md5n1m31w0wU03z+OptqTOHVhJzZ/uQImxd7QL+KsJXRZ03Vo+ymrC9jmFKBq1zKUrZsLt3h/RGXEIiQ5AvkLy+ETH4Y561YhsagAK3ZtQWpZCZZs2Y785Yuhy15W08cGKnraPDB60NEVVymaYrqrKQm2oLW6InBdOabRyq0Z5ix8POEaH4n8xXMRm54CBTU1RKSmQp8HVNvEFEq6+jAP8YNymDN02aP+XlsL6lTK7wx1MJMpfTrJnB7OkXX092G2+JgOMZPWqUGCDS3MEFyQBrV4L3yS5CpdSDCTtVkpyZkZgeGR2yz9XBEUE4GMhaWwZEKWX8+lHMyS42YOO/bGM9SVYOfIXGDvDFevQJYND1iEeSJmbgbcQpyREBEEX2dH6DNF6xuaSd+h+vrCedTdv4nmmjtoq7uPjvoHMgULUuX1V/w7WU/PPYw230ZXO1schqfoRQmwrGAwyrCFOwNPAtuERasLcXDXYtTe+go9JFF8mtTXSqI7qeSO62hrYG0mwdV3DuHAFyswf20pbKjKFcdXMEB5QznNFrqFHkzSHmzi3WBiZwwzc0N4ODvA1Z6NvKMDTMS10sZ60DPWh5KGGrSMjDBDVfw8hBYUNDSgoWci/e6Fmg1t1FIH+ibsLQ1IsIE+NCyNoRbgQBIcqThnRG+ah09JhlGwE5z9fUiyNxYe2ArHYIYfPp6RkyP0SPCnSipQNTWFgq05pntZQdXXCaG52fCJjGfir4BSFMkQ13CJa79ymahz/fBpmgdUQl3gmRqNTHFOuyIXDrTSmUzb4vNhLbZNamwNVUoDELayGBu/3I81W7dg0Za1mHNoOyxL46BbFMbHdoQh07VLdCDUTXRhYmEKW3s7WFnbQs3WCoYBbsheOQvR6RGIjfJFqK+X9IsDuiTY2NwKl74+j4aam2ipvS2puLOBFt3fdlcieID1UkB8NChXcGfbTSbkSwhnP2da7AKzODPsPb4Wx49twpZNs5DCOF9YmQRbOz042RvB3koH9nY6MDTXhC9r2JYdS1FZkoBFyyrgEuEPl7QwpK0thkUuLZVtj04xFUxnUAgzgjltx8LFFC6e9rB1toaFnTmsrS2hKX6shaoSXyXR0jOCgoo6NHWpJPELNrommKlvBGVXW8ywN4B7MMObpQkCw0MRmZuGGazTM1gfxUUA848fhlaCH+KrSrBg+1bWwRXQZqslPqXxSo6Fgo05IsoK4JIQDcdE9q+eTtAJdIZ9XARW7dmHkjlLYRsSgoCFRTDJCGYIDMAMpmg1pmOD7GCkzy1F1bqVCIuLRlJBNspWViF+7SzpuizlStZZpv+4FYVIX1SKoOhopKRnITwlEdFFeYhaVAarwmgYxLpJJ3vsw7wRm5+O5ELukxkvtZD28aEw4zEMyE6EW5AzIsI9EB7kB1M6ho6xufTdqPPnz6K+mjW4nkma9bezgRZNUqek/xQkybJ/FalGz6M7TMR3MdEopH4JIVSsYZELnBn/m+suYs/OpQiIcoKhvRpSGAzMLXVhReVYMNWZmgol6cHWyx6Lty7CjdrLSC9Lhov48NzHAsGlGdBlzdLLduOsdYM+g5tyoClyq/IQOJeTJc0Pep6WMKZ6LG2MoaquCBMzY+nrJnZO7IdZc7yDw6BvaQ3PkDBEsJ6pBdlCJ8IFDuH+yJg1G8lFJchfTUJSo1CwdS30/Xyx49gJeBWmSr2nbV4UPErTMS3cGe7F6QgqzIFDVDQUHayg6M966WePxMpi/Gb6JyidMwd+YRGYpqkJRR1dKKpz1NaEehD78mQ31vMK6Rd8LO0sMH/hHKiqKcHT2w2p2alQ1VZH3prZUKnwhzbDlnegFz5V+BjJqfGcrOpQVldAKSeGlqUhnFmOLFOCWZYiMX/TMqzctx1hfF3mYT6wY7laummldGpSh8/rFemB9MRgZGcnw8zUDAb64pcGzHH+3DkpZLXW3JUI7mh8R7AgVahXkCrwuPUWE/Ft9DfeQFPzFfhUsDcrdEXE4ngs38+ZyYY+MNsT1oE6cGfw8s/zRcL8RHjn+cEu0gaOsa7wYNsQVhGJhEXJyFifh/jVGcjaWo6s9bOhzbBhlO0BtXRbNvAeMKYS1MMtoZfgBLUIa5iwJtlGeyKuOFVKm6EZSUgqLUZ4WhpyyisRnZaBhPwChLJu5i2pglasD1slDwTlZFJpy5CYkYeEsmKYM1GbxQfDJDwAKay36iROmxPhYycDBJdlo3TnBnjzsY3cXeESHIqkwgJkrZwvXeFhGuwBdZYIEwf2q9ZW0LC3gZK5CUxdnOGdEgf1WE98murMfa1h7ekAlxAvuIX7wiM6AIFJETB3t0VEZiJMGJ5+z0CpTEsPL06DZYg3StYtZYLm+ynORlHVXCxkuDPh69Rme2TBsJi2dAEWMzDmr10Fi0h/OKeEIrWqFEkrZ8Mg0hO2QQ7wC3REdkYiDFiOdEXQooK/Ovw52qjeNnHKkmNHI2twT9ONqSctt9DNVkacdRJjd8MV9lBMvkzHzQ0X4JfnA9skR6y5vAne84KRtjsHlUcqMefYbFhVusC23AXeS4JgyWXTHFtYsIc1ZaDQijBhP2gPrURzNvTmTIp2CFmYBrN0ti/irBRbLj1OEJ0MdxiT6Pm7F8Ii2R26KS5wSfVH6Xwm2ooSZBQVcqZXITYjB6mlpfCKiUFqZQVCsjIQlJcJo2hf+FOdhg6OyF+wDAXLV0Hf3wOavnawCHaFY5A3MiryWEf9kFmSKX2e6hAaBENre2TPmoWghASqUhsahsawjgpiQKKzhLtI3wMKTk+Fup21ZN3xfC3qTMjuOYmYwb54epY72zpPaLlawIZhzC7WD+YRnrCJ8IZnbBDyV82HaoobZhZ7sSf2h3mCP/vuQGTPq0BgWjwnliPfQypCc1KgH+3OoMXnZY0PY8IPyk5DdH4u/OIiEZkeh5jCTATnpNKuo5BQkg59R33o2RpB284MK7ZuxK5d23Dr0jk0MEU30aaFih81/IpgLksk97aS7PZrGGq+Kv1ccPcwPb3lOm52XUbw6hjYL/SCzRwm0sV80Uv9ELIxHiuurYbNXHeYkmQLtj1x6wthnuyKhDXsL1PspZMkuuxrg5fmQjfBGT7z46Cf7gCNVDvo5/sieF40nKis+buroE/CfQsjEFWaCb+sJATnUplr1kDb0RH2IUFIrCiFOYNS4uxyqHnbYu7W5bA2N0JCbAzS1yzlc8yjqsWFamYIiQnE4pISzKM6F+WJX7/NRFx0JDKKS7CwahU27T0gJXMtMyMYOztBOYA9a5obE7QtwvKz4BoWJpFqFuANUx8PuISHwDkzDnpZwVDMYg1mgIudkyt9GmQUwomZHQUT1m6PqACkLeLry/SCch4dKtsbJplBSF5aAo+sSHjnRMMwyAm+eQlwjPeh0zixPbSBhrcZrPxMYe1hjsKifBw6cBAHt+/Gvp27cXD/F/ji0GFsYX8cU56MPJZAC7ZOG47sw63rl9By5waaq2+j5cGdnwkmoRLBwpIFJJKFmjtuob/9Mm36Ajrbr2LXpsUYGWrC4i/nw5bkOsx3hfVCbzjO90HkxgSUnpwLy/keMJvnDvf5oSjeNxce+SFIX1cA62x3+C1PgkmaKyr2LoJJqhfsy0JhU+QPx7xA5K6rRMGyEjh72mDp3lUwzPSGdo4PApflwzQ9Cg75GYhcMp+z2x8qAU7wKM6Asp8bJ0UFVIK9eKBckVSUhOKFZdDycISKvxOUYj0ww80UCQxQC4sLMCcnGxW56ZiVnoh81u1PLZicfRyhaG+IabYGCCrJQwT7at85OUzedtIpUOVQJ0QvqISiiwNCKgoRObcM9inR8KtIlU78i4kwnQrVTPPBrC/obtyes20JnPKiEVaVj4zti5G+dxk0mbZnslNQyPGAfm4wMjcvROaKWYhfUoyw2dlIXleBoKoUGEbYwDPBG2G0ZL8IX6Swxu7cvQs7txPbdmPX1p3YvmUrtu3ejgXLF8En2AfOqaFYsXcTam7fxMN79yRiRYsk8F7BgtiuhmvvCRafAA313MdY53UMdl5DXf8N9I82Y9bmEqys2wHzuW6Ye2YBHKng2ZeXIXRLIgrOz4fpAg+Yz/OCZYkHItdlwKEkCOHLM6CX5ABTzmBxAiN+VRHc82IQVJmCiHlpSFlWhLItS1GxaxXWHNqBBUe3oOTkRlSc2oTZp3cgc99yZO5dgWTO1vgNi5C1Yz2xCckbVyJz+3p4sS3J3LKK5BSh6tBeWCbEoIQHxSiLQYZKysxMQlVxjkRwGYPPbNbcvLwU6HhbQ5t2qBnOFiSYqT3RD445sazRPjDOCIH7vHQ4MfSZZ4fAe04GXErj4VgYBeeyGISvzkHw8hwELs1B+JpCuM+JgSNzSsiqDDhVhiFsdSas6UpJ6wsQsSwNdgWBSNhSivB1uUjZVwbrLFekbsqDRznT96ZC+LCNSt6eh+glifBlC+bEoGfnZo3QyGDs2bMH2zdtw47N27Bz81ZUzZmN9ZvWIp2WvXz3BpizE1iwabl0Hrq95oF0qvJh3QMJ4nTlR7TmKUGqgFCynOhnvXV423cfPY+vwW9eCDznBLF+RiBiQyJiNjPcbMvGkhNViKoKR+zqWERuSkT4hiR4cb+oJQmIWpwAt9JABFfFwL3UHz6VoXArZPCaH4/QuQmIW5iIiFlhiFkYh4gFyYhaloIEToaQldmwL4pA3oZ5VGgGopdnI2pVNiJX5SGWiTVx3WykbJyDtC1z+bxFJHc+4tfN4iRYhvhNc0n+EmRvXoKItRVQ9TJHAdW6gA5QSWsuyUxGVX4mQhl09PzsYEubTd5ciuRtJUjZUYHkTRVwzAiFRYQHvEqiELezAAm7ChC3jaFtRx6Sd+cjZU8+ovneM7ZUQM/fBubRTsjbWUql5iB5Z4Y0ZuzNRfaBPKTtykLuniKU0s1M6Ar2tPSMPbnI2JePVI7Ju7ORs5sTdHcR1/ORvb0IgXnB0DXXYKupC2cXOyTExGLl4uXYsWEj9mzaBDszE6zfsAqzFpZj+fa1yFozF2VL56C+5h7r7120PqhBS7W4Lkt8mtRIgltuTom6K04nitOKI5338ObRA0wO1eP1YA36h+/CssobVZ8twPpDy3Dowg5UbSjG6u2zkbMgGtuPLcPczbTA3aVsGZKw4PAsKmkWFhwow5z9JZh1QKAUs/eXonJvsYQKrld+VoZK3l7O7RWfzUL53jIU7qRF5odBxVUPRdvno2BzBQq2lCGf6Vsgb3slcklE5tZSZG4rJpkcuZzBfZI5Ju8oJ0qRyMeJXpELfWcT5OUko7IgHeVUb3FaHOYWZyI2Jhh2Pg7wzAlBws4KkliCxO2FSNhaAiO2XCauxrwtANGbWK+353OfIiSRiKRdRUgkUnYV0llmQ9NFF/ou2rxvHhJ3ZCF5Vw5SduciaWc2x2yGUW7bk4P0ncW0eR3YJrqQTE4EEp+4J4uPKW7PRdreQiTuzUfanlJ2KNHwYouorT5NOhUZ6OWDBfMWYevqVdiyaiXsTIwxjx3Cnq2b8eW+Pbh++SKqb9Blb9xA413Zx4Xich3xcaF00V17/ZUpEbAEwf0MUuJ/f189rsGz8Qa8HqrD06H7cC93x8Jj81C6pwAe2Q7IXpmA4CJPRMwOgzeTZDitxqfED4nLYrDmyGwsPVSO+QeLMfdgEeaQTDlmk1CBWQdLMetzEvxZOQkuIypQSesq3j0brnEe0HHRY4CoQD7JzBPYWcnlSmnM2VlGay5BKmd72s4SpG0vRSpJTeX25F0ypHCyJSxMRzoDzNwStiLsMQvZe+YnhiMnKQSZqRHIzklAUnEs0rdx/x1U8NYCpNBS3YNcEOjH8JPmjdi1mUjanIeULTz4fL5MPl+GeE4SnLGnDC5hDtLXXbO3FSKNCk/dQXVS8alcFmMmiU4n6QU7imDjZwnnSB677SR+ZxbJpwvw9ozdecjeXUByC5CztwJlq/JRmB2BsqxoBDtboSA1EbOKi7B55QpsW7MaEezpK/JyceyzAzj5xeeouXEd9bdvSWi4cxtNVLG4olL+seFHbXWXp4QtP266LhEs/mn7aV8NXo7U49vRRrwcuI/hwTsYeCiucz6BnvrjGGg6jf6mk+htPIQnNXvRdWc7Ou9uQUP1Dmw9NAcrv6zEwkNlEsmC2LlU67yD5b8YF3xRybGChJejck85KvYVo2TfLPil+MIx1BalVGvRLmLPLBTunoXSvXNQTIj1or2zkb+HpO+dxYMyG5lcFmMWb8vlvjlU4sJtC7F372acPLgLpw/uxOes3duWz8JWhrnNxNqVZVi0dZZEVNo+Kp8qTt5SgrA01sWcCAQVBSN8Uzoit7FMbM1AzLZMKj0XiSQkgaqMpX1HFYchnv1+CvdL2UsLpxqTqND0A5wAn3FCHCjicj7KOJFDM30RmOOLbNpzxn6CNp63l5NgXwFtvBD5dLxsTvbZu2ZjYWUadq+ei4MMthe+2otzxw/i9JEvcfboEVw+cwrXzp/Fza8v4Nblc6i+eRn1bI1q71xDw32SfO+OdEWl9G2HuhoZwULB/Q9vM1Tdw7Mn4v/tH+D7gXq8GajF25EafP/kPt723MWbnjt4+4QW/vguVX4bzx9fxWT7WYw3HsZo40H0tB7GjsPzsYo2vfDzUizdX4yFfHPzP6+QCF1I6676cjYWyXFoLhYcnI15+2ejbB973f2ViMylwioS2OhX0eYX8Lb5qPpcLM/H7N1ziLko30HCqeYCqq+Qqs+iPRftnM31ChQTeVtnY8nuNfjy0Be4dOIELp86gQtH9uPEnjU4tWcZTu9fhjMH1+BzjnM4GcrXFaJoURZKVhRi7oJ8rF1UhIqqTOStyUTBxizkb8hE9ppUZK5KRtbqFLZsaShem4sViwuwak4myjdkoYhhqnhZOoqWysbcBQmoXJmB8jVM7ivSMH9BKubMTsL8tVkoXSoSfxwW8D6li5KwaGUO5i/NxIotDFDME5vWLsDnu9bh4vHPcfnsYVy5chL3rlyW1CpGodR6puam+zdQf+cq6m5fQcPda6i9dU1SsLBqMUoW3fng0pS43GaoVfwDdjVePn6AtwM1+Jb2/M1gLb4brsf3Iw14O/gA3w7XSvhuhAGM60LdT7svY+LhaTxtPorBjlNYT3vc+dUiLGO4WLy3iAe6EMs5Q+dtzsC6zyuxYEsm1lO5C3hQNnxWidk8YGuooBUbC7F2SzkWL8vBkiV5+Gz/Cuw7sAzrNnOC8M2vYaiZszgDq1iXK2m/67bNwayqNOzaPQ+LF3HcuxgVC7Ow76ttOHhkF85fOIar546i5up5NFy6gNtnPsPXh7fj4pdbcenIdlw+thNXTu3E9XNCIVT4vtXYuWEBdqyeg3WLirF+RTm2rJ+LTeIfYdZXYv+WefhiRxU+37oQR3fMx8ldi3BiVxUnzGIcYeD7cuscHNo8B59vnI1TTP1HmfqPb56HY7zt7K7FOLtzMY7tWIhD2+bj8HYxVuEEW8LzX2zGmQMbcfHQVlw+vBPXju3GzYvHiRO4ceE4rp8/htuXTqH62hWJ1IY7wo5vou7WDelCdwGx3nj3Nq1ZhKzqX9Thj540XpkSf8ku/kP3Na1ZRm4Dya2X8N1w47t1GdliFOS/GXiANyT5Re9tvOi5ihddl/Gy6yKedp6T/sGs6+Y+9FcfwuNb+/Doyjb03NxN7MLDrzej+8oOdF3aia7LO/D42m48ubYHXdyv+eJ2YgdaLuxE9bGNuPPVWtw+ugbXD6/EjWNrcOPwKtw9shY3Dq7CrUMCq3HzC+7z5UbcPrwF7ddPoOnyUTTfPoumm2fR8eAS2qu/RkftVbTeO/8ebdUX8aiG2+svs1e8Sqv7CudPHsDRz7fj6MHtOLBjLQ4f2IrDn23F0S+24+SXPPBCSSc/x7kvd+Pc4V24fPwArp76jNs4nvgMl47uJvbgxsmDuM19vz5yAFe4z6Vj+3H99Oe4efYQbnC8fHw/8Rkn2OfcfkQi8Pp5EnnhBIk8i7tXzkp/oHXj61O4yu3XuF0s3716CTW3rqPuDsm8L2yYtfaBSM63pW1ilG27L+H9he/9LVenxrvu4LmwYZL7w2g9/jDexrGVhDa/x/cjTe/JluPtUC1e9VeT5Ht4Sbzop8X3i8cSf8p8BePij5xbzmKo8QQGG46jv+4oHpP0AdbykeYz3H4K4w/P0wHOY7D5NHrrT6K75gS6609LXzltvvMVWqtP8MV/hZbak5ylR9Fx/xTaxVdS757AwzvH0XLvrISH1efxqO4SWu+fRydJ7a5lu9d8C0+k06/i7NxdDLI7EOhvY67orJWWBx7VoqOJtlZ9DTd5cK98fRbnTx1jrTtJUk9Jde6GOPDXLuL2xbO4deEMiTiDBze+RvX1i7h/7QJJOYdbVN0tqu7m+ZPc5zTuXDonkXP7HWF3r53n8mlJmbe+Pk1SWUvPcr8rl/i8X+MG0/Cd61dwi0Tevcz6ytdxg48jxntXmZSp4Nqb12nT1yS1CsgV3UYiW0johWNfScHqFwoebb8+9YzkvqYihTp/ZLD6aaJD+iPo74cf4rshEk18P9IiEf3tUNM7NHJC1OF1fy1e9Mnwsq9B9p/3T2TXVMv+3bMaE50kXPyVOkfxn4Hi717FX+DJ/51b+gvYh7cw1noDgyLssScfaLmNJw2yi/a6Gm6gm+vtNVfRVXcTHTVM/RwfPbiGzvqbeNx8jyTe5sS4hc463tZ0Gz0t1SSvDkMd9RiS/tS5Fv0dJLSjBn3t1dJ6X2sNettq0dVczaAiCL6AC+fO4Bxr9pXz50kCSbn8NUk+T5IukhySywN+l4TXXvsa96+cRzVxj+v3r5/Dncsy8gWBt74+IxEkyBcT4cGNy7hHkm9dJsmXePvlsyScj0ty71+/jAc3r/F2mUoFmfdI/G0GKTHeuSQjWJD74PpViVQZZEQLguUWLbaJ9fcEP+28OfW6r1qyY6Fc8U9fP010Sn/jLidXwrBQsAyC3G8GiYFmvOlrJMnEYBNe9rO1Et9pYkB72V+D530itLFO99yTMPlYtvy8i6oXrVjPAzzvrZUu7RHXb411VEvXdElXczL0CdUJtfU9vCctCyXKl5+0cB8SJdYFxLp8X6HMIRI50iWuMWvAxJOm9xB/9iwfh7oaMPy4WfoPwodN91HLNHr3xlXcvkYyeMCrb9+Qgs2D61y+Riu/SLVevkTVCnyNmptXZMSR/PtXL0tE3LrISUFiBCFiWWwXpAj1VVOhwobFBJCNZ6THucMJJD3Gu8cU9xEQ95cTLEZBsHgceQ0WYarulqi/slAlCJZDkNzRQIKfdd+eErX1h9Fm/GmyQ/qPfjnBHyr4Q4i/eBfkSgT3N0kEvxlqJqkcB2VfXHvZXydBpu56CWICvBpoZPoW33tqoJWLby/WY7SHZHQ+kNBPcgdJtliWW6qcsA/JkxP64T4C0rZuQVwTxvpaMdrbIo1ygqV/E32HkZ4m7tv4nmDxYbkgVlilIFmMou2oo1rEyYS7POgCNUytwnZrbotlEnydhHJi3Of+olYKiHUxim3y+tjIx39w6yLtmoq/IbPs2jsk9IbYRje4+TVvv4RaTiyhbHH/e3wdQt0CYrt4LHkNbqm9i6YHt9ke3URbQzVa69j7vruisqXmvuyqyuc9d/6bBAtFy/Dt4EOS2/qeYPF/wm+HW2jz4munrazLJJvKFoTK/gtfBrFdfC1V/KiLgPgjZun7xyRZ1EQB8W+fQnkCgkgBOakfEiyHULEcsn8KFRcNNkr/tz/S9xDDva3SKCd4sq/lPdH/J4KFeh8wvIiTBrU32We+g1DwA1qqUFvd7WsShIqFSgXk6hNqE6qT106pXt69TpIu0oYvkKjL0rKszREtzlUuX+c+snQsLFfYsFgWipQnZvl6CwNWa4345Eh8NHhbushOfMgvlNvZWI8nD1tYih7io1e9tVME62mDjGDip6cPJcKFHcut+PuhFnw72oQ3DGHfMGx9Jym4lQS3kGCSLJHHdZIvfnZJDvEv2uK3LsXfpotRWqbSBSZ66yWMdFN9rIkDnSStu04axbq8bj5powUTj4VqW6nuDt7WRlIf3pcmgmTl3K+Pqu8lBrpI3pNWKreNCn4ojeP97RImBh5J22S3CzxEb3u9dA1Tc/Wd95YsLE/Yn+glBbHCBsVtwqqFZcptV1ilfFlATq58u7Bc0ac23rvKdMvHffA1Q9AltNy9iIf3mOTrbjDVX5fQUUuy7l8jaSSZo4C4n0ALy0eruGKSim3jRHxE9YrX3FYnPha8L11B2c7lrnouNz5AT2sdulpr8RHT8NQfxlulwPSnyXYJPz1t/b9GsPzv0p/SjsUPmwrIv+QmfZPxCcmQyK0luSSbypJG1s7hHlk4EoQL9Av1PqrBBJU30lGHYSZgQbBQ7cjjBozxMUeJERI4SlLHSOh/h+CBribamfgk5p70qcwDEtlIghuootaaamm5kcqpZ4CpJem1DEJNQlWEUJpYF/tK+0hKZcKl+iRQkY33r9Myb+ARw1+n+OydgVHkiceNTPktsoDYxUD5uFnkjNsMRyIo0XY/QEct96m/i8dN1dLY3XCP+92hWu8xUD5gsLyPHoZFsV2s9z1qQG8HLfrHscap12x1/vz8If70rFWCIFjWFv1M8HeDTND/gmCB1zyo0i8CSJDZtCBaQK5aAfkv174YFL8B8ojkim9UNDMINWK4uxnj4sD3tDD8kEBBIkn7EKMkf0wQQ4j9R3rEfUksIW4f52OPEYJcQaIcgmA55OQOP+Z+rM+jtPCBziZpxrfXP5BSqPxcrkiiou0Qo1Cy2C4LNDLIk6sYG0VtFLVW1Md3tzXcFacOWTfvytTYWsuE33pbcpt+uo/4UoD0+TtbuSeiayD50se17BwEnnBCiH2Eawny+x5Ws+0jgU28jROjt5l5g13AwEM6YJv4U+s6Pi4dj/uJHNJPoXz043jj1B8mmvDDWAP++LRZglzBgmSpJWKo+j8R/IYHVYSrtyRQTqwcctUKyP8e4MVgB14OdmHiMQnobqEKm9m+iJrYSnIFcWL8mWChZAndTVT3z3+XPvqkTZokoqaOsaYP0yWGCEGgnFw5mR9Cpl5BtoxgMdsFwZ1NdRKxcvyaYLFNRv7PeE/wO4i6KUaxXaZmGcHCdtsb2L6xS+h7VC05kSgz4hq4J60kmBjqvM/W7i4GGBRF+RFjH8uPtNwuMgcJbKM6SaBYlxM7TGJH2A6OsTQNd7ItJETI7KO7ffTTeNPUn5+24E8TzfjLZKuEn57KTnT8MPpQClQCguC3ww0kmIoWoYt293bgoQShWLlC5cSKn0AU+AXR4lcEOBFE0BFtypgIQIKAJw8xRBULiJk38qRZeoGCsBHa+ChtXqhzgDNS1NchKlc+yveT7yvh3f3FKE/UYlk8vrT/O3yo4McP66WgIkKLPKyIHzQRV0ZIV0lw/V8RLCdT3psKUkUtFsuiDotLaBrv0aIFwbTUHpIlys4oD/54D4lpf4DxTrZzzBUTXfXSslRyeLsIjSJIykOncCp5CBX7yO8nxwTf6wTfo7QfS98Qu5WPSOjU31+046/PHv6C4B/HRNASaVmm1O+It7TsN1T2NyTru76O9wQLAsX/OkgkippM/JpoSb3vCH7Wz7aF+4yz/klK62tn6hXJtxEDovaKHpWqHBbkippKgoX1DopvX/C2Ud5f7Ctb/hnjfGwZ2ngfKpUQjyMgX/9ntKKfbtHTRoJFHa67w1r5gG3Hfen64raGO9zGmsjaJk4Nyk8RyiFaFnEVhRjlEK3M+9sZiOruXmUrw6BUewNdtNzednEmrUYieJgqFuQMcLucsFExCrLF5KTSBUSwFNvEbWJZbJskmU+5jxgFnnESP+f7EQIaZ/4Rk10iWJD7IcF/nHgoEfz9iMyCBb7tJ9nDtGOxjTX0u76uXxAskUsIMsXPH8rxIcHit0CekajnvI90ooEtimSnJHiAL14o7L16BT5QpVDxQDff2LttYnaKbfLb5dsk8HF+DbmCxSiH7HnE62iRFNzVXCt9aUsk04ci0ZKQtvp3I0l+WHuHSmTwEud6WWc/VLLUunCUq1ioV1I1LVq0QvV3LrMOX0WHqKuSRT+gimtkyuN7l4//FX6tVgFBrhxiXSKc70mULCmz9DXh/wt8Glwor4LUGAAAAABJRU5ErkJggg== - - - 成品测试 - - - - 64 - 5 - T3 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C5/BLV-C5.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C5/BLV-C5.xml deleted file mode 100644 index 35490ee..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-C5/BLV-C5.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 23 - 1 - BLV-C5 - P_BLV-C5_20210925_180355.png - BLV-C5成品裸机,带外壳 - 2022/8/30 10:29:22 - - 2 - - - 75 - 1 - A1 - Assem - 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 - - - 成品组装 - - - - 76 - 2 - T1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADwJSURBVHhe7b0HdGTndaVLWcy5I9CIDaCRc86xEApA5ZwLqIicc0YDHdA558icSVGkSEUqjiVZtmTPeGw/raflkRVsS8+irGyqsd/+bxVIauQw9pJGIoWz1lm3cFFAV93v7nP2+e8t9G2bsRmbsRmbsRmb8YcVtbW1t3PzR6GvNuN9FQUFOQ05mZl/WZST/7TRaPxgePdmvA/iA6l7ErsSE+J/mpKUiJz0jPX68uqa8Pc2470cLMl3R0buOLlz+7ZbkTt3ImZXFPYkJKA4v/Awv/0B8f3QMzfjPRcZGRmRsbExn4jYvh3bt2zB1ocexo6tWxEbFY3sjMzvFORkX2uorHxCVVHxgKyqqjH8Y5vxXoiUlJTiuLi4v03PyMLAwASS4pOo3GTERccjdlcc0vakYHd0FIqys36elZLy9YrCwm9WlZU1lhfmP62RybY1VFcXhH/VZvy+BUuwPT4m9oc5WfkoL6tGdXUNUvak4vDRc6gorybcdJQUl3NfCtKTkwk8EgWZqUiKi7uVm56+zvxuVWnZ683V1bHNDXWHxO+Ul5Q8KP3yzfjdBUvynVTt/pioqF/GR8cgPSUdyYnJSE1Ox/DQBDIzs5HKfWq1BSdPXUV31xCaGuTITMtCVnoOVb5Hen5MZCTy0tN/mbYn6Z9qy8t/0lhfo6orK/+mx+KJqikvLzZrNCni31tcXNwct/5vBeFujY6JeTlqV8x6bFQszVQsdm7bwd67FdFRMdiTlII9VKzB5MDBQ6fQ0zsMr7cLOdl50GhN6OkeQV52AdoVeuTllyA9PRtxsfGoKipASkLienlBPqqKC65wxPpBm6xlvKWurkUtbzsq/u2y3NzoTbP2W4zM5OR0Gqe/iBJgY+IQHxOP3eGMiYymsdqBrQS9c2cEklNSUVhYAofDA62GYPvG4HB6ua8ClRUy9PaOoqysDgqVCQ53N/LzKpCVXYSiwmKppMdG7oRSVvvN5PjEN6tLy75WnJ9fU1xY/E8KuWqveC369va6TWX/BiMhIUERs2vX92OjY2mgQnATYncjMS5ByqT4RCTtpsFiJsYn8DmxVPU2qjsCCXGJqKioI2gzOjt7sG/fcZSW1kKltMBh86Ouvp2wG3D52jOoqZWjqLgWBYWVyMkp4okTC21D7a3stPRf7I6Ng7yx/sPVxcVdbU0t/3z9+vW7m2trFWa9plW8Rvemuv/zIVTCfjsWFRX1i1j2291U7gbYdwCH4SbsQQp7axqNVjr7sejNqUmpiKej3r5tJ2JjdiMjI4dwq6X+PDo2D7O5A/2DsxibXEZruwFl5Q0oL5dhaeU41BorKiobeQIoUJBfzvKfCm2b/FZ8VMyt0rzsf1E3N0yW5udT1fIpeW1tjLKl5ctvvPHG7QqF4l7276TwW9iMfyvYb++Pi46+EbVr13psjIAbSzXulkYhAXUDbNLuPUgi3FT2XwE3IyUDWTRU2elZyMnIRk5mDrKyctmH85GamokYVoBY/p44/nxeXik0OgfGJhbRIFOipkaOwZE5uNw9qKqWQ83vHTx8ng5djpZWI4wWH4pL6lBX14SC3EI68ygM9Xi/nZWe+v9Wl5b+dHEyENfS0HjDbbWviPdQWVxga6qvb5De0Ga8E3v27GFFjvxCFA9gHHvuO8olVALeABtSbQisUGxmWiayBdRw5hJuXlYe8nOL2WdFlkn9No/b1JRsGrME7NgZhdjYJOTmlEDWoOQ8PQN/cARDowvYu/8E6hrVaGjSct84vL4R1Deo4fQMwOroRmWVnCdGK1KSM9Aiq1/v9ji+nxgTuy5vqHq8qaGyNTc946ceZ+fHxHtqbW3NDgaDddIb/EOOlMS4yl2REX9H5SKGcOOpuI1yLPVaQhVgpdEorNr05DQJcEZqxtvKDcHNRX5OIQoJV5TZwoIqFBVUS1lcVIOSojoUF9cgJ7cM8buTEcmeG8cxKo/PVSgs8AWG4PYOYHnfSQwMz6OxWQ+Fxomh8WWq243GFiOOn32EsIOQNWpQVdXESlGAwYGB7xblF/x0z+7dqCwr/p9ddnV1a3Pzn/d193nFe9SpVLNTU1NbxGO5XH6X2P5BxO7dse6oyB0/jo4UcGNChioMOGSkfh2u2G4A3lDwBtxcjkcFNEsFeSUEXBkCXBiCW1pch7JS9tyKRqnXVlW3MJtRUlqHlLRcxMYno7qmDaV03e1qKzz+Yfi7xnDxypPo7p2E1d6NQPcExqf3ErodbQobDGYfRib3orndiDqZAiUl1bDZnF9Xtbf/bcT2HZgY8t40apWTihb5z9YWF6MMBsM9NrP5aQAfEO9fqWyIkA7E+y3E4kX8rujDURE7bkVxRIlmaY4lWDECbZTmPYSbnJD8a8rNEMpl381gf02nejcAC7g5uQVSaS7IL3sbbklRrQS3nM65QsCtaiZIOR10K+rpqOvrVWhgGW6QManK3LxyxO5OQUJiGgqLqwnSAo3ejam5/bhw9QlMzx8kYAf0Fj/8PRPoHpiGUueEvaMXU/P7JfgtrQZU1TTBYrV9obik9Md7EuPXjx2YeqamvPijOrXi2ydP9j/Y2NiY3N/Tc00cDwHcotebqO73/spaRkzM1phdkS9H79i5HsMZNjoyguqN5ij0rtLMnpss9dtkKVPfDZdlWcDNehfcfBoqUZpzaYRCcCtCcDkClZXUS3ArCbe6MgS3tLENGSY90p1m1DVp0Mie29SsQ3OLHs2E00hFylieC1jOE5MykJCUjmKOWgq1DSaOWiqdC4urJ3Dq/DWoCd/e0YeeoRl0Boel7zk7+7F27AKUWgdPEDN/t4ouXf89Vpz1pobq9avnj36lJD/vfxnU7X96eKUnvrq6ur20sPgHdrs9JnyY3psRHx+fFhGx4y937dyB6IgIxEZEgu4KsSzPG2U5kRkyU4T77p7LUUjAFWVZZFZGVrg059PhlqKIRqpAZAF7L+faEpZlCS7LslBuNUuygFvN2ff+JS/u2B/EPQd6sKe7EzI5wYqkc25uN6FZaUa7yk6gTm4daFVaUV7VgmSW8j0pmSgWiyZaJzpowgaGF7B84CQu3XwKLt8A9w0i0DOOTv8gtMYO2FzdOHPpEWgMbgK3o11pYsVou1WQVwRPh/OtUycOfD8nM/tnRTn531LKq3I4Kt7e0PAeLN3R0ZFtETu2/WPkzu3YFUHAVC7LdEi9nHkTYuMk9W4ADpXlkGolQyWVZTESZYZccxbhsizn0+TkE3AhjVMxy2uRZK4qpNIsAFdwzq2sbEINAdXUtKK0RYEYvwUR0z6kdbmxbSqIyIkA0gMe1KvMaGb/bdYRLs2VUuumIjuk1Og7CcnDrRe1LOnp2UVITc9DGX+3zuKFmwatd2Qey/uP4/CJi3DRrPl6xuDvnWCOQ2/2wOrswqc+96cw8PkqniCtPJkaRO8urkRiQiIevXbh+06T6q8K8nL/KtChUy4u9tz/e3+Xili8iI2OHCbcn2/AFX1XZBx7bzwBJ0THIpElOjE+NPf+at8Vys1ERli5vzYSEXBhDgEzBeCSgkoUF1a903cJuCrcd/PUWmwZcCDWY0We0YS6Vj1KjVak9niRNNyFPczY2UHEzw2hzuVjb+1gCWYaOqlGLzQmL7SmAHRGP3QmP7TmANqocqO9C5kcu4rL6qWS7aZBGxxfwvLBUzh7+VEMjC2id3iObnwRfZy79Wb+Hqpbx9+3eugMjNYAFCqaNr3jVoOshWNYKh5/5Motj8vwj8WFhV8zG+pt+/f3bvu9Wz0rLCy8N3Lnjqs7tm9dJ2AJ7juAqWCW5t2iPBPu7rh4JO5OkNQrwIoMGaoQYLGYIfpuCG5uaCRi7y0QYxHhirGolHBLi6oJt5rqrZP6roBbKZYklRqUtmpQ2aZGUqcd2Q478m12JPT6UOx0o15nQ63BgbyuIHL7uhF1YAbJ8xPImhyDgorT0FTp6Jp1hCqlpYtGqwsmR6+UZmcv3bcT+fz307MKUSSWRzlaOb1D8HSNYnH/UZy9dBP7Dp+ByR6Eg6bM7u7D3PIhGKw+OnI/RjiODYwuQssTqk1hQm1dM6tTIU6fOr6+MD38s7ys7G/r1fKxxTFvTnNz81YeYsmN/06C/TYyaseOT0du34ZIwn23eqN3sfdG7cJulmah3KTYeIJNpLFKonI3lh9ZnoWhYmneGIc2FjUEXFGeC/MKqdpilBBucX7FO4BLalAh1MvyWVnTgkKNDtUNClS0aFCs0SOXYMvVZtRozEjsCyBqZhBbV8aQ0x1Ald2NJqMTLXYv4Y6gYHoCNb0DiDuyhMbeITQH+qGzdVG1PVKanX2wOPultLoGwtlPJXeilNVDwC4oqmIvt8HtG2W5noKNpmz/kbNU72kcPHIOZhuBdw4Q9mE4Pf0wWYPwBEawduISVd4JJc1dW5tOGv+OHTmyPtoffKusqOgHiqaKi0G3uo7j11abzhYfPvS//YiJiSzesW3L30Zs24pdb8MNqVaAjY9l32XujqN642ORHJ+AVMJNSwqpN+SYCTdcljeUu1Ga8wVcntlF+UUsyaVSWRZwy1iay6jecqpHlObyqiYUqDSokLWjVqZEHccgGd3ytn39+MBTi3j46BgyCLhWqNfqRspwH/ZMDeO+kwvIHx5GVbAXKqqrvnsAJXMzqB0ZQ/z5NTRMTKNhZh7tA5yP3SGoNm7tHUNSOjqHpX0OzzCBDdN5d6GcM3d6ZkEINoE5PUMs14sYndiLydl9OEKYZ648yp/ph6tzEN19UyzpC/zZAEu4H7PLR9AzMAMNvUFLsxplZTVw2W2YnRxdL87L/4XZYP4HrbzWuLjo/u2W8ejIHfqd2x96cyfhRnLY37WTYOmWxWKGuG8qXqwzx4p1ZpZk0XMTEthzhXL3IH1PMjI2SnPYMb97pUqAzc8RrrmArrmIqhWAS1DGg1YWLs0Cbjldbnl5A/LblKhobEcN510BuJ4jkaxFhwaOQfneTuw6MIbbn1zBB59cxc7Dk8jr7YHM1IE6dwAp85PI3DuL7JV5VA+NoKVnCBqWYRVHoaaZBWRcPgnFxBysHYMwBkdZikcIZ4TmakR67ORjAdflHZWUK7IjME5X3Y/6RhVy6PhzWHms7n50+MfQOzDLWfsgJmYP4Mipyyzlp7B04AQsri6W8l6srp0m+AGYqW67oxvnLz3B0cvJEUwjAa8or8Hc5OCt+cn+b+RnZbxRW16yKtbKieQ3V8ZjoyNWdmx9+K1d27eD5RnSnCuNQlHSYoZwy6GLCPFUroCbiHa5HBaTEW0tLWhr5lkeVu8GXKkch0uyACuVZQlsMUoLBdxyCW45y7IozQJuRXk94bahrKmNfawN9SzPDTIVZGIxo5kzL8ehFoUVLUobZHoX8kYGsPPsIv7oxSO46/oBxB6YRWl3H9rYext7BpG/bwn5q4vIO7iCxtFpaNhTjYRl6hyCyT8CU98kbByZtAurUCytwNozgY7gBM3WmJQCbGdgAh7u83RNwts1JaWALva1sXznsPzKCMtJ9QZ6pzE5d4CqPYz5laM4cPQczl1+gifCCOyuPoxN7sX5K09I5sxg8kFPd280eqDgeFdZxRObx6i1WYbl2b6flxZkfqWipOhGt9ciRrA7BSex0CQB+3dCuPeeLv+VioqK6vCu224rzsk4vjt61/q2h7dI6o0m4JgwYEm94XEoIU5kPPtkObr8fpj0ehxeW4PTbsfepWVCLJCgCtWGlBtSrQArynJxQZEEV2R5cQUqS2pRWVqHKrrYyooGlNQ3I6+9DQVtClQ2KzjWCMBKNAgFy3UosdJJzw9CpnHQBTvQTjOkYNY7fEidGsNDZ1Zxx5Mn8eBjJ5GxdwEtwUGoO/vQPDAG2egUZCurhDsCS8cwDEPTsBKufnwemtklaOb3wjS9hIZLZ2Gc3Qvb6IIE1dc9BX/PDLzcSknAnuDk2ylgiz6dz2ok1C2WPm2E6euexMjUKmYXD/F5Yzh14SaOn7uGsakVWGzdUr82WgI4ee46hieWpYUW0QJa+D5bmlXIyy1Ceno6nn7i6lsddvXX83OzP9zaWNtJ2PeGsf1KNDZWCtXfNtTf3+uy2W7J5coc6RsiTvb332VTyl9vrOCMmBCHHVu3YBdBC8hCwXGELCmYkJ02B3uIA3XVNeh0dcBqtuKpJ5+GzWLBtWvXCduJqfFJlBQWS2V5Q7mhvkv1FpUSbjnBVqGKcKtZkqsrZCiRyfHQoB07e2zIMGiQr9GiiCarWK1HbSu3VjseODKOP3p8VVLvnolBZFLBzeZOqKgClcELBUeiWpqp1H3LePix07j3+UvYdf0UCvYuQe0fgsHHHts5ClP3BCyEawtQ0RMLUC2uoP3sKWj3r0G77yB03Br3HoC3Z5oz8bS09XbzcTg3IAt1i6/FY7Gvk4oX41YRK1JmThGngBY67y4qeBRDY3s5a5/E0VNXYHP0SFe5+ofnMT69Ks3XYkFFGLNrN58ieC+rgwUtHAcF7OKCcmlJ12ZUrk8O+v8+Oz3l9dKikhtWq2I78UmlXKWSGxZnZkp0Ot1PVe3Kn/zaiTDs9W61q1r+Qt9ch9aaMmSnJkGYrQhRssMqrq6ogN/DA8kyOjs7i/b2dtgtNDpV1Qh4fCzZZnzohQ9hfnYOh6jsrq4uGOh+hWIV8nbUV9dxDCpHRWkFKkoqQ4Cp3ppKGWppZqpkrcgwqhDR58TOwQ6keBwo4NxbaLSgwGRDOU1VqduLZo0LMYtjiFuYwJbD85Cz36lY8tQcWdQchdTmINS2HvbgSSSfWMOWpy/i/tcfw57r59C0vA8mllebdwyWkQW0HzyE9kOHYJlahu7AIWgPHYHizCkozp2GZWEfOgfm0NkzJYGWYIeVvKHgd6CHIIdKuYA/Tmid0tiVmc0TmyexmMcdLOVWegJf1xid+HmcOn8T3iBPNlc3e3Y3R65FKLQuKPkenezhx09eZoWwSsuxDQ30JLVN0u1K2ZnZOHVs7z9btC2fSE9NPbswv/RVs8n69+Wsri1N8q+Fsf5qjPldSTZV87f0zbXQMdvrylGYnUqjFTJdolyLsUgAbpI1YnJsHPU1tTh1/KSkaAdhux1OLC/vxcrqCsbGxvDEY49L++dn5tDe2kq3XBYCXFoZgksF19E1yzgWNdS3oq6+ha65HSUs/3l2Mx5Y7EFqoAOFrBY1OjuKHZ2oYEluMXaihQesrrOHjtmPZpbihMMrqBydQHPXCDTWHmhtvcxuqDr6UTe7iIKLp5H64SeQ89JjKLpxCa2L+2EjLMvgHPQra1CdPg3d8eNwza3CcvAotHysPX8WytOnYJtehqufpZqQPQQuqZpABXTPBnihYp48EmBuRQ/v8I9L5k1t9qKothlpGZwk2JrEiphNgA6OY5CufC+N2QGOYDcef15St54nrN3VK6lcLL+2tVklszYuroLRcNbwd9ltTlbAUoiPAAX8QWRkZCE7Oxd1dfXXw0h/Pfo7zBWmtvofaZuqoZFVQtNYifb6MpTnZyAhJpKK3o646GjJSZcVlyDoD6CpXoa9C8vsyQb09fRC3a5Ea0srbt64CZvViqW5BZoHuVSetRx/ygm4vlbGF1ePWp7Z9VRvQ60c9XVyNPIsbW5Sshdp0CxXo15lQKHThVKbC7nBIHIDQdQ6/Khzcfb10D13CMBBKHlQ6ntHkL62gj1njyBr7QBaeqkizrlG54CUZvZeE+E0U6lpzz+CiM+9hMRPPo+aa5dgWjgANx1xJ/uhk3Ata0ehuHweeqHqw0ehYdk27D+EThopT+8MfEw/wfrFVnrMfULJYYVvlHGRkmnzhVKMYmq2lCKe3MJsiV4sbzNy65euafcPz0lj1QHO2jMLazh49DzUug4olQ742FImZ1ZZOc2Q03Dq9A5MTC4SqJwmtRYpNLlpqZniTpaBMM5/PTwmlUXXXPVLjaxCgqyqK4OyvgRttUUoL0hnL47gjLxDGp0E6JLCIrrqVng6PQgQgJWKPXhgTSrdPpZuRSsVyZ48NT6FMY4unk4/Tp06jTYCbG5og4xwpaxvQ3OjUgIs4LbItaE+xDfUrLSi1tKBEi8PiM2PnJFhRBxZQk2wDzXdg2gMDKCds6jGTsV2j6JsehZNg5OoH59Fy+gslEMzdNBjsHpG4fBNwO6fgJ5Gqv7MGVS89hzK//g1yD72ApRXLsFCBbupVtfYIjSnTkFz9CiUhO0Ow30bMLOrf47umY+5lUo4wb4NOQxaqFhy5ULNHMOkeTs8h5usXShmq0pOzUIW+3YzTZbR4qd6e6Tr2bOLB6Vr3HPza5ia3oeB4VnpJoe2NjOmZ1bwGBUv4/gmLqHW1DSLy67rDQ0N7xisfysMbVULLRV56+21xSzVBCiSgJsqOPpkcBZOiMKuXaFVrjj2Z/EhsjyWh6YGGaYmplBVUYlTJ05CQ8UW5RfDyj5q0hvhoAm7fv0GtBoDnn3mOZbuWexdXIWqXSuV6Ca60CYCbmwWKtZKZ3dLG9+Q0i71JXE2q/QeVPh6kDsxjoSlGeQuLSB3cR5NQxNo7RmDomcEuo4B6Di7tveNoZnzbyONVOXp42ihCrUTS3DQILmCU3AGJtHRPQP77H6orl5B/cdfhPLsedhZCu2Ty+gYmoeH6STsEFxC7BNwZxHoY7JH+7j1CuhhBUt9OVy2RU9+W8VhJYuFFAdHNZtrEHZWGJtYUbP3StevxeXNpOQs9u1CglNDxynBTOBdNIbLe49ijWVcxZI9wdfWPzAFk8WNlhZx7BSSQPJyC79/8eLFO8IY/+1I2r3LX5y1Z72+OAMNJRlorsxGS1U2tzkoyUrE1m33Y8vW+xERuQ2RkQTNPr2bY1R6cqo0CwtT1d7SLo1LPZxNV9iXdXTEAa8fjRyHbl6/ibmZGSwsLOGZZ56F09mBJRqgRlk7X7AaTS0qqjcEuJWzr7j8p9K6oeXsqNCyZBGykn1K7u5BY/cw0g6toGp6DtlnjkM2Po3msWm0s0SrusdgpGIsVK6NUFt50skunYOSJVhPpVrZ/zq6RB+dlbad3HZ2z/LrOXSIfUOLsM/vJ1SxP9RvfX2E2jtH9S6ElRwCLLYig/y+dALwOaJ0C8BST6aCJTW/DZmAeRIKwFZ7H911nwTaTIOoYY8Owc5EalqudKODmuOhWCQRa979g9M4cvw8Dh0+g7Z2IxpZ+RoIODe3+NNhhP9+lGXEbN0TvfVwZe6eN6vy9qC8NhVpvZxrDVnYnb0L9yY9iDvvvgN3MR948F7s2PmwpOioqAgkxMcjPSVNWsmqrayBh863ob4Rh+hQVe0qLC+t0n072as1klEw0SGfOHEKLqeXzzmOubklqDRmtCtMhGumeq3SNV6pFzEFYIWuExojXbPJT0MVhI6jh0KsVo1MoeLgfhReOIWapRU0zy5DzYNhGJqFncpzU7Vm9jkL51HD6kGpBDuoULcopUJxBOslmHdyHo6ZfYRKJRO4v39R2ufvW6CCFwhyXtoGuT/Qy68JXewLcp+vW5RvseWJIhmu8AIKIYuVMrFiFlJy/9tKthKylZAthGywBGHgRKAkVDF67U5MRRL7bCmnDnFclGornJwgNDorGsSyLo1XZmbOsTDC/7MwNxfFNhqKPpZ2QI2aE0bUH9Nhz3gxtlmT8VDZdtwecx9uv/ODuPOu23H//fdg246HERm1A9FRkYiPjUVGaroEuqq8mj1Xge4gneHAADRqA65zbpZx/vV0csSyODA5NcfefIZnqZnz4GMIdg2ii+VWLxbuWZ7bOT6IxY12Klmp80iAdTwA4uqQuIBgcPRCL9I7BLXow0fWUHnkEBpOHIdi+QA0HEHMo0xu7VSim+kcnIVLqExS7oyUPsIRcAUs58ReeIaXJMAbKfZ7eSL4mT6xFbDDoAME3TW4HILdw+dKz2NFCLI6sIJIKiZsl49egIBDa+BMsXWHSraALFQs1GyydEuQReqMPrTSjxQWVSE+MVkCnl9YLsGVNSpQVSVDWmamK4zu/zxKjuq8KYeUt3YcUiDnlAl5J2h8DrcieakcOxypuK8yAnclUtH3UtF33YF777sb27Y/iKiYHYil846PiUZachrEXRziIkNLYysN1zQUdNvTM4sYH5uAxepCkPDlchXmFlYxODwGj68Pj4lFFGeQZ6xNUrG4mK/Uh/qwmm9YwDVwFDLygBgJ1+jsg8ndDxNVYeUBtPRMoo1wW9mDK65fhHz/QbQePgzz3D5Y2WdtY0vwsKQKwBuq9fUT1sAi/Ezn7D6WZ9FnQ3BD4KlWwhRKFfsk9fYvST8jMigA8/vBPv4OofbwydDJfi/m4w3AIqX1b7YQ5wZoCTIN2LtAm6whyDq2JFGeNTzZVWobmmhA84vKkZCUgpKyahQVVaC0tPQ/Nlj/ewC3fcC20PJowwElko+rkXhCi8jjrPnHDKg8o0PZgXps8abj4aYo3J32MO548E4JtFB0ROQWxMfvIugIxEbvQip7tLjYX5xfSsfcyvmthz1Xgf1rh2Ew2jA8PIG+/mE00mjtP3iYZ7BLOmtFH1ao2YOEyRIp7tIweMPXeINUMJVL0AYeDOlyIB2q3TcCu1jQ4MEz8sDp6aZblldR89g1mPaJ8ec4bKPzsHA0sk7thWtkCV7C9YZV6p5h76U7FoBFDxblW+z3iTIcBijgdg0uIRiG2zW0zMeEHT4BQiWaP9/FKiHmZMJ9x3CFAfNEdBOyW1zocIcgb5RrScWc6QVgPed+nZEp7lJhj1YqxeVImlCaLBmPV2Fh2Y+Gh4fvCWP7z8XwYvNW9Wz1/9AtNqHhYBuy11oRd5xG6KIWCVTz8rNelJ1sxLbudDyoisUd+Vtwd8KDePCh+6jmh7CVit5J2Lt2sXxHR3A4T5IuihcWl6OuoRl6g5UmoxML7JuyJgXWDh3jeNBNN81xiW9C3m7FoaOnMb98ULqrQtypIa7dChVr2If1HDeEkkWZFkq28iA5ePDswmB1DMLMscTMrUVcaOiblpSrOXIcBoKWnz0DG9VsXV6Dg6OIa2IFHYMLcBGwKNmi5wrIHqFuwg8QoADbM7g3BFPAJXSxP7QN9Wcvtz5hvESpFtWhW6xyTUiQN0yXuIrlFleu+DpdIjmrSyoW16ffZbpCgAN02h5ohf9gu1Kp7fQpHCEJuLFJLT7u8+Uwrv9a1PZnx7SMlrzWMFH2S+1SLdrXWiA7p0f2CRVyLungvmqD+oIaxrMqJI7m4W5fIu5uisCWHffj/gfuwj333o4HHroHW3c8hEhhyAg6iaBp7VEm1qar6qFUGdDTM4TBwTHUNrSjgTOeuFToC47gzR+9ib/79jdx+eoNOmqOTAY3TZaHKvaHlMsDIUBLF+/FnEmYAq5FwGWKx2KfmIVdLJfCcLlGl2HeexjGfYfR/vSjsC+twbL/KBxz+yWgG6YrZLAIbAMws1tKgqbTFqaqm0oO8EQIivGJX4vn+pnCZPnEiRJewhS9WDhpsZUULRZBqF53J2dkVhtXuB8LFQtnbRYlmqOSnu9TTBEamky1VKYJuN0iXaCQ0UUX5BVdCKP6r4e4V0vRn1dbP5r3WttcxS39SgPMR1pRdIQW/bIR+ccUUJ9lCZ8pwH1dKSherUFceyIeyt2G+4t34M57PkjnTUP2wN0ctR6UQMfERiIhYTctfj7KK2pQVd0oveB6AhaXDK12L7773W/j77/zLXzr776JQM8we7GLRotv0tDBEh1WsDgQTAHXJg6QACxAiyR0syh7fOz28cAK08ODvmGu3ATjpnrNB49Bc+Uy3JOr0nwsvi9SGC/JXEmAQ2W5i323lyW5m0oNCuVKJVkAFi461KelpUyx+CGtUb8zF29kZzAMWKhYXJeWVEzAfL2hsYntRvgLS0BavhQlWtxIqBU3FhKwQmmhbzHQQbegoKAgEMb0mwnFQFFx00TxSy3T5b8wrcpgJNzGkwokrJQjcq4YhezPptNuzp0mpCxWIKEnGw80x4T69H2hPn3vfXdhC2fqXVFC0TvZr2ORnZ2H8vI66WOiArAv0I+5+VW89tpHsbqfSuOg3y7unqSjFgv4Ynnv8aeex/TcQZjFGU+jJQzLBlgLDZdZJPeLC/1O9j63UA/ds5h5hZo3ZtwObp0s3x29Yiae4ddiIUSMT4TMfiwg+9mngwPzVC4VPLgYAiygiv18jpiDhZJ9PeFLjQQrQG/MxFJKoDfWq0P9WEDuENWFkIWChdEy28OXFqleAVhSMD2IuENEzMVCwWLZsqyiDmVlZSVhNL+5EAasfaCgsHYy72nVcs2/GPc1IGupFCVH5Cg4o0X+TSvyz9rRcMUL40Un0o+1YksgC/e1xeAeqvrOBwTo2yXn/fCWkKJjYzlLJwjQOdJnhoWaW9sMPAC9nInFqpZNWvhQiDJFR+3tGsan3vg8Tp2+CpPoWa4QSKFiO0FPL6xRzXzsoTKEoeEBdQbG4BIHWCxuSAscAjZNEEGIq0cbubFyJS1PiuVIUX7Zn7uYAmw3tz3SY9FnZyS4Yhtg7w2pN3RNObRsSRVzG7r6FFLzBmBpASSsYpEO6fXz5HSG1CtKtLjBT1KwOLG1jnAPtvDYGDknV/20p6fn/jCW30p8QD1Rli2fKnq8ar7oZ2lTuWjbX4/6U+0oumxC4ikV6m50o+6SB+4rQyinOYsaKsYDBpbv0p24c/u9nKXvwH0EvWXbA4iLj0BqaiwzHjk5mVJ/bhQrXOG16VZCdrh7EBQXFIws01Yvy7SPfZhnPE2WULLV1YtF9tcLlx+nW6UqCFesBbtESSTgTqEkHvAOoSbCcNMAiZQUS7Bu7hfAxSqVgCwB7p9FcEjMu2Ila15KAbqLgIV6peVLaUWLz+fPSsrlY2GqJCWH4W4AFyreWPzo4OvqCEN2ErCD4564J1vc3CcpOKxiNVuTTrQnFUdHThcCcEFR6VfDHH77oZ8uzamdzj/rWa5fVe2r+YXycDNKTyhQeM2CVKo59TEfvJdnob0RQOZpBSKnK3GfMw331EdJ8/S9sQ9K/XnPnigUFaagsjQN+TnJyMpMl3p0g1yDFrpHtd7FA8OS6+mDv3uM5drDHhy6JdYsLqoT8PLqcR7wKazsOyl9zFRyrX6WQh7Uqbk1TM0fCh1sguggXEmxAogAz/IsoAolC8Ab2TUsXDNhvguyACtAblxVegeugLrRe0OQRYne2IYWP1hNBFi+Nqk8s9KIG/jEbT4WRzcBd0kXIMSH5sQ92VqaSzEmCQUrCVms2RcWlf3blwh/m1Eymx9sX6l5U7GvDoajbWi4YMTu0zqUPtmFgqs8I88MwPBEP3Yvy7FtnwwPBrJxvzkRD+bvQHzSTgLeg5b6HKjlRVC1FKO6JAN5WSnr5RWVaCLoVpVFAh3oGaWSOzkqiXFJrGwFcOHCI1J5Fv1439ppQpjGgcNnceLUFUk9L3/o4zh8/CIBh0qnMDxC0dLastgK1RK4KMsCvIewvOJrgvVzn1CsBDesWEm1Aq5QKX9e9GBv13hYqUyxfXcK0OLfJWSx6CFAiwUPl6g03IbWqcUcHLpDU3zKQseTWKt3c1RysQ+zTSmt0ipWbm5uX/iQ/98P12pDtGyu6ED9SsX3zIdaYD7WjsaLNF6njSimmrMudyPyrAOBR5dQclSP5MkipB6qQLIqhYAToWzOh0VVDru2glkJq5pwa3LXi/LSblVVVP5E3qYhZAdnY7E+TYfJgzA9vx/Hjl/iTNyFs+du4NCx81ToGE6cvizdJ3Xg0Dk89/yrPMijhCWATBDUtPRJBqE6cdO7h/s3gAllBlmeBTRxeVCkgCv2h5Q7HdovlMx9YitmXvF7xQnkF/1cfB2Gu1GyN4yWtJUAsyLxhBTl2SZMISuRKNECsoArbusRCtZSwVqtnSq2ceqQCYNVGT7cv7uwTJdGaPdWL9furfi+/kgL3CfVaDxvROMjPsSfs6D2sUmUHm5E7l668Nl8POzeg4aqNBhaC2BRlsKuKYdDV8EUkCvQXJfzJ0lJUbF5OekDVVVVf9auVN/S6uws1Z0s0QECmcDA2DwuXHyUpqufyr2MM+eu02CNsFwfw8jMPnQQsIDgodIOrJ3F1etP8vHY22C83eMScKncSuVXPJ6kmRKzbgjmhnIlyFS9AB1Ssfh58Rmn0M8IwOLf6QyOSUBDoENLlyJF++gQHoEKFuXZQfWKW20thCvSKFoQ/YZW54SOKg4p2EyDVfHzwcHBh8OH+XcfgcXa7dXLpXOa/XXfUR5qROdJLdouEDD7dNVaPSr31yJ+Ih852hRoZDmQlaehtTYb5vYS2FVlcFDNNmUFVZwt/ojpRnwwJ3OPor62/CMt8tZfKLQWqtkplbXugUn0Dc3gyrUnWA6HqN4zuHH9acIdkQ64OPiiT1+89BgOHT2D0ekVLO87EVIglSy+Lz1HwOsTJTxUfgVIqZSHFbxxh4eoBKIdvLNvAzDLdfhk8hBsJ42VKOGdgVE+Fu55mCZLrGgNSB+PsTu7YbcHYbUFYLb4YDZ7YRA35+mFelmiqWJxxa2ouOwvw8fg9yvE8mfzUvlk+8G67xoPy2E93oYmwq1frVlXDJad0MoynlbXZ/1C25gDXXMuWqoy0FKdAau+HEpvFXY0Jv7NBycLxB9PefdN4n+Un5mcXl1VfEIub/kHtc6ybrR5pBvRu/omWFan6KofxTBnXTeV7BZq7ZnAzMJBqaz7e8eo8qt47LFnqcIxqvqUBF98+EycAGOTq28DDPZTqQQt1C1gS6AFYJ4EAqhf9O0wVJ8AS+WGKgO/poIFVK9w8z6CFUm4zo4BludejkliFYtGUVKvXwIs1Gswiv7rCI9JVsjbtCjIK3g0/N5/P6NnsfZ+8/66kar9Vd9U76uHdrnu0Y0/l9BtK0q0tGWf1jdlvalvyoNBXoCmeRUCz45BecmAzOGS9YcsKZ+5fb6oVvpl74rCwsI7mpqqjAa98k9NFtsts8NDZx0k2AHCmaSx4UGVDvo4nnrmZawcOMaZdhKLS2sYYmnfu+8oPvnxT0tQBehPf/Lz0k1wAZbeIOH5CUpSKk+ADVUHJZWHevqGcsXvF7lRCfxinwSWFYSO/t1bl4fumeOfuGVHlGib6L9UrijPepZlPRWsp6nUErBaY4OsqZ1jZM6/fw/W70tMHmx8yL5Sbx1fUz0Q3vV2BF1l0TZF/l7riPKfu18/gMOfYF99ZhzjLyyj9ng7Hp4v+seHHHEJ4af/SgjQrc2VTSa96jWny/5LZ4efzpoHkeNVR3AYqwdP4OLlR3iQh3Du/DVcu/KoVJoPHTnNcn5Suq31qSdfkhZSxGeHgwQkUvyFn96h+XfAvV2KxeeL3/la9NzQ/ndKtFc4dgE1DDZUommuqFxnJ80Vy7ONaeE0YLJ4CJkGSwAWDpqlWfRfJfuvMFilpaVV4bf63g/vSyOPtD3dD83HF2H/yD7s/dQlxA/nIXY8D/dU73zVuJhxZ0RNgvLuycq4uHPt0l/IeVd8QK+szHQ7NGc9nc5/cnmDnDl76V77MTA0hdGJRTz2+DPo5+PpuX144bmXMDAyi8HRORw5di7ssCcIl0olwDNnruHmzWeoSALsHuWoxr7Mcu/jyeHn2CZS/NWAoFA4+7lPqFiCy+eLysHs9IvSPCjBdXPr7GDvpYIFYLHIYWUPNhKuiQo2ckIQChaA1dI6tAn5hSU/DwQCD4Xf33s/Jq66DMM3O9e9z/ZC9dIwsg+1YUsgFZH96ciUJf2L8XLHF4uPt92KnSh966G+jL+IO9z0r6ra0F4WHfRql/xe1//y+gPo9PZIS6EDQxMYGpmm876G/QePE8gwrl57BGepbKHqAAGL7B2cwrWrT+D48Qs8CWY4kl1AF+EGCbuLUAMS8FHCZd8XahZunCn+4o+oCBJgUab9g+y/A4Qs5l/xCcV+6UNr4kZ4kWYrzZWlkyWa/VdcWOH8K+AqOf+Le7EKC4v/cqOdvS9i8aJ1u+Oi7kedV80YuOlG3lwptnqTUGpO/0ZLoPbWwkuncOATj0D9ch8qz6qQNVvzk/je4puRyzXFuyYL425b/NX/5aW2Nvdhj1Pd3+Uz/7A7GIDX1w2fvw89vaOYml7CwsJ+lucXaNCE+gQYAW4MgzwJ9q0cxQAd+hrL+EvPv4KB4RnMzK5giI69hyX5wNoJrK2d5u+aRLeAT/X6aewCLOHiVliRHT6q19vP8aiPcPuoYI5G7L+SepkmK5VLuCZzh6Tet1ewWJ7lrTpk5+Y9En4r759QnGpeNJ1X/Kj1ohL1dN0ZfRlfGL/ieaDhuaF/cHxiDZY3DuLAi1cw+/I5GF8ehuyqBUXLsvWoody3YscKR2oXpf/O51dCo6zodpgb3+x06Nb7egKE3CuB9rF8zy+sIkhFBrtHCGkIgeAQHn3kSVy+dINfD2NqahkHDxynQkfw4Zdeww0qu5tqffVDH5FOjh4Bl4rtIuCgOEE4FvnZcwNiBmdZ7hRtojOUbgJ2EqxD9GAaLAsVbDKHFCz6r+jDIQWb0dDYhvycnP7wW3h/xegVXbz2QvN+/THZX8tHcvIX31i83fNM9//TSqB1HxqF+pUFmD69H9ffeAnnv/AUHB8ehf5ZH4pma2/JDrd+OqNwV5zReNu7/1DKB9Tq2ofnZx0Tvs62txwWOYYHglReD/zBAY44g/AFBqlAAp/fhxeffxk9HLuWlvfj1ZdfxTDLdO/ABJ54/Fmsrh7hc1bxpS98CdMzqwQ8hl4+V0D3U7UBqthHQ+fzDbFiCMD9UnZ0sE0wxZ2SYva1O8SI5JUAi/FIlGexRCkuE4oFjvKKWpSXF1WEX//7Nt7uP/3nTee9l4zwPe2H/tVRNHxoDNqXZ+H47D48+oXX8OSXXkZ6fxHyHHlolWX+pKY18+s53vwTMQuV3sTJwreNSp2s6HxaRty601J/y+dsWx8fCmKwbwABqtnn60df3xgOHTqBUdGrz13BhbOXqc4hXLxwFTduPEalD2J2bllSsgDbRWUL1Qfo2P0BkYTL3utl7xXpYe8X6nURbAfdvcMZ5Pzrk9JMB20wut4GLEYjMSKJBY6CgpKfTU6+jwzWfxTWs/LaunNNP++8oIHnsh7+JzzoeHUCrS+Po/3FcdQdM2OnKQGNljw4zRWwPemH4rIZOXNViLKnvZi/1hglfs+2bdseiIjeOpCUHP3dgoKk9Zry9HWLum69z2dfH+rtRVegj5DYp3s4Yq2sMQ+ir3cYTz75JHvucfT3j+HJJ57B3r2HpRIuyrqAGiTgEGQBeICq5ZhGoJ3h8uwkWJESYBsBM02iNBsImBla4AgZrNY2PQEX/nfpjf8hxcA1XbL5XPOF+vOyH3ovaOG/bEDf453wsWznejJRYEr+hkGe+03fmmP9C3/zZ3jtrz4L+ysDsD7Rgar5hp8l2TK/siVt67e3pm5986Et9761O37nL6rL0tZb6/PQWJUNg6IK/UErxocIuKsXfl8vgoEBTE8v4tSp8xibmMPY2DRe/fBHMDa+QEM1SAUTqlTiByS4G8rd6L0CsLujGy636L2h0mwj3FB5DgEWKQGmgsUKVnOLWixwSH9S8Q8yRs6qY+0XFPuVF+T/1EFF+6+a0NaX9y+20arCs2dHYo0vDr819OljmPriObz6F5/B6//jc+h6bQQ9z/agbqUJMX2ZiGlOQnzc9vXmmkzoWgqhkOWhqjwNAa8CWkUlAi41pkZ60dfdJ0EW/7GIyBPHzuDmtcclhQfYvwOE65fgDkimTWSoNIveK+B2heH6YbN7maHSLIyV0eSWyrPYbsBVKI2oq29FdnZGb/jt/uHG4uPW7c6LigXzJcV3+5caTop9p2/2bht6vu8tG3u06fVZBD52AHNfvIAX//wT+MhXPw/PKwTyXC8aDzSjursUutZCmBTFaKrOwO64HYiO2Y6k5Cj0d6vW+/zydYe5BVOjXRgfHEIvoXYRajeVKzJIuF6fcOMhRy4Mm5ePOzq7OXsLuEG4OvzvAuyBzeGlej3SPeEGo1NSrlZnZf+1SIsb7QqDZLCqqqpKpTe5GbfddvCi8aGeM0bpnqVHHhm9b/SK9eczj3Rg/IUB2F8cguOTy+j88CLmv3gRj331Jfx/P34TxjNONFgL4daVo7kuC7XOQkSk7cC2hC14+OH7sDNiC+ITIkFDBr2mAuP9NqYHk8MDVLUwZQI0yzMBixQmbeOx18PeS+V2EKzbFeCWvddG9YoLI9YOCbDZIpTrgs7A0iwAay3sv6xE7ey/+UU/Hfd4fm1JdzMYYqTyXdF92XtVvz5+zY6pR90Ye74HrudZPum4zS9P4cRXn0DDYDUshiJ0W2uhMpfAdEkP3VorMqbzsTN+i3Tr74MP3YMdOx/EHiq6pCSNoKvQ7VZirMeO2fEhCXSQo1WXKNHePnioXJECrltc+JAyAJfDDwfLs51g7YRsNrthonpNBKw32CUFq9RmqTyLD8cX5Bb863+mYTNCsfiM8c7pq0ZT4Krhy+4r2vXhqxZMPurE+HMBGrIh9Dw3sq5SZX7drSn5uc9Qif6jNlz45DkMvjYJK/u5/qAce0wZ2JK+XQL90NZ7ERHxMDLSYmBSlqLTUAOXloasU4+50W4Mcp72dXbB5+WWfVcA7uwIhEEH4CTgDbiWMFyj3s50QKe1QsvyrCJcBdXb3KQQButy+K1sxr8XFy8G7li8bpEHrunecF/T3Oq/asTs424cvOz64tHhsnsW++UZQx2yRyc/sQ9/853v4PyXnsTy6wex8PFVeJ5xo/lQI9I82YgZyEBE+s71lMQIWNpK0Ouox7hPjglfO7ymegRtbZgc8GCwl5A9hMuSLLKDChYp1Ot0+GCzdMJM1QqwBh2Vq7ZAozJDQ/WqFCHANTUyYbB+sze5v99DLNgvXrfX9d/Qv+K+rvmXI1edU+Fv3Tbz0flW+0dG4H59Av2f34vPf+OreJ3Oe/qVBRz95En4X/ZBfkKOgv5C5MpT4TVUYMQlw5S/DXPdKiz0aLDQq0afvZGwm9HrMWOkxw9fhw8dTi9cNFZO9l8XAQv1GqhckXqdTVKuBJfqVdJctcm1KC4qJ+Sa/PDL24z/TIiP5ixet+Udv+5++x6nuRuu5dnnujD80Ul4PjED8ytDGPzCATz3N5/A177xdxj6yCIufP4s+l4bQKkqB4OOOox7mjDma8BKXxsWCHmRkBd71Fjs02KoQw6Pvh4Buwq9Xhs6HU4aLBfVK0qzAyYDnTPBSkkFq5QGCa5Qb+iPpBX8+OjRo/+1TxFuxq9H53n1a/4begxfM2H+aR8mXhtD72eXYXipHz2f3osDX7mK7//0J7j65adx5oAX+wbV6LfX45WLdMnaMqhlGQiaG7Dcb8RSnw6LvVoJ+JRPgU5dHdxGGYIuI0HbCNgMo8Eq9V21yki4OoLVoq01lKL/5ubk/nH4pW3GbyIWHzFlDVwzPNJ9QfnTAEGPX7di/kkvJj7CmfdTC7CxdPe8sReHXpnHX3/+Bv74pWN4+vQonjnOPqsuQlL0TiRG70BpTgrs6mpMB1i6u1SYZy50qzETVMNvbIBFUQOnsQ0dNj0Maj00Cp30x2nUCi3a5Wq0tWhQV9uEzMzMU+GXthm/yVh5xJEwcE1zpv+S5gc0ZZi4acX0o3bMvTqM4Een1vuOuYY/++Kx/V997ez3/vzj5/GVV8/gtUeWcGbeAVtrAZKitiJq+4PIT4vGZKCBKlZhLqhkqjBLyHPMXmsTTG2VMLTVwaxuh6ZNifYWBVqb2iBvbEdVWbX4A6/u8EvajN9GrN5wRQ/d0K/2X1Z/P3hFh1GCXr7u+Bz7t3Sd+cyiO/Izzx6Z/9pHz37rTz9yZv1LHz6Fjz26gisrPnQby6CtS8fnnhjHjFByQIE5vwKzfiVThRlupwNqDLhaYWypQHtDOdRyGQE3oam+SdxBifr6+kzphWzGbzdOv9C7bfS6aTRwRfPnx65YisK7344r454HPvX4weBnnz3y1198+eT6H794jKD344UzI9jbR+MVJFhvG7NV2s55FZhhThP0bFDLrRoj7naY26ogqyhCa0MNigryv9/f3/+H87+w/T7Ef3RP1Ml++V0furhg/MxTB//bn3z41C//24sn8PHH9uPa/m4sUMEC7nSnHDOedm75mNtJ8dir5FaJKeZYRzts7TVQyCqk/2NxM34PY3Gx9vaXr87Xfvrpwy998eUTv/j884fxxlNruHGwj3DbMEW4E245pjpaMSmyU/FOUs29DsUPjy727An/us34fY5XLs+lf+XVcxf+5JUzP/zCC0fxmWeO4PraoNSHx11yTBDwBFU75VGg39GKpqpilBXkvBr+8c14r8TLFyfjvvjyqYN/8uq5H3z2hWP4s49dwbGpTgzbGzHkaIGhqRwFWWnIyUwj4LyF8I9txnstTu/v3fapZ45M3DzU/71xVxOc7eUoz01HdkoSstOSkZOeiqriYnn46ZvxXo1FjyrKKCs4kpsS/2MBNycMNyct7ZdBlyE6/LTNeK+HtrYkpiwn9WBe2p7v5WWkoTA76+tinTz87c14v4RVUbu9Ki9noCw/UxnetRmbsRmbsRmbsRmbsRm/+7jttv8fu0GRVRgw86IAAAAASUVORK5CYII= - - - 成品测试 - - - - 77 - 3 - T2 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-Core-C1/BLV-Core-C1.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-Core-C1/BLV-Core-C1.xml deleted file mode 100644 index cdc0187..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-Core-C1/BLV-Core-C1.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 19 - 3 - BLV-Core-C1 - P_BLV-Core-C1_20210925_180235.png - C系列主机核心模块 - 2022/8/30 10:29:22 - - 1 - - - 57 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 58 - 2 - T1 - Test - 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 - - - PCBA测试 - TP_19_58_REV_10_20210908193224.uts - - - 59 - 3 - T2 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-120/BLV-PIR-120.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-120/BLV-PIR-120.xml deleted file mode 100644 index 8ce534b..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-120/BLV-PIR-120.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 13 - 2 - BLV-PIR-120 - P_BLV-PIR-120_20210925_175843.png - PIR红外探测板(探测角度120度) - 2022/8/30 10:29:22 - - 20 - - - 41 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 42 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 43 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-485-120/BLV-PIR-485-120.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-485-120/BLV-PIR-485-120.xml deleted file mode 100644 index e6599ef..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-485-120/BLV-PIR-485-120.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 11 - 2 - BLV-PIR-485-120 - P_BLV-PIR-485-120_20210925_175814.png - BLV-PB(485版本) + PIR红外探测板(探测角度120度) - 2022/8/30 10:29:22 - - 12 - - - 33 - 1 - Q1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABxPSURBVHhe7Z0HWFRn2vfjtmyisdDLDFOYXhkGmGFoAiIIosaauKaYYrIpZpNNvn03u+/yZjebfVM0phlj74oNpCqKIEZUBAWVIooK9q6goMCc/3c/h0M+ky/JJmpyXdmc/+XtmXnOgfPE3/nf9/2cM5B7RIkSJUqUKFGiRIkSJUqUKFGiRIkSJUqUKFGiRIkSJUqUKFGiRIkSJUqUKFGiRIkSJUrUjy+DwfAbqVQaLJEoIuRytUOu1jvUFDqdKVKnC3UaDNYIM22NRnuUyRQeycJsjnCGGMNcVqszykrjVmtEvNnsHMLCpLMnGbWhyXK5bmhQUHCoVut6gE7Tp+dson5w6XQ6Tx9Pz0SPgR4Z/fsPyO/fr/9pH09/d4CfFEEyDRQKA4JVJqhUZmjUFui0ITDo7TAYw2EyRvBBIGE29YTJ5BCiZ59OZ4dGG4ogqRqSQCXn5RnQ5usjXT1u3LhfClMQ9UNp0AMPvPbA/f0u9+83gBvwwEAMpBhE4ecXhMBAJdQqC7SaEIJqg54gsTATOIvFBYs1BtaQWD5CWNjiEBo6GDYK9pofp2PMlmgYzZFQKoyQy3Tw9gqEr1cgp5TrHhOmIeoHUh/PAQMPDHxgELwGecFjgAcG9R/EA2Zuk8u00OtCyYXhPVDJpaEhUQixRMJqjeJBMqB2e/wXER4+hI+wsMQvYLOwWmOhUlspLPDzDYKftxT+XpLuQF/Zeqmf4vcSX6VJmJOou6VJkyb1HdhvYLtHfy8C7EvhA4/+ngTYAwq5DqpgI4F1kAujyI3R5NIouJyJPHBbaAyBjCeQ5FbaZw1xkVOd9DoGNhtzczQdE8uDZuAZbC1dLDp9KAL8FQjwkSPAO4i2Mvh6BtLF5d3hcDh8hamJuhuymTQWjwGDOI8BXvD28OMhew70hie9V1PN1etssBG8XpdaBfcyF9soQgmi3c7ScgzC7LGwE1AGPcKRSNvBcNA2MjKZtkkUQ2EwUK2mi0ASGIwAPzkkvnIEBdCWgPtR2tZTIydMTdTdkDzAdzwBhtdAHx6wD4W3BzmZtjqNFWZyqp3cGBaWwKfd6Mh4RDri4SB4UZFDEBM1BLExKYiKHoro6GTERg+j8aFw0T4nHedyJdB4Gm1T+DCbXfxFIpWoeBfLAlUEV8kHA64J1o8Spibqbsjf1/sNVne9+fTsSy4K4AH7eUuomQqBldVcAXAEcyFzJ6XkcIowgsxHGAF3JAhuTeId6yTIjohEGqOLggCziIpKpcaMXE9ulxDgwAAluTcYUoIbSOk6kIAHK9QvCFMTdTfk7+W5lncwwfXx9COwAfzrAD8Zdc1W2KwuSsdUa+0MIEFzDiWHpiDSmYwIZxIiCCKD6nKRa13JBDEZ0TGpBDSV3g/jXcvAsoiJGc7XZ1azg4LUkFKalrNlk58Cgb5Uk31lkAdp3hKmJupOBdzTx8vD4zCtffnGyserp8liaTpIEswDDrWxOsugkIMjCCi5OIbgRZAzwwmukwEnqC4KJ4FmqToqmh03hIfL3Mzg8i6OJcD0vVh9ZkslVocVQVpIAwiwPzVaPrTmlqgWCtMTdSdKSUm5V68Nnzqo/8Buz4Ge1Fj11GAWfp7+UCl00OlCegBTExVGUHoAD+G3DDhLzb1bBpulYyervdRlR7I6zABTMLjMvTECYOZ4pcJADlZBFqTh67GEINO6mNXkzcIURd2m+iREhTxpVCrqLb4+3ID+A8i9g/jOubfJYnVYpTb2dNAsRRPg8AhWgwkuH0l8wxUensjDtVP6Zu8ZeAaW1V/mXD6EFN0LmS2bIimdByuNPNwgCbuzFQw/H1ouUUdNr+uEeYr6vsrIyPiFWSX7UKOxciOVis4JOtVWiZ83p5JJECyXwtvTm9I0QabQ66wUIfxalkFkaZW5s6fOMmdSw0VOZTWYD+Zwgs8AM4DsuF4Xs1ocFTWMr8tsScXGVbQEY+vsnluXzMHBlKap2fJXXNPrLTaarnif+vtK6uPzjK/EyoXJlPinK+L1tGiz0hws6Q5RK2DWBFN6DKB0GQiVXI6RQwdj7LB4PDp2OEUanpgwAs9MGoMXH38ILz4xgWI8Xpg8Bi88NpZ/P/XJhzD1qYfw7CNj8NITdMzkh/Dc5IfxPB0/ZdI4PPHwg3h64hg8PHIYxqUNhU6tJheroJAF8/VeSh21hMKfmjsvT98OvUafS2viIeyiFKYv6tvk0mof8PBUnvGT2/GyWVeRMW7cb2i4j10n220NlkGvkEEjD4Jeo4RJr8JghwXp8RFIT4jAiAQHRiZG4sEkF8YkRWNC2mCMGRaLB1OiMS41lqAlYNzweIrBNBaD0cnRGJ0Si/SkKKQPcdE2GsMTXBhO3yMt3onBLhu0SinUdD61Uo5gWRBkUglBllL3HshpVOpDI1OTutMGR7ntZnOpWa2PZXPl/0NEfb0C/fxGe0icXKxC4f4oOXGwMHxPpFn5V4NSApU0ADpK03aTBmFmHRwWHZwWLRxmDSJMaoQbtAgz6BCq18Jm1MGiV8OsVcGsU8NE7jdQFtDRhaJVBEGjkPKv9RQGlQJGumhYTKTz/O9TE/BuciSmPT4G77z4KN6ki+NFAm+l/dpgOaw61ZkPXnzx3vGjU+NjwsxZY1Pju0alxHcaNZoFFovFR5i2qK/K1z/wDT9FNJ4yqMtxixtGJIbZlBIfzt9zICQ+HgRXi3ACHGHRE2A9waXXRi0F2+oRzsLUs2WwQ3QaWLUEmyAbCRDLBAZypZHAmtRKWDQq/hgbHfvPB/rh8PAoNOkC0Zgei4Yxiah2GFEUokeCWY3oUBOGxTjKhanxPcP41KHxSXGOfenJiQgxWY6p1XLmZlFflZ9/4McyRQT+j93yijDE6+3XnnhALw+4ERTgjQACbDUEI8KqJwcTQIMajlAl5EM0SBwaASeBiLQY4LJShBgQQReCneAzgAywXkkOlpF7KfWy971gQ8n5drooXiLAi+kcC+limu85CHMUgZgV4IO/9u+HqBAdYkLNlMIj5whT+0IZU6bcHxdhnhbrCOvUa7XXFTLFE8IuUb3yC5B8oJTbuYwY11BhiNdLj40cKPXz6TSopARVA6NaDgeBZDCdVi3VSX/IDBI4wvRwhRnhshsRTREbZkKUzYhIgh1K6Zu5lcHVUEduINA2ltLNBjisJvp+Rn4bQWMReioBBhbqnqBUzzJElM2EGLsFIxKjv3QB3qI+Q2PCxpi1yis2S2iXMkg+VRgXxSQJCHhNHmTj/jQkKloY4pXgtAYGBQZw49Njrzw+LglqmT8cNh0iCXB0qAFx4Ra+4WLBoPYGG++BTICpDrOUHBzox9dyszoY4ZQBIkONiAo3ITrcjKgwM10cJhozwElfw19AQrCLhAXLDKPT4lOFqX2tUuMjXRa99pzJaOlWK5XihwV6pZD6pkulZu7xGMcEYYhXRkbcr0J08nkWjWyXhTrqEF1QZWyYrjo2XL9/cIShYbDD2BDvNB5kkUCvExymQwlO45EhLsupJJf1UpRN16GS+nQE+Qxql/l7tRqCpZecIdrTg52m44Od5pZ4Cto2D3aYmgc7jcdjI4xHo+z6pqgw3SGXXcui0WXTH4y26Rqi7briKeOGDBCm9o1KjrIPNmg17SFWxzVqvsKF4Z+3RsYYpf7+wZ0jnM53haE7EoBfFBR8cO+0aWPvS0lR3Wu323+dkXHPL1hjRPtYE/dNcVcUHWaeopQr3EESeV1cnKGfMPyzVh+pf0BxnDVspwDgjtTd0fzsyaP7Gjbk5RZkLlv2yoL33x8o7PpRxC4ki06ZrZCraB2t+Lsw/POWitK0Tq7u+q+JE+3C0G2r88bRP7g7T3DVldu4nLXrMHf2gubp06cbhd0/ikanJSp1as21YIX+ani4wU8Y/vmKfURV7u9TPCw6OudObwFWVlb+urvzeGFH+3Fue+kmrM1chZkff1rz1ltveQqH/CiyGbUfm0x2crHsL8LQz1uRNrlMIQk4lp4QN0kYum1x15sDurtOn750oYkrLszDyiXL8MH0D1b9mJ91Thsab5UEBLqV8uAaenvXavxPWuF6X6Nc6rsvOsL+8O3WY5YBGMjW1qOjOe4S19xUi00567F07gJu+nszXhIO+8FFV9MvjRpVs9EQ2k3rZKkwLIo5WSn1rYoIscx/+cknPYThbxT7URY/70EpgwYMmOHRv3+Zx4ABDT4e3o1BgdK9a1Yt5Th3K/ZX7cCG7HX47JNZN2dMm/Gt69m7KYtOnSWTBtNaXPqlmzg/e40davBQBPpstJtMjU+MGh4pDH9VfXw8B47o36/fwb597+f8fX3B4v7f3gevQZ7o+9u+8PXywaHGA+i80YqdWzdj9ZKlWDhv/pWi/PWrN+dnb967rXBmRWnunN1b858qKyvwFr7vXVOYWf+hWmOCWh74qDAkqlfDh9vv18n8Z2kVymvDYmP/8cdJk/oKu5j6+Hj0+9vAvn27HhozEtkrF2L7lnxkZS7FhqxV2LV1E9asWIjJv5uAkakpuNF+Bc0NNTiyvwIXjtei42wDus7U4XrzXlw8WI4TNVtxcFfRxZ2b12WUlGT8SjjHHSvMqvswSKqAIsj/SWFI1FfUx6YPmCALCDgVogs9GuuIfe75xERPhcTrCbNWzZVuWI3OS0fRdvIgTh2qxvkj+3HhSC3ONh3AycZqHKurQs2uUpw+vAfdrS3gbjQD146AO1+PzuPVaDtcgYv123FqfymaqzahdlsutuYtm33rU607kc1syDSbHJxO5TtcGBL1dUpzqgOpLi+WSNRdIbrIiw8OG9J25mQt0H0G3e0n0HX5KNxXmtF18Ri58zCutjTg8tF6XD7RiO4bZwD3BYqTwPUmdJ/dh/bmSrQ17cKVgztwofZznNq3BS17N6OpohAVRZnu3DXzk4VT37Y+mzLl184IZ4tGY+aGOPRqYVjUN4m5KkQnTZr8yITGtrbz4HCRoNG2i8B1nQJu0raDttdPgWs9ge620wDXRs04BUdj1w6h6/RedDRXkIl34eqhclys245zB8pwonozjlUV4UjFBtRtW4+Na+aW0invyMVjxgwfZguJ4BRBkmMZcXF3Le3/R6vj8mmFu5vl2fMEjoI7R8G2QrjpffdZ2l6h/V0UN8Bx5GCC6z5djZvHd+P60Z1oPbwDlw9uJ/duw1lKzy17i3C0ciMO7chHw3ZK09kLuxZ+Oi1QOO33FlumhYVYtihlWmjlfv8ShkV9m7jTp/u6uzt2c91tcHczwAzi1wR3jcJNr7spKDW3N9F1sA+dJ6rIvbvIvTuo7pbhUv02HvCZmhKCu4FPzwfLc1H/eQ52Fi7HyjnT04VTf2+lpiQ9Zw+NdPt7e11MjRNvVX4nud3tH3FujqC5yZUs9bbfEh0E9SZtOynoGB5wKxn4GBl9PzjevZVoP7aLam85n55P12zGkfL1OLl3EzVYRTi8q4AHzFL0nk2rsfTTt18WTv29lJ6aPNIZGd+hVGihU3g/JwyL+jZxXVeSOK6zi7GjYisES8G9wdzKoFLwxxDwzhPApTqA3Os+tZfeVvak6CPlaNqZhbwFb2LWG5Mx7ZVR2LH+Mx5ww/Yc1G7NRvXmNXjzz1ML2a+PEKbwb/Xyyy/fFx8X95rFYm+XBMihCvBaJP4aiO8gjmu5z+2+RqQIKtdTV3ucKkDlmGNvCXYcq8WtDZShqdOmrpnyMNXgvXBf2k9xADfPHsDlY3vRuKcUm7IWYf7bL6F+2zqK9dhfspZ38OSJD3KaYOUlmSxooValSn8wKcknIyPjV7c+DKHXvxmdGi+Ljgx7zqQzNMhlwfDx8uGCAz3nEVz28V9R/06d3RdecHPtRI7gcrfA5YHSyy8FG6PUfL0RuFzfA/gcpWiWpllvxmoyLtMxtL15Gsdrt2PDyk+RPf8d7CqYT+vgdajZshp7ijIxacwwLjrcwE1+aAQeTE3mHGGONpvFdthmMu0x6XSbo1xR253hzmMWi+2GxWzn/LzZz04NOGvW+D8lOvc7qqWF3Nt9vpnDdQLD4LJgLu51Lr28NZh7bx4FrhJcBvgiGf/iAXCdBPRLx9/AkQOlWL9oGtbNfRdZ895G7c7VBHg1qotXoXLjcnzy5tTZYSHBLrn/wPe0Sv+6EH3wDYNGxckCJPD39YFWa4C/fyDn4zGwQ+I3aK9R7fvaYyOtP+qHC37yQlfLKI47S2iuExfqjnnAt6bmXmAUbIzWxWij1MzS8xUCTMHdYEupW4/lcLSuHIXL3sf6eQR3zjvIXzINB6uycKA0E1UEd0fuInz27ut/FqbBfz5sdLxN5jQHDbFq/CYZZN6TTSr/3zlM0qSRMcFS0bG3KXfXkeXgqFnCJYpvA8z+Ipd3HO6BKwTX3iIc23sccPrIfmxa9REKl05H/uLpyCMXb1n9AU4fLcG+4hWoKFiC4sxP8cHf//ypMA1RP4QIxy/d7QdPgqPayZ2lt1RbvxEwve8++f/cSymau3aYhlk67z2GDH2uBaVrZyOf3Ju14B2smfMm1s75B7bnfYJrl2pQtWkZtucswPIZGZgbG349OynmvRWjUoKFKYm6m2pr2uHLXazpRhe5kjtNhKg5YsufrwVMa+GOg9RfUVpmgNvodRe5/pZjOtvbsLNgKTau+BjZyz5G1oqZWLdoBha+/yo5+b9x9lgZdhcuRFnWXPzp5WcwMi0ef7YbsDbM3FGSGJmTFe9KXSV2xndPV2tL1Teat1PpJWgcuZO/PclczNbAtwKmv7rpAmDH9abmDmq02E5+P/1xu3Fgez6l5lnIXTkX+euWIH/tQuQun4UlM17HO1OH49ShYroAFmDr2jkYP+YZxKX/BckTpyBhVDKejQ3FkpgQrjg+vCY3JvyxzLFj7xOmKep21VSZE3SmusDdfWEvEWJp+hTRYrVYcPEXgCltd9CyqJU6Zgb4OgHuvko72L6eOH2kBlsIXH7mXGwqWIfC9ZnYlLMShavmImv+e/jwT+NxqCoXFeTgjcs/4uKdluuO8ASkpL2C1IfeQvz432PoxNH4XaITcyKtXHFMWF2OM3Tigri43wrT/S7qc6cfKPyPEqH5RV1JZkVry07iSY7kqGFitZhj8BhgAWA3u6nB3NvjYO46pXR+R8+m49pl7Cpcgk1r5qI4dzU2UmzJW0uvM7FxzQKsmfsOZr3xNF9/KzcuIcAz1v5xUpLPyPjQV0ckRDQ5HbFccvpUJI95C86Rz8M5egTGRoXiQ40K+VpdU6HZ+te1URFWSt/92OewhOnzmvjcRJk+NXGqT6Rtoyk+NPu9/3mWGIuQv1B9cab2ypHyk/yNCx4y66gv0pbI8YCpibrR1LPuZUFNlvsma8gE0XF1uwqwJWs2aiuLUVtRhuL8ddictwabc1dgw+p5yFk8DbP/9yVUFS3lAecseveL+8dThtvvT483Pzw6yVEV63BxrtjJGDrqX7CnTYUtPQ3jkmLwul6FRRpld1GY9XxpYlRDSVxUWXFYaFaBNbRwplrf9j/+Mu6fCiU3T6/ZsFCv/ev0jD8MzXjuOfEnHnrV0VyRh0v7e9Kw+xhRY48GGTwW5GZWe9ma9yq5t62O0jN7+NCjS2eaUJr1GdXdWdhdVojSgizevZuZe9cvxkZK23m0XFr58d+wd/NyfJ4zp61wyXR/4dRfiLkuLVafOmpIREl8lKs7KuYRRCb/CxFJz2Lsow91Jo5J2ueICz0Xa9NeGW6Q7/+jSjJ7viLgudWBPk+vkPq8kuk96NWV/oP+vsIU9LeMlx4c8Yenk/+/c/xsdal+a0HXqUqCeIDceoiwsVuNtGHuZQ/6mXPZQ4UrdXCzNC2se9kSaU/JGmxaPQtrM+cjP3s5gV3Np+ainGUoWr+A37f6s39Q5/wZ9lCKLl37yUfCab9W7IbGg0mWhDHJkTucYQ7OGfM0YlLe7kwc/u6MYSOfN6dNTBv01ZseU6Zk3O9MfDVl8sNpj77+/PhQYVgUU+32bFvd59ktVw5tReep3TxE/lMaDDB7THjjSA/cS7UUB9DdSulaSN/nW+pQlj0bOctnYu2K+diQswKFBHlD1hIUrJuP4myqyWs+QeHSaeTeZdiRP+9SyZIPJMKpv1XsztaoIfZnhw12XBqZnIJnnvxr52NPvn8hfcKHW6OHz3jLlfLe78MT//WiJebN+fqI15sNYS9tSR/6pEr4clG9qt6yLLlh25qu41V5uHKoDN1n9hDY6wSQrYWpFrMbG+yBwgVK4Rf2ofMqq9P0x92Jmq2reGeuozVvduY8bFi/iI+SvMUozZ2HstzZKM+bw6dm5t6y7E/+Jpz2O4vStnpEgrMkOSb8zKjk5MhRo16YFD/s1U9CY15bZot6eYEz5vk/jBr1iIYm20f4ElFfUZ/6klUvNpStuXm8qhDXmivo34rdsrxOECk9X2ZPi/b1xIUa3LjS4+ArZxuxI28u1dTZBPhDcu48SsvzsWn9PJTmzMWOgrk4c7gUdaUrsY8A78qf31SfPZf9vxq+t9hvBUqOsb4R77Q2mzVBicKwqO+juq1r0w5uW3fmXOPnBJfd0aL1cCc1XBfJuWfZs95q3t3tFwk4btKaNg/byaEMcmn2pyihqCxagMPVuTh7rBRnGjfiUEU2DmxZjuqNS7q2rZs5TDjVbWtYtHF4uElzXK+QPMl+16YwLOq7am/JCvm5ps+LwT5EB1oKdRwGd67nQX7nyQo+Wk/uhLuzBRUb5pF7P+ODUi8tgWaj/dxOcn0LOs5X4tieXNSWrMD+4mWoyJuzVDjFHSstzmKyquW1Gqnfh+ID/9tQx+UDkxkk4AS4aw28aztPVOBGy060HyvHuYYitJ4uR3nOLGzNmoktaz4iJ3+Iqy0ltI5uQueVGrTU5BPclThAgCsL5x+v3rj4rv6Oq4fSHb5mtbxEEeCd7XJpbyvt/2x1/VTFGO4mq7PHwLXW4ebJ3egguNeObqcmbCvO121G4/ZV2LruIxStfB9bVk/Dxfo86q6rcONsBY5WrUdt6TLevdVFizp35c1KEb71XdWkpKS+RmXg0iA/ry0uF///YRL1XcSd2uPd3VZ7FW72kwz70XGcfQz2cx7uxYMlOHugCId2rEXR8newetZ/oTz3I5yoysbpfQU4+Pkqgruc6u5S7C1azJXnzHxN+LY/iFatGvdLvSJwfpCPp/h7pr+POi/uXczdbET3pRrqqsvReriMh3uudhNO1RTixJ48NO9ez4M+sisLh2lbvy2Th1tbsgw1mxZR3Z09E/jh7wmzH6AbPzR88ZThcV7CkKh/p/bmnTHu1lrOfbEareTey42lfGo+s38jTlQX4HhVLo5Sh9y0cx0Ol69BgwCXObd60yJuV95nK8vLM3+0x30fvPi7/hNTIx4R3or6d+IaC+7tPFd5gjtXhavk3gv1xThLcJl7Gdxj5F4G99D21T1wt67oScsbF3btzJ31ZklJyY/+c0Lisul76lpT2V9unNiB1qZtOC+k5uOUmnvhMuc2EuC6MtYtL6NueV7HrrzZj9OXiv/QPwWdqFvneaG+qJ7VXj41E9yWyhwcodR8K9yazYtRUTCncnfupxHCl4r6qehU1RrZieq8KkrLXK9zGwluPYHdt2UpV7lh/sld+TP/+0DJx+Kz15+qWloy7ztUvuqp+rLlK/dvWbKtevOC0j0b583bWzR33IGSVSLY/zCJ9fVLuuee/wu/THBSg1EjMAAAAABJRU5ErkJggg== - - - 扫码目检 - - - - 34 - 2 - T1 - Test - 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 - - - 烧录 - - - - 35 - 3 - T2 - Test - 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 - - - PCBA测试 - - - - 36 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 37 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-485-60/BLV-PIR-485-60.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-485-60/BLV-PIR-485-60.xml deleted file mode 100644 index a4eaff6..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-485-60/BLV-PIR-485-60.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 10 - 2 - BLV-PIR-485-60 - P_BLV-PIR-485-60_20210925_175800.png - BLV-PB(485版本) + PIR红外探测板(探测角度60度) - 2022/8/30 10:29:22 - - 20 - - - 28 - 1 - Q1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABagSURBVHhe7ZwLWJR1vsd1a2u7qcDAgDDAwHCZGeZ+vzHMMCjGRazc7WLZlmlbmtu63daSsrZsy8zM1EpNUktWO1p2QVMyr6SmgncRNFERFAS5yGXme37/d16sU+3ueZ5zds8O5/0+z/d57wzP+5nv7//7vzMwQJAgQYIECRIkSJAgQYIECRIkSJAgQYIECRIkSJAgQYIECRIkSJAgQYIECRIkSJAgQYIECRIkSJAgQYIECRIkSJCgf5FWL30vs7py77TS0tKr+F2C+osWzZmpWlkyr6V2f5W/vLxcxO8W1B9UXFx89Tuv/3nr6g/exbGqfZ2U4MErZq64bu3atdHrPv1UVVa2Vrvh8w1pJSWroti5/GX/5wIwMC8vL0yv0rsUCuPD6QrN6/I07UfpsoyNqcmKTaky+Rfp6foSldLwrFZrHul0OiPpsoHBq/8fafbL0+6a+8rzgXfnvIZNG76obzpX+WHD2aqm5vOHelubjwVayBcajgbO1B3urjmyv/rbih1rVq38eMXcOUtmz5r17mOvz1mSP2vW4iH8j/unyu1236hUarLkcsOLMplypyQ2qSNaHAtxVAwSJfFQytNgNejgNOtpqYFKkQZZYgJSk6UwaVSdmRbLerPWcIfBYLie/5H9X+/Pf+3TvTs+Q9elQ0BPNdB7DPAfBwI13xsnyXXkRvj9zWhvbcSJY4dR9tmXeHvB8sCb85bWz1uw4vkFC0oH8z/2f01ei1ecmJxyT3yibHm0WFIvCo8OhIeJIE1IhN1ix5jb78RTjz+BV2e8jLdmv4EF8+bhnQXzMf+tt/DmrFl46blpmDThfhTmZsNpVMGhUwesev0RnUY3ZvTo0f2332AlrvNC1bie1qpOdB4ELh8Guo4C3WQONEFmDtA6DzrAtnGKfIHcht7uNtSfqsUXn63DvPnLMXfBh7ULFixz8i/xd8VurkKhCJdES4xikfj+iPDImTJZemmqNG25Uq5+T6XULjUbrDu1an2XRmWAPF2JtDQlVBlauJ0ejMgtRFHRnfjNHffh7rETcN+4iRj/u0fxu4l/xMOPPIGJv38KD01+EpN+PxV/mvYypk9/hd4IT2LCb8cgy2aEPEUWUCp0X5nUplT+V+o/Aop/0dNUOSPQtr8X7QS3k9L7twD7vwccdG3Q+I7cRO5EV0cLDuzZg0WLSzF77vtts+eWFPAv9ROJREPyw8PDP4gIj9gvGhLRIgqLDERFiCEWRUMh1yAtRQWtxgKdxgq91kFLB7c06J0w6l3kTBh0Qet1LrKTjrk4Gw3BZfA6OxRKE70pNBBHDoU0KQXPFL8SmDdvMebPmYOHx92NdJkUKUnpTZoMfR7/6/UPddfvfCbQvDeAtgPgAHcwyAS48whBphLdTVCZ+wD/l5LdB5jWOZ8mtyHg70LdiWNYtnQVZr6+qP0vs9618S93RXTiQFFY+Jdhg4cgMjwSMZExBFaMGBpDY8RDoVKbkJ6m5mG6YTJkcSBNBjfMRg8sJi/nf7TOlux6nc4BuVyHuFgpwsIiYDLbMO/tpVjy/iosXrQE059+ElqlAokJKZe1KutY/tcMbXXUbbX7z+/sQuu+INw+d1CK+wD3QWZJ/oeAT5DZGE1pDnSi4cxJfLj8I8x4dcFhhUJXeNNNg++NGBz2nCg8fKkoLGxHZJioKzJchOjIaCTExUMyVIKhBDc2Og5qtQUZSgOsZg9sFh9nPUEy6h2wWdm+bNhtPtit2cF1q4/gu2jdy62zfcxWczYH2mhyIyPDhFSqChHhYgwhyKlpCtwzdkJg+vRX8eacd8r++MhDT6rl6U3ShJQutVKfz9+m0BRRGNh7ducmNH9Loask8wnuMwN8+SgCHUfQ0bgbrad3oL2+ApfpfD9LOAf65wD3+Rwda0PD2Vq8t3g5vL683l/+8hpce/U1/huuva4rbNBgKskRwcRGDUVSvJQgJyA+Nh5xBJiVZrXKBLvDB4djGJzO4VR2Kc0GKtM6KzRqMwfboLfTueYr+3RaK3etRmOk4zY4bNnkYbDRUkulXkOVQRQRjfCwKEpyJOfw8CgkJqZMYPfl7ttv1aUkSZuTk+QNRqNRwt2sUFT78a2mQP0uP1oovW1VPwXcTim+RPsu7EXg/B74m6vQe/EQupsPoqeB9jXspOOV1GxRqn8WMHM9uQUnqqswbdqLvdQBj09ISLDa7fahU6ZMUaTKUvwsvbExcRzcREkipARaEiOBhuCqVUY47D64CLCLADvslEprJtlN6aUSbM6E2eSixGbRMQ+lNbjfxm9baNvpyKHrc+mNkgMTpVirsSEmOoHAMsBRiBTFIIrG5ZjouE/4WzMgb0T2PZKYuIBcJv+A3xV66jm1/blA4y6AwKF1fxAmD9l/aT8CrbS/4VsEztI553Zz67hASW+l9HbTNKm3kUo5wb24l9JO13Mlm6D+2DhLY3ITtmxch6lTi6901ffdfbctTZYSYAlmqWVwkxOSkJyYjHgq1eoMAweYAcokuMwMntFgJagsxWYuuUaDjbPF7CJTCTfa6LgTJiNLu53S66Frc7kqwFKsodKfJE3jEszAsjRHi+MQJYq5VFhYeBP73YqL3Vfr1cpdQ6Nje2wGQzr3C4eauk5sLsMFgsYAt/QBPojelkr4GWiW2jPfwH+aTEvUE+iGPbSfIDfT8U4G9CKVakopG7NZmff/DciBc2i/9B0+XLLo3fHjx/+SXn5g3jD3RFliIo23sdzYy+ByCZbKKM2JyFDouBLtcg2H25XLm9YzmXOR6WKpzoGdUs2SzczKOdvncuXAwY7RdiZ3/Qjal0tlfhhXwpVyPVeWWXqZOcg0LCQlpYwK3p0BA24pynsqOkqM9OSUp/hdoaXLJ76uxAUCxgD3pZjAXj5PpbedYBHQ3rodnP2nKxA4Q/vr6Q3RSCWdQW5i59M47SfIgQaCTFOqVkrzz0Jm06h6fLO1zK9UGI/qY6XbxkiTLiXGUHoJLoPMkptC05eEBCmkBDtDqePS5nYTzKybkUX2kLO9+dzS68njluwNkEXAs9wjkOWh89xktqTjme48ejPQemYeXHQOK/OsK9frbFfS27dkoCUSaQl/ewZMnvi7ovjYOBoy4lfwu0JHdLcHXq75qhrn+bLLp7i3eQ/aGrbTOo2xlNru77aBSjlnBtl/hpVrelM00jXMDHI7QQ5Q1+w/S4APINBM5ZxrvH5kgtxxqRqjb5uMIWIXBiU4EMWX5wQySzEbf5MpwcxKhRZ6aqBYAj0EKzu7ADnZhfB5C+CkfVZLJpw0PrNxmJVnVpZdDtZZe2Ggkm0yuijVOfQGySPoBDtzBPezzJYsrlFj0yUGVRwVyy1ZZx0dHXt+0qRJ17J79OikB63xcXGBpPiENdxNCzW1V2+sxHmCcZ4SyQBfrELjsXVoObeNA+w/U4Guk1vRRZAZ6G6C3Fv3DYGna85RUhng8+w6KtcdNJViKe6kKRI1X4FWOvbjhotP8ztvvYrBg0UYHCbhnhtz4y81WFKJFDICm0opZklWKtSwUjPlpFLLoPoYXN7ZtM0SzEo1K92ZVHpZyebKN6U6k9LMnJWVT9v5BDhoF6XZQSlmCU6RZSCCPVThAUeKoinJUUhPz3Cz+5Pr9Y6JoQbQqLfO5m5YqKn1yMY1XPPESi6f4oYjn+O7g59ypZYl9jIBZm6v2YwNH72FspXzcWpvGTVelPw+yBdY+glyF6W06xR6z+0jzuX8o8yfAj5c9RXGPzAhYLVYA0lUjlOkSVCmJCMtOYkDnJacilSyQq6CzeGFjcZWBjXHV0hTrQIuyQx4tocv1VksoQSTHCzdBZT4Qs5e7yjeRbQ9kkszg8zKtEZl5sHGcE0WK9PMMTHxr6rVRh2lt1Yan9Q1wucz8rcstNRw8MtpvdRAoZFAMcBNlbh8bge+3fguNVz7qOLu4BLMANfsXI23Zz2LBbOew4pFc3Bw+8cIsPGYpktXSjX7gOJyDQGuRPPBMnSw6vAzgC/Saz1w7xjYTAbugX+uy4gRbiPcZjWSJXFcghlkRaqSOuhgyWVgfQTY5ysiwJRgVq5pO8c3MphoPtUceFr3ZRfBlzMKOTm30TW3cpA9niJKdCE3LpvNWdwUKlos4QAzsKxE80nuHjxoSGdUeHiPXp0yhb9doaezB8osHTWbA9z0h0E+T6YyXbH2DfjZGHzuG648d57YgjP7PscHb7+MhW+8iBUL30DJWzPQemJ7MMkMcl/TReNx95l9OL37E5w9+DmBrUWApk+BAHvMyZqvWvh7qvHAXbcGjMqUgMOggM+sQY5VC6dOjoShUSjKdWPs6BF45J5RuD3fi9tGeFE03I2iHDcKsjMxwuPA8EwbcjPtyHHZke20weuwIstugdduhdtGjZnNDqfFCps5aIvJAovRDLPRApPeBK1KC6POxD0xE7NHpBE0FybIbMmcnCCpyLZosug2DQzerRAUSkuvaj60cT/qKWls+tNIvrAPRytWoKn6SwL2LXrqtqOzdgt5KzatfgerFr+Gj5e9iQ/efRU1uz6jcZqurafrGlhnHRyP2+t24fDmFaja9B4BDsINsKdefe6txmsvPDHO5zQ/b9fK4dZlwG1QQZMuhSQ6Ar8pzMKYQg/uuNmNkV4b8txm5LstyKOk30zOdZowzGHAMLsBPpsO2VYdvBYN3CYVXKYMuAyUfL0SNnrDmDXpMKnTYFKlwZCRAp1cBm2aDBkpiZAn0xQtMgrR7FEpTZnEYZGIDBMhitZjo6Im87cptHVmz+cTuk5uC+AcG1NZGveghzrrQ5uWoPf8Li7FrER31GxBS/XX+HbDMqz/K43FpfPQcnzL901XH2Qajy/Vbsf2T+bjq49mEVj+GXafaVwO9BzDlg0fJDv0qrHshusVSTDIafyViJEkicaoHDtG+ey4lTwq246ibMcVj/I5ryx/uN53fCSz146RPtqf48Qtw+g8Wvb5Fq8DT9yehyfuvQWP33cbJt09EvfmeWi/DSpJLGJE4RANGeJPSYi9mb9Foa3a2vJfnT+4/hD3tIolmZlKdWNNOer20DhLkHtPB1PcTkDbKMkdp3agk8B2naqgzpqmTqfp2itN1z40Hv0KKxdMpYZsTvAxZjf7sOJ793Yc6V721kthFo3iAQ2B1TKnSenmDqZUSVDgsxAkK4rIo+jGF+Q6kO+zBcHRNlteAeqhbd6FWdbvTdt953Dn8ddM1SpQVejA7sfHofLtF7DzT7/FlvtvwZaFM1Bopn7ATa853MMeWYZuaf6xTu5ck9N2/OseMMh9oKlUnz7wBRoOfBYci1knffxrXDr2NdqOb6ZEb6WxmU2f2IOQH6Z4Lw5v+Svmv/AQztE16KpGgPtc+XvAnU2VtAMDtenJ41RpidAppFRKU7n0GJQy5GcTIK8FBVkmmHVJMI51QpGVThCtPOQgLLZkIAsIaAGVcAaWlXJunUFn5/aBZ+dlmvFy+CCUikUolcXjQ9EQrIgIx4dDYzAhOgo3O4ysAnQ9cv/tav7W9B+d2fvZX7pOUKlmDzKYz/KQD31BSV6N3jOU2trNaKV0Xjq2iWAHIV+mRquHUtxbR3Nfgsw665Xzn8K2Txcg0EkcuU+kfuDOw2hr2DWHvaZKkTRWo0zBc1Puwp8m3U7NTRjcRgWBYQkmUB4zXLRtVqcgx66lbROBMpMJIH88n94EDOqPzSD3ge/zCKcRDhqP7RlpsClTYaXXttAQYUlPRrZJjXyXFWNvzZvL3ZD+pv37S685V1m2uvskdcbUJFEbTKDJ1Hg1ffc1jmxbhtbqDQT0aw5yG43HzAxy18kdlOQKAv0NaipWYW3JdFxuojR3HA6a+/IAWz8Ef+sB/5nD603sNXPsymF6tTyQaVHDSg2RdGg0cpwagmagxspADVVwySDm0TQqL4tMy/y+dXI++WaXCcPtOuRl0nlktt237DODm0uN2XC7HsOoY/dRU5ZDZktmtr8o294w5cEHo7gb0h+1d2/JDfV7v/i0i5ok/ylKZB9oSqWf5sinDnyMo9uXom73KkoxD7mvXNduQ+2uj1C5uQTdTTQWsw8rLh2kJfsQgsw+emypRMfpilX8y3GPS+8ssDp+PcJcNHq44Y5bvboxRVnasbflGP5wyzBj8SiP7rmRWfrn8z36GYUew6xCj25uoUf/TpHXUFLkMawclW0sG+U1lhd59OUFbs1XeVma7Xlu3e6CTP3efJd23win+tBwh6o6155Rm2NTfZdjUZ72mZUN2caMC16D8oLHIG/yGBVNXrLPrKq/Pc/VP77F8ff03bYV153d8/l7BC7AxlaugSLIAVayWZdNZbutbisajqyjqVQ5Wmo2UeO1CS21X6GroQJoDj4R45Y0p+Y+pWph2/vQU//N6ZrdaxP4l/pna2BxcfEvmEtLR1/FzL7HPXvSpGtnPnrbdcXF+dczT5mScwNzcfHoa/jr+r/Yn6vU7Vr70MXD5RdZ6WWQ2YcMwUaKIDNfmVYx7wyafbZ8PjiX5p5v80/HAlTmL9ftaDp3uPy/9Q1LQf8iVW9fmdKwv2wlpbkn2CkTQJZkNiViHXOfr4DmzR6YkAO03l1XgbaazQcaDqzX8T9W0L+TWImr2/2xrXH/ug9bj21qZw0VSzT3iJKbVrFUM9M6b/blAPZ4s/nIxvONB9Y/e3THZ4P4Hyfo31nHt68Rn6v64p6mQ+uXXzxafqTt+KaW9uNbeqnJ8nfUbPFfPLIxcLxiDVa+/zbefG3qysq1y8L4SwWFmsrLi68+uXlt2Nm9a6QnK9Yoj1X8VTk8y/SKQ6doTjeMP3FTmuPiUGOanT9dUH9QnlMVFhV+4wmbMVuXrJ54ZrDSclpmVsXxhwX1B0miwubGR4WNu1N186Myw6OBMK1ug9vt/rf5M1NB/0MpU6NNMaIhG5blOcPGpg1rjDVOQLhRPY0/LCjUVTp69FWSyIgqlSw2boE44nm3djLCjCO6YhwGYQ7cX5QYLXpRKo58+H2VLO6ZyLSOZMs0DLYa9ufm5nLfVhQU4spIGGqLE4evZutLBt3wH9naSZC4bkG4VTeRO0FQaGv8+Pzr46Iiqtkfda8Qi37zSJwlYBo+HREuY61MSHH/UHJsdJUlI0O8yqaOmhsW1aV0zoT716MoxforfxoiKIQlkwzdqIxN1NDqwOVDhlTa7NMxZtxk3GjXhd6fgQj6qXTypI0JIhH3AcOqyMiFBbqHMfGRF7sGOXSNY8eO/RV3kqDQ1bNPTP5GLZNxgNcmJEy9R34nho2a9X6Mx14RYze7uJMEha5SJTEHh+v1MWx9bVLCHQ8mjQxovHNnhztNUwc7DM9yJwkKTRWPH3+9bKj4LPv2BNv+UpnsmRw/PKD2zHszzmXKvM5uXMedKCg0laWXW1Jio7fymwPWWXTyP8bnUILnL7xr0l2DwnzWM8XFxcI4HKoyyJOepgT/md8c8GWeNfbxOI9fnbNwKdt+7OkJpcuXvy7mDgoKPSkS4j7RSKVX/pnYrj/cIXomwdOTeevClWx77otPDlu1cCabQgkKNbGv+GQkxtbmms1XPgc+9NhjN5V6XW0LZ8/4C9teVfJK1LK5z/+WOygotLRi5qPX/XqYsebHX0NdveilstK3X36arbPvQ5eXvnkjd0BQaAn791+zkgf5Q61dOvu9T0pmh+Z/qxH0vdYvmRPx0aLXfvIXAp+UvPr43rISKb8pKFS1eHHxr9Yue+kn36ZkYzO/KkiQIEGCBAkSJEiQIEE/qwED/hOhmCAclIaVEQAAAABJRU5ErkJggg== - - - 扫码目检 - - - - 29 - 2 - T1 - Test - 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 - - - 烧录 - - - - 30 - 3 - T2 - Test - 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 - - - PCBA测试 - - - - 31 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 32 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-60/BLV-PIR-60.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-60/BLV-PIR-60.xml deleted file mode 100644 index 2ab8d97..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-60/BLV-PIR-60.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 12 - 2 - BLV-PIR-60 - P_BLV-PIR-60_20210925_175830.png - PIR红外探测板(探测角度60度) - 2022/8/30 10:29:22 - - 20 - - - 38 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 39 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 40 - 3 - A1 - Assem - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABauSURBVHhe7ZwHeFRlusd1V6QkkAqkNwgpEFqWJkIULMiiQRZ0Rb12QFiXVR+36O5FXZQOggULqJSgQCAJJSGkT2YmmUxJmz6ZmcxkWpJJb1My5933O3OCqHvvdfeuEeL5P8/3zOScw8z38Dv/t5zvnLmFFStWrFixYsWKFStWrFixYsWKFStWrFixYsWKFStWrFixYsWKFStWrFixYsWKFatbbqnJr/FR1YqWqOslW9U1ku1SoeA9CY+3vaq0dENBbu6c3Nzc0cyhrG4mNanVEbYG5R5rg9Rs0dRRFlUdmBU10CSrhsY6EWgkVSAV8DxVZcWG0itXDufl5EzHf3ar91+zumEFAL/oNGo3dxg0bZ0GFZDRrldAu04BbVo5tGrqoQVh25Q1YJZJwFAvArWID+KyooGCS5fOZGZkxDMfxepGE+j1Y/otui+cZh2FAwZMGug3qqCnUQFdOiV0NMihXSOFVmUdNMtrwIaArVIxmKVCMNYJQSXkA7+wsOvCuezfl2wruY35WFY3gkQi0ShXq/E01WoAj00PbnMDuEwNMIAO7jcooUevhE4tOlkj+x5gi1QEplqEXFMFOrEAqstKqbysrLNHjhwZz3w8q39Rv4yOjh4zc+ZMn9TQ1HGpqamjcNsvvLv+PTk7LbupTjMFbUagWvQwaNUiZA04mzQ05N5GdDCG6CHANszF1xyMOdlYVwUGBKzH3KwVYX6uKIerF3IEJ06cCGW+gtU/EwEZHRY9OyY8cmNUSNh7EZNCL4UGh0hDAieZgwOCWwInBDRP8Jlg8PedIPYf7392YsDEt6PDox9YtmDB5G3btv0g6D2tjcsGe21u6LYA2PU0YE+zFgYtDbSTB4xq6EfAXZiLSZhuU9dfc7FV6oVsrBeCvkZAA9aJhQhZAPJKLhRcuFBz/PjxScxXsSIKDQ0dFxsW9mBsZPip+Jjo5unTpnhmJSfBrOQEWDBnFnX3HXc67lmS1nV/2j32ZYuX2ufNnNk3Kyl5MC4yGiYGBIHPaB8qYELAQExEDH/WjFmPr124cCzz0d9TSUnJbe4eq5DqtwJ0Ga8Bpl1s80J2klCNTu5H0D2NatrJLVhRNysk+EqcXA1mLLaMGKa9DhbQo0FYCbIKLlzJyq44ePDEBOYrf74KCwsLCg4OfiM8JFSXOCWOWjBnNqxYtsz1yOrVdc8+/uSRTc888+IfNm1a8sYrr0Ru27rVf9++l8eS8ZeXXpr4xy1bUl587ul163+T/t7ShfNEyfHx7vFjfSjfsb5U2OSwutSU1LVpaWnfK3x6202rPP02CgjgTgMDWIujEV2s84ZqiwadrIUWeTVknfgCDr77d9j/1huQ8cFOyPx0J2Qf2QMFZ7+E4uwzIONz0MFVNFwy1FUVUIvbcs6ePQPb4P+VRm5akf/4oICATYGBgdbYmBiYn5o6+PCDq0Rbnn126xuvvhp75syZXzKH/iCtW7fulxsfX5t875J5byVPjbOMHzuO8vf18yRMSSh7cMWDM5nDbsHwGdXbYZSCsxmgDwF3oIPb9DRkaG3EYWDCtR4kpUWw9cWX4cVnnoM//n4r7HpzG2R+8SnwrmRBTflVqOXkQ9mlTDj+yWG48FUGDZYA1ggqQCXgg7CsiDp9ImMr89U/H8XFxU0K9PO7OCl4IjU/9VfU+rVry1964YW0H5o//y89lZ7uf8fc2c9HhobVjkc3h4eEd65cvuJlctJIOIWZHpcdwNnqBdzVBNCOYIeGnTjaAA2V+bD/9Y3w+b43IefkMSjPzwNNtQCaaipAL+aCRlgGqsoSkPMLoZ5bCIXZZyEr4xioEDIBTIYC83HZldzuY58em8ZMbeQrKioq1t8vQB46ORSWp6X1vfjUUy9t2LCBVMT/cWGUGBMXFbHNd6yPe2JA8OBjv1lbbFCIXeBpR8DoYBKiu03oYoQ6NNqNMGBRQf7x3SDMzwRZZTkYZbXQgQWXWVoJBgkf9KJyaKgqA3VFMQ1YWl4ItWVXoezyeSi5eN4bpiv5eAJwob6CA7mZ53NwOiP/ildSTEw0wtWEhoTByvvuad684b+WMrt+VMXHRrzqO3acY/mdd0InVsqYeL8B3GNGF+PoxtGJsLtMIOdmQ5OkGFrUtdDTpAVXmwnsKjH2vTwwVvNBxwBWIuD6SnQwA1hSkgecC+dosENhmlTVwpJCz9kvTz7ATGdkaiFWtQH+QRUB/gGQdsd80+an1s9mdg2LZicnrH9l03MOR4+NBkw58JUA7sPXXnwlo8cKHgSuKc8Ct1UFng4E3mfHQzRglWF4RsDEwTohBzQIWFFZhAUWAVxwDbC48DK6ugD0GM6VBLCAh1GAC1ezskX/al1xUykoIOhNP78gmDdnVveTv3loDrN52ETyu7AwR065uhFwFzq4BQEjXAL4utGiFcOAtR6BI1zM0x6HHTrUpO+tBGMNDxox/2oRsFpQCooKBjCnAGpK86G69ApIinIRcg50NdZjnubRDiaAhSUFkPHZ5w8y0xlZigqJSvYb7987NTaOWr/6oU3M5mGVmFuwqKmWP0h5BhAwQiaAB74P2Kzk4z4svNz4N9UBzs4msCtFYLkOcIOIg+G3xAuYV3ANsKTY62BR4UVoaRCCRSEGJeZwArge26a8s2cvM9MZUbo1yD/gfJB/ECxfsijnP1Up/6uSV3FOW6QChOZEwH0ALgbw0CBuxmFtqAKKwvfQQR/Xj6G6RVkF5voKBMzFCroctAQwVtDEvVLu1W8BJg6WFOeiw69Cf7MKWyd0cEU5fRmz/Equ6+jRo3HMlEaGEmJjU/zGB7gTp8a71qenpzCbh1WNcmGotLJ0oK1BwgDuR4dim+QgkLHYoocXtLVRjPuxygZ0OuWGbn0ttCiqwMIA1kq8LZJyCDD2w/Uc7IlJDmYAV5fkYiFWCu0GETTJROhgDg24mlMC509k/DczrZGh4MDAvQF+gXDX4jt/slbBpqreoKoqxbxYywB2AAySXhjBEsjXjWYjHkNOAPAg337oxJzsBUxCNIZnSTkNWIEVdPaJI3D6yIc02KEii7yvLs0DQzUXbEoOdFjUgNGDbrfqeGVYbGWKmGmNCN3qN35CbXhoOKxZtepJZtuwq9Mo+0KLobWzsQ65IVxw4yu6lIRpkovJIIDxtdWEBRYM0sPj6IKOBjG0KjAHM4B1+DkEcG7mV/DOW2/D7u1/hw/3vAtc7IFpwDhqy/LpY23SEnD2NIFSxEUHc2jAnLxLri8PHw5npnZzKy0t2ddnnE9//JR46un163+S8Ew0YFIImuoF0N0kQ25ed5ICCtwIlUC+btjNeAwN2AOe/g5obxBBsxILJrrI8uZgAvj9Awdg/94DcGj/fji0awccPbgLxJh7CeA6DNmkIGuRc4AasIC2VgBSdDC56CEqLoTTR48+wkzt5lZSUlz8mNFjqZSk6YOvbtr0ky2fOSwqg0UhhB4TAdyDcCkE2IvvMQ9/B3J7swI8gxjG8RhPXwd0aGuwyBoCzAMd5mA1tkk70Ll7d+2B/bv3wKHdO+GDHW9BZX4ODVjKLaR75jYlD1O5CcwqMcgEHBpwDacUck6deouZ2s2t6bER88bePhpmz5jl2Lx5sy+zedjlsinNrWoEbKzHvIrOpQFjqKYwD5Ni6zrAHqcNuuwW3Ice7utEB5MlwqE2CUM0ycFYRX/y4SHYt2s37N25Cz7cuxcO7/k7CBAwqaZlvEKsuvnQoanArzFCq74e5AKvg+u4ZZCXefoYM7WbW79KSUgYM+p2Kjk+0b3hsQ3BzOZhl6tF2dSlq4Y+ApjkWxowE6aJi68DTIB3NOu9gB3d0K6VoIO/DZj0wQfQtTvf2QF7duyEj/bvgZMfH8Dq+QpdbCkri8Emr4IevQgdbMBqWgkKJkTX8cugMCcrn5naza1VqanjfMaM7oqYHE49/Otfz2I2D7vcNmV1r6EOHBiiqT4TwsMcSxhTGKbdWGyR4WzzDlcrdLVqgPIwVTSeGEOADbXYJpEcLCqDS2dPwDtvvwUH9+2GI+/vgeKLp9C9eXRPrBaWgl0thgFSkTtNCBj7YQEWWnwvYM7FHB4ztZtfAb7jcsaP84HF8xduZzYNu1xW5amBJim4rUqgugxoTSy0CGDAXOvp/DZgpx0odHJ3uxWP8UAPtlYEMLkW3VhH+mBvkaWsKoFTRz+Cw/vehfxzx0HCyYOasisg4xZBI+bqHn0dOM1SPGEs0KZX0IDlFd4rWuWXc+TM1G5+xYUErhk9ahQ1JTrG/mh6eiSzeVjlsig3O6xyegGBXvP1kDxMHIxh2tPtBewaAuyF3NNuwEg+CH0WFbQqxTRgIxZOQ4BVglLsbYugGqGKS7F6Lsul2yNFRQmY8Vis3MFpJYCbwaaupQEr+FzMz+jg3OxGGCnLhxtSU0cF+I6V+I4ZC3NnzMz5sdZ+/ze1a0VRzhaV02mRI2AdAkR3klaI5GIK3TyIwAngIcgOdPFAC/T1tICzw4LhVoKAMQcTwBiiSQ4miw3eteCrdGimwzO+J/vsmmoYbNYgWzl+jg2M9VU0YGUFDwFzgHP5vJ6Z2shQcsTk+T6jb+/z9x1PzZ879/CG1OGH7LTJL2A1DdCGgMlKEdXHuJiAJsXWdwD3t4Cr2wIu7IXbNAhYjiG6nhRZ3sWGodUkci26jpOPuZe4txiMdZXQZ5CDA08mqlMPjvYm0FVXfAMYQ3TppXMKZlojR5ET/Z8aM+o2tx9Cnj19+qdP3HuvD7NrWGRXixZimHaDvQGAzsNYPdMOJpCHXHxdLh7A/T02cKCDOwwyrIqF6ET+N4CrCOBi+no0WVGS84tod9uw53XbGqDHgAVWjxlbJDmGdT5oqnj0XR7EwUVZZ2qZaY0sRUycsGXsqNtd4zBcx8fG1t+/dPkiZtewCFue05Rd472T0oG9LrnmPJSLqe/kYnQx9DbjyWCFloZaaEJnkqth+mo+DbhB6F1RkqOLSVtE4JpkQujUS8Fl1UBnQzU4WgxgqhfhPh4ez0cXV9AOzjt7soiZ0ojTrXFhAb+dMPb2LnIBZFJQ0MDM6UkfpKffNyzFl9Mku0QRB3fogeppAg+95kvgImR6AeI7gPuwL+7CY9rNNFiyDGioFaCL+aAVoZOFWHBVlSNAPv2UQ6umFgYsGjDV8RC0DJpVNd7jcb8XMA9DeRFcyvjyA2ZKI1Nz4kOSJvn5lPuOGUOR4it00iTH3OQZmffcddfyFStW/GjP3jrM8r94sMft1gmhQysAdzfmY7L4T7uYhOseL+QhwAM4etDFGKY9diNYFRLIz8yAivwL0ICu1EkqaIAmqYiG2dEox/dVtKOb1XVgxu2NNUMnRAUdpkUFuXDx+JHfMlMauVqXnHz7lNCAFyb6+RgJ5AnYK08MDPTERUapUpISDy1duPDBdevWhfwnbxBolpb4umyyeqpVjdC0yBYBY58KFLlsSSCTVSamoh4C3Ot1MdVmwsq4ERxWHd0K5Z0+TpwIBee+An5uNoiKckEhKEOgFdCiqsWToZoOz17HV9CASaFVmpPZf+GTT36yq3rDLrLilBgevCEsaEJN0HjfwQDf8RA43g+CAwKo8JBQR3zsFEVyQsKJ5MT4DQtTZy2+5447whD87fhP/60+sl0pnum2yNuoFg12SzIEhr3qILp06OoWHaq/E6a7MUx3mrEuM4KbQLZood+kxUJKjS0RFmCKWgzPMrBrZfSzxM0I2CL3Aiahm3axuBJk3BIoPJNxjpnKz0vb0tJum5cYtmhqePDuqEn+9ZP9/d3Bfv4QhCM4IBAmBwWTUE5FhEU4YiIidVNi40oTYqd8lDR16ouzU1IeWLpgQfzjK1ZMIE84MB/5P6pXV3O/0yTtdZux0m1RYDuDTvYgUPoaNQnVWHyRgsuB27Bd8oZpE1B2zNtYOLlt2P6YtdDXpIFehNytV33zHLGqDpqVBLAEQ7SYAVxJO1iQf4HK//rLYblV+IYWgXT33KlT5kwNeyYxOuTIlPCJVdGTg9ojJgW7I0MmQXRYOMRGRAKGc4iNwhEZQ0WHR7qjIyK78W/DtNgY3pZnfrvlr5ufn/7aa8+OR2rfc3unTnR/b6PI5jDWgLOpHtxtaqy3ECoNGd3swXxMQvW1MG3GHhoBo4sHmw3ofh0MmBugj344TUU/LE4A21XepxCtihoaMnExASznlQAn50z+P5sLK9QTT9zrc9+iaYkLpkevmTk1YhuCPx0fNbFuWlRIZ2JMhCdpSgzMSpoKc5ITYGXaIixmMqnLGYc9O//6Usdjq5dXLpideGjBzMQ1K9PmhZATiOT20vOfrRFcPukWXfkaBLmnQCUpwEhNnEwqa7ImTG6QH3Ix5mqspqnWJjoXuwhgUwP0N6lpF3t/DUDGQEYXXwe4QcQDYcGl7qKzp8hverD6oSKg1t2T6rdq0YzExbOnPZA6I+al2QlR++6bn3yQ+9mOJ3QFpx9tk/JeNddxckqzv2x/97WNntVL5vYumBIuu3N2vHDj+lW9+/66CU4d+huc//QdKDrzMQw0K9DArd5cTG4KIFe5yDIiuTG+C8M0upg4mA7TJBfTgMlzxPJrgMmzxOQ5YotMQuffOk4+xb90biMzbVY/hkgF3aMTPWKX875WFX1ly939R2pH+hJ4Mj4MlidEws4/vwCdWiEMdmGf7GpCviYM010ImAx0MQ0ZXdxpolsm4mInAiYu7mN+06NTRwDX04BbsPAyYQWtrCj2iIsvvMuG5mGUujJ3gl1efm+7nHdYfzXDXnngz1SLnAvuDgIXc+0AAu41oGPxbwf+Te788OAgkMn90zTkRnQxk4ebVNe5GOEqsYKuE4C2qswh5eS+jHB/ns8I3wiSl+X8rlnOA1e7hgHbiPkWq+pOhNuuBo8NC7BmKQyS7eTKlxPHADq5uxGNrUMnNyBkDNNGOUaAOsy/WD3XCzx6cTlXycudx3wNq59CWlHBKpOsvM/VhnCJY8mFD+JiUlFjLh601MGAQQzW2mJ4/+1XIefkB2BVV2L3pMH6izxPrIdB7KcdFgXyJnDF7RZpxfkGYfGvoYT9SaWfVCRsWurL9S6E6QWLrwRcqwqNKgWnSQK9OgGYRblQ9PwD8H76Atiy5i5Iv2suPL32Ptj5p43w9UfboeDrD4GbcxT4OccKFdxs9ieUbhQhuXHOFnkPdKgA7AoEK8NwK8fCqRaLJhF0ayupVmnpV91a7ilD3scD4pdXQ/nDqZD33P3w6aZ06rUnVngee2AhtWJRStt9i1OaVy6da5qXEpc5Nzn28Oyk2AMzEyO2z0qIfDN1xtR3Hl02709n3n97Q9aRXU/mHj04kZkCqx9bTlttymBL/esuS02h01TT4TBK3H36KqpDze1rkRa/QlxOql+ntXr6gE180Fp52lpz8A9O3gvL+0vXLqgueHieI3/Nr/JyV6Zs/nrNHSs/X7/80Y+fXrnt6KZ03WePLaM+Wjqd+nDaJDiZNBmy//Y8VZ51hKovybrEfD2r4ZS1Jt+nW8lL7FbyF1urS2KYzd8SZa3xcdglyXbZ5de1pSc6qk9s93DfeYEq2/oQVfrs3VTZ43eSAZyn7gbO7x4C7rbngP/BGyA4dQAkl0+AvPyiQ8nP28t8HKsbWVSrOGzQWv1Iv577urLwi9WSrEObhZkH9gjPvXdamLn/nDDz0FeCc4ePCrOP7BVe+PwVwYVjmyouZsSz/TArVqxYsWLFihUrVqxYsWLFihUrVqxYsWLFihUrVqxYsWLFihUrVqxYjSTdcss/AII3tUZUUGkaAAAAAElFTkSuQmCC - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB-60/BLV-PIR-PB-60.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB-60/BLV-PIR-PB-60.xml deleted file mode 100644 index 43bab47..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB-60/BLV-PIR-PB-60.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - 9 - BLV-PIR-PB-60 - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - BLV-PB(485版本) + PIR红外探测板(探测角度60度) - - 20 - - - 25 - 1 - Q1 - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - 扫码目检 - - - - 26 - 2 - T1 - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - PCBA测试 - - - - 27 - 3 - A1 - Assem - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB-Demo/BLV-PIR-PB-Demo.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB-Demo/BLV-PIR-PB-Demo.xml deleted file mode 100644 index c846d68..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB-Demo/BLV-PIR-PB-Demo.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - 9 - BLV-PIR-PB-Demo - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - BLV-PB(485版本) + PIR红外探测板(探测角度60度) - - 20 - - - 25 - 1 - QC - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - 扫码目检 - - - - 26 - 2 - T1 - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - PCBA测试 - - - - 27 - 3 - A1 - Assem - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB/BLV-PIR-PB.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB/BLV-PIR-PB.xml deleted file mode 100644 index d997ed4..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB/BLV-PIR-PB.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 9 - 2 - BLV-PIR-PB - P_BLV-PIR-PB_20210925_175737.png - BLV-PB(485版本) + PIR红外探测板(探测角度60度)调试使用 - 2022/8/30 10:29:22 - - 20 - - - 25 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 26 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 109 - 3 - T2 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB2/BLV-PIR-PB2.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB2/BLV-PIR-PB2.xml deleted file mode 100644 index dd0763c..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-PIR-PB2/BLV-PIR-PB2.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - 9 - BLV-PIR-PB2 - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - BLV-PB(485版本) + PIR红外探测板(探测角度60度) - - 20 - - - 25 - 1 - QC - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - 扫码目检 - - - - 26 - 2 - T1 - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - PCBA测试 - - - - 27 - 3 - A1 - Assem - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDwDvXf+E/hy+tWqX+pyS21q/McaKN8q4PzZPCjOMcHIz04JPh14Tg1mWTU79N9rbPsjjOCsr4yd3fABXjGDn2IO9478dfYfM0jSJP9K5We4Q/6r1VT/e9T/D9fu8NevUlU9jR36vsZTm2+WJZ/4VPoP/P1qP8A38j/APiKtf8AEm+Gvh3/AJ63Mv0D3Mg/9BUZ+gB7k85PhvxJ4a8PeDFubZt182BNAxHnSzY/SMdj0A9WJBufFf8A5Fa2/wCv1P8A0B64Wqs6qpVW3Fv0vYy95y5ZbB8KP+RWuf8Ar9b/ANASsnxZ4T8P+HfCXTdqrbVimd2DSNuBYhAcABc9uOOSTz0H/Em+Gvh3/nrcy/QPcyD/ANBUZ+gB7k81f+FsaD/z66j/AN+4/wD4unGVaVZ1aSbi36XsCcnLmjsVvAngX7D5er6vH/pXDQW7j/VejMP73oP4fr93n/iJ4rj1i8TTbGVZLG3bczqv+sk5GQe6gHAxjOT1GDR4s+IlxrEUthpqNbWEigM7DEknqDgkBT0wOuOuCRXBd67aFCpKp7atv0XY1hBt80j/2Q== - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-RF-SWG/BLV-RF-SWG.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-RF-SWG/BLV-RF-SWG.xml deleted file mode 100644 index 105b981..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV-RF-SWG/BLV-RF-SWG.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - -1 - 1 - BLV-RF-SWG - P_BLV-RF-SWG_20220311_091733.png - 宝来威客供系统机 微信无线网关模块带黑色壳 - 2022/9/11 9:16:33 - - 0 - - - -1 - 1 - Q1 - AOI - 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 - - - 扫码拍摄 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV_A10/BLV_A10.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV_A10/BLV_A10.xml deleted file mode 100644 index 19036c2..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV_A10/BLV_A10.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 18 - 1 - BLV_A10 - P_BLV_A10_20210925_180018.png - Boonlive A12 RCU 主机(A12主板 + W5500模块组成 + PM-1202电源模块 ) - 2022/8/30 10:29:22 - - 0 - - - 52 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 53 - 2 - T1 - Test - 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 - - - 烧录 - - - - 54 - 3 - T2 - Test - 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 - - - PCBA 测试 - - - - 55 - 4 - A1 - Assem - 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 - - - 成品组装 - - - - 56 - 5 - T3 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV_C12/BLV_C12.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV_C12/BLV_C12.xml deleted file mode 100644 index ef0b49b..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/BLV_C12/BLV_C12.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - -1 - 1 - BLV_C12 - P_BLV-C12_20211105_161523.png - BLV-C12客控主机 - 5/5/2022 4:14:44 PM - - 2.00 - - - -1 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - -1 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - -1 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - -1 - 4 - T2 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/C43-T/C43-T.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/C43-T/C43-T.xml deleted file mode 100644 index 33b9078..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/C43-T/C43-T.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - -1 - 3 - C43-T - P_C43-T_20211208_095844.png - T1触摸玻璃系列,弱电485,不带边框,半成品 - 2022/6/8 9:55:47 - - 0 - - - -1 - 1 - Q1 - AOI - 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 - - - 扫码目检 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/CXW-BC01/CXW-BC01.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/CXW-BC01/CXW-BC01.xml deleted file mode 100644 index 8851e14..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/CXW-BC01/CXW-BC01.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - -1 - -1 - CXW-BC01 - P_CXW-BC01_20231024_180807.png - BC01 直流水泵无刷马达驱动板 - 2024/4/24 18:07:05 - - 0 - - - -1 - 1 - T1 - Test - - - - PCBA Functional Test - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/EV2102/EV2102.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/EV2102/EV2102.xml deleted file mode 100644 index 7e78ecc..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/EV2102/EV2102.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - -1 - 1 - EV2102 - P_EV2102_20211113_113121.png - 梯控主机 - 2022/5/13 11:29:41 - - 0 - - - -1 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - -1 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - -1 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/F305/F305.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/F305/F305.xml deleted file mode 100644 index 16a90a1..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/F305/F305.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 50 - 3 - F305 - P_F305_20230922_175554.png - F305 防飞房取电主机 - 2024/3/22 17:48:39 - F305 防飞房取电主机 - 0 - - - 136 - 1 - T1 - Test - - - - Main_Board PCBA 测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/FVCO-1900/FVCO-1900.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/FVCO-1900/FVCO-1900.xml deleted file mode 100644 index df3bc27..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/FVCO-1900/FVCO-1900.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 3 - 1 - FVCO-1900 - P_FVCO-1900_20221030_161936.png - FVCO1900 压控频率发生器模块,7x13 = 91 拼版 - 2023/4/30 15:33:50 - 飞思腾 - 0 - - - 5 - 1 - T1 - Test - - - - PCBA NailBoard Test - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/GTM-W53/GTM-W53.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/GTM-W53/GTM-W53.xml deleted file mode 100644 index 8766ab7..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/GTM-W53/GTM-W53.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - -1 - 1 - GTM-W53 - P_GTM-W53_20220108_150447.png - 猴多纸-智能纸巾机网关 - 2022/7/8 15:03:57 - - 0 - - - -1 - 1 - T1 - Test - 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 - - - 成品功能测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W53-2/ITM-W53-2.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W53-2/ITM-W53-2.xml deleted file mode 100644 index 297f7a6..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W53-2/ITM-W53-2.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - -1 - 1 - ITM-W53-2 - P_ITM-W53-2_20220106_114252.png - 猴多纸-智能纸巾机,取消三轴传感器 - 2022/7/6 11:41:16 - - 0 - - - -1 - 1 - T1 - Test - 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 - - - 成品测试 - - - - -1 - 2 - P1 - Package - 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 - - - 成品包装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W53/ITM-W53.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W53/ITM-W53.xml deleted file mode 100644 index 24e6fb9..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W53/ITM-W53.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 1 - 1 - ITM-W53 - P_ITM-W53_20211229_115032.png - 猴多纸-智能纸巾机 - 2022/6/10 19:23:37 - 猴多纸-智能纸巾机成品 - 10 - - - 1 - 1 - T1 - Test - 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 - - - 成品写码,测试 - TP_1_1_REV_28_20211225111959.uts - - - -1 - 2 - P1 - Package - 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 - - - 成品装箱 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W56/ITM-W56.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W56/ITM-W56.xml deleted file mode 100644 index d897828..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ITM-W56/ITM-W56.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - -1 - 1 - ITM-W56 - P_ITM-W56_20220223_100950.png - 猴多纸-智能纸巾机,型号变更。 - 2022/8/23 10:09:16 - - 0 - - - -1 - 1 - T1 - Test - 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 - - - 成品测试 - - - - -1 - 2 - P1 - Package - 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 - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LC2000PA-MASTER/LC2000PA-MASTER.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LC2000PA-MASTER/LC2000PA-MASTER.xml deleted file mode 100644 index e81eb3d..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LC2000PA-MASTER/LC2000PA-MASTER.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 1 - 1 - LC2000PA-MASTER - P_LC2000PA-MASTER_20220305_153011.png - Master,2.4GHz RF UART透传模块,20dBm,Arduino优化 - 2022/9/5 15:04:48 - - 0 - - - 1 - 1 - T1 - Test - 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 - - - PCBA测试 - - - - 2 - 2 - P1 - Package - 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 - - - 成品装箱 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LC2000PA-SLAVE/LC2000PA-SLAVE.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LC2000PA-SLAVE/LC2000PA-SLAVE.xml deleted file mode 100644 index 285179a..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LC2000PA-SLAVE/LC2000PA-SLAVE.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 2 - 1 - LC2000PA-SLAVE - P_LC2000PA-SLAVE_20220305_153041.png - SLAVE,2.4GHz RF UART透传模块,20dBm,Arduino优化 - 2022/9/5 15:07:39 - - 0 - - - 3 - 1 - T1 - Test - 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 - - - PCBA测试 - - - - 4 - 2 - P1 - Package - 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 - - - 成品装箱 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD-1810A/LD-1810A.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD-1810A/LD-1810A.xml deleted file mode 100644 index 07c900b..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD-1810A/LD-1810A.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 28 - 3 - LD-1810A - P_LD-1810A_20210925_180521.png - 1-10V调光模块 - 2022/3/23 16:38:24 - - 0 - - - 89 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 90 - 2 - T1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABh4SURBVHhe7ZwJcJvneedtx7YO3qRI4uIBgjdAEiB4gcR93wdxkgAJELzv+z7ASzxFidRl0ZYs2bItS3ISV05cx07rK07kxPFmNp3O7HZ3dne6SbPZ2e322LZrO/rvCwXtNJ1dT2rJbTzz/WaeAQni+/CCv+953uf98AGPUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUPwTPjo8fOLdwRn/3anNlz/wdKz84OKh4afvvpsV+zPFVxXcuvW175o8vvebu//4hx0T+LB/Ch8dXsYPrlzCO4vzf3e3d/KV91zhlrdlwaOxTSi+CrwdiTz+rt7jf19h/rcfSOz4wNqKn5y7hB/fuoH3Fhbwga8VP25sxffMPnxLqMJtmdUd25Tid5nXBweP/KHG1f6+2PondxsM+NDfhR9tnsbHX7+Bd5aX8L1QF+629OCHbX24UyrE1dwSXM4vw2mr9c0bLxxev/7c4bO3bt2Kj+3ucwkGg0cNWq3GZbGwY3dRfFmQjI3/YHJ1+O7S3n++6wjh+3oXPj59Dh+//DI+2NzA9zxN+FGAyHX48Ua9GldZHFzK4uCAU4SLTc3Y6Ahi6eQMOvrC2Fqd//7CqYh1bqSTHtv9/5OamrrJSoEAdVXVf0kOiidjd1M8bF7jK13vii3//R1PG+6+8CzeXZjHm1obPjyzg/dDnfjQHsBPwgN4SyDHS8wCXGTl4iCbg32Svac1OiwQsaOdfiwvjyKyOIjgQBNCwy3oGg//TWRz+r3Z7aXRGzeuGT788D3z/v4+L/a0jxQXcG/TMumo4JX9BYBHY3dTPGxu5/MPX2WW4Dt5fLxb0YA/0BjxfrkMP7L48JGtBe+aXHiRVYSnaGwckMw9k52HrZ4AFlZHsT7Vi8jJSUy1efH0hS1ElvoxvToOx5APQ7MD0Iat6J/vw/TCCObWprF14cxnZy+en4xmbGFu0X9hpTNRJRD++9hQKL4MXi6v2/86sxjfIJJfpRfjDrMUNzhleJvbgJvZXBxm5uE8PR+32zpwvTmA5VwO5mZ7INPVYrynCUOjAXQPeHHt+gVcunIaXetD8O+OoXGlB5bpNrTMd6N7pg+ru8uY2VhA10QnAuPhP8+m54CVzoJEJLobGwrFl8GNSvnazaxS3GYV4zYRfTOLBPn5JVohztFysc/Iw15lNS5c2sHq4jD0igqsrIxibCSIrbUJfP3WIa4+swPbuA85LTWoGDFCPhdAYHcc5uVeVE56EJrtI9ufxtXLF9C9PIbx+Qkw0unIZTKhNqk+1Y+4X9MuN3f2n+tnxIZF8TBQrzWJ7YvBPxpq1GO7oAQvRMVGBWeV3I+9zGxM0uiY5gsxMt6JNrUMoR4v1kkZnpvpxsr6BHrW+qEcMKNxrQeBkyOwrnZDMOFA2YQNQiJ3/toBDp89xOHhPl5+8TLGxwYRCgZBz6CBnc1EOByC1qpG5ZgNZXPWz2rX3B+Jt/zztvN9/MjbkcdjQ6X4InREmj42L/sgJv/cVA0HBeUsNOfn4GxOMa6TeXeSToeKnY6S+mKsbE5janUIXdOdePrSLpF1AZMbY+D2m0FvrUPpiB5FJGojTeDPOSFbasXlb93Ea9/9Nl5/83V89zt38Nrv3UZ3TxgCQTnKy3kkKhDsDCJbkI+SYRN4M+TAmLegJGJFyZod5bvOnznOtW7Hhkvxz2V6ayi7baplzTnu+0+aYSuq+3XI9lQiVZwLHpeJ4nIm8uy1kHeb8fRzBzh9dhmr27OwRzrB6BQjq08Kw3onWnZGYdntQ8GUGcXTNnQcLuOdH/4At9+8g/ln9rD+9DaWNkZga7cjMS0Z8UlxSEyJwwlWJjJyaSgQFMOy3g3erA1Fc2ZwIibkrVnRsOXD2uX5N2LDpfiikK72a/2L/ZrmiZYX7KPOv1ZM2lAxaQJ9UIyEoBD6mQC2n97D3sVtdJISbNsZQD7J+sweCWi9cjD6leBMmFEx78GFb17Dex/+ANukHI9c2YVkuQ3+1V40TwYwujGFVFY64pKJ3MwUlAh5SC1gINfRgOJJO/JmjchbMIO9bELDtg/rzyy/9dZbt5Jiw6R4GBweHiaF5zs6/cv+900rtl9VL+tRPKeB8qAbyaMSxE9IkLNghf7MAPyX5lG45AR7xgL73gi++c638a133sDiswfouhQBd9YF2ckeDO7NQdvrgDCkwxNyNlJUJahW1UDr0iLFXI7UYB3Y5IBizxnBXjJDth3A5uWVb9+5c+d4bFgUXwYLZxaKwuvhbc9W4OeaHQeKtg1gbBhB3zQjdVkL1qoFBWuNiNw4h/f/zfdx5ds30XdpE64zUyicd4OzYEf+ogOWlTAMI16snF1Fsrccj/mKwAjWIDNQg8f8ZUgbkiFn1kCy1wTDbjv2rmzeev31gyOxYVB82URPTIycHrGFtkPfcu42fyo760bJfiOyTzVi6PYOvvvj93H4+7ew+PVLqNgOgrXigueZRXQ+vQZZdI7eHcbU6Tk0bg0ivVuCr7WW49EgF0+Ey5AyJELWnBbsRSNcez0498Lp595++22qe35YRCKRx4M7fbTf9nTh3rU9Zv/B6HRwv/PfWc40oebAB+7ZFuivTCF3pxmsbRfoWw4Sjcja9MJ0agAnn9+BaDlASn0jzGeGUL/aitQhCRJGRaAvaZG7akLLuUFcfenShWg/EHsqigchKjSwGrRbVn0/VUec9/Rr3p80rXd2RM5Hfqt3g8iB8djilRVDeCf8iWGHLIvOelB6zoWs00QwyWwGKemMbTdoJ52o2e7A2iuXsPmNK5i7eQ7anR4c669D8qwcOSfNaLs4fO+5V57Zos5JPxwebV5sVVgWmz6Qk45VRjpX+aIV2jUntCddUExZf9k0GSqIPfZziZbus+eWfz4V6UL7UhD+00HoDzyov+BFIRHO2nOBSeRffecOps/NQ+ougypQhY3Lm5h/5QxY6yZ0Ho7fu/7NK4uxXVI8CJ4ZT7V53vmGcsZwTzyhgWSGyJ23QUEEi8Z1yPfwwbZUwD7e0hjb5HPZfX43Ltzh+8Tu0MHf4sD61gJOnp2Fb9FHGq1WKEgJL9t3YfIbu3j+jZs4/+wpnLm0jks3nsLBnesYu7zw6Yt3rnXHdkfxRXHO+sp1c8ZvyiY1v6qfUKGBhGxGD+ksWW9OGsDxVCJTygZLzAZNwoGs3/Idz+ZABdn0c0tmdXWlIyubiewcFticLEjkYkxM98EfdmLrwjpGN4fQuNQIO5mPW893YvzmCgZvbSP8XASr13b/9qXXrjtiu6L4ItjnvRz9pP1F8Zjx07oxFWonlGiY1kISjQktuP4qMCRZyKhmIlPIQpqADoY0H3WDdqg22u9Jt8J3ddu9PcGrkeTYLn8DFoP+fGJSIpJTEkFjZCAlLQXcsmJkcWiwuCzo6G1Dd38YizszaIu0wL3hhmffi7WXVv/ilVdfVMd2Q/FF6DrsekI2af0fonE9akZVqJvUoG5KRyTrUN4mAkORiwxhFtIrGUgqSweNCE4XkmzUCiAa9qFpZwrB84vQ7/RBu93xV7L1lhcaTw3rrly5FHC5dH9odxg+zkhL+TQhIQ7H448iPjEOiclJSEpJQibjBE6QyGYzkMthwU5ktw8F0T/Xjdmt4T/bf3n3H974p3gAZNO2nwknjKiZ1EM0oYegWwymrgAZNSykkmxN5Z5AWlkGMvlZYImKIPNpUWOqB98kRmhhGL2n5jB87iQmzq2i5+QEPNvD0LWShswghUhchaTE40gkYhOS4ongBMQlxONY3HEiPA5JqUlIS09BemYqkk8kgcGhQ6Guh8Nh+shsNlNnqB4GymnrO4JxEwQki4Wjul9nbSUTGXwmEnkZOFFBx4nqLFS5FNA4tWDx2eCrqyGQCmENOeEfDGL1/A5cZE7Ve3WY3I+gXF+NKlEF6FnpiCdiE5ISkEDkRgX/fUQlH4s7RkQfI1kdj7SMFKTRToBXXozk1ATweCWe2BApHgTdpHOzcsyE8lEtykbUYKrykV5GIxlLyjGRnKsshdKlBKsyH/laIZFbA75MCLPHAq1OgeagFxK1BCqzCqY2F2rCRqgcaghry0BjRgUnEsGJvyE3mr1Hjx8jcfS+4GjEJRDh0RJ+Ihl19bUwmUydsSFSPAjRs1SN04EQv1/zl6y2amRqOaSZYoIlKYGyUYFCcTHKLLXga2qRUZoFVa/7fubaAqTr7QmihFeIKmE5amsqQc+ho94sQzV5bAXJcgaPjeOkDMf9I8F/X6KPHDtK4sg/EkzuJ3P1scRjEEtlcLm8Y7EhUjwIsogt+cSw8EJqoPwzYb8ZWTY+ssxCZLkbUOiRgKcWgs5hwtRsQ4NVhvBwJwZXJhFeH4N7sRt1xgaU15cjM5eGeo0YnslONE12wRJsBI+ITuLlIrmUjXhSfp8kJflJkrlHiOAniODHjx7BkySisqPSo5JTT6TBYrGjtdXvig2R4kHo2bCNVK5KkTBQgiO+QmQ2CUFrqsUJVyWyg2LQbAJI7SqI5DX3GyC3zwaJpBa1aiLWI4dszAdlvxu+Dhe6ZvshGXajYNiEqsFGqLq9yK4oQVpBDoqrSpHCSsexFFKiSSZHJR+5X6aJ8Gg2Hz12X3J6ZiYMRiO6urqqYkOkeBCi53YH1oMh85L1b8pm6xDfU4DHvLnIaZOiotcEeZsZ7k4P5DYZjB4duPwiNIiqwOdzQWNlonHQD2e7GwPLYxhYG0f/whAcY20o9+vAKspDBo2OeLIsYqn5YEp44BDRR0gTdTw58dclOTofE7HRTD4WF+2sk5FTwoFrtaeZelPhIRKaCpVZR8y3pKPiz4qnBcgeE0O31gnlVAscC50QtukhblJDbBQjrygHtDwadFYN2iJD6FgZQf9MF9rn+xFcGIDYqgUjm4UTNBqOpyXhSDrJViUHSQ5Syh1VyFSUI60kB0fTkvEk6bKPENG/Lt1HEZeeBJqgEIWDRpRMmf9DdcSz4NobZcaGSfGgOHt8AlWX4ffEo7Jf1a/pULZiAXNMBUZ7A3idalSElKh0SeFoNqF1NIzqHhPySRdeO+6CbbAFedwC0JlkacXIIAITEZeZgmPVpCP3V+Mxcz4eUZM5WccFU1EGuqISWXXlYPCLkVNVgnQyX9OJ3AJjHUy9XsiWmlA0Y0LpnPWTyojrjmyj2dx1ePhEbKgUD4K7z81XdOlekYwoPhEuiMGYaUDmoBglgxooyLzbsTmBruketI20wjrgRWGbCiwiLT2LiZT0VCSQzE0jzVk+ORjYHWocUefhuCgLR6R5yHM1QBLQIVFTgONS0rVr+cixVCFOzEaRTQSRRQ7HRBvsk0EoneSgqikD31QH/rARkjXfnwq3nCv2c2OFsaFSPAjadld+Q0h1tX5Q9H9qFuuQuyBBwYIJ3DE7lIukY14bRH2flTRkEmTWFSI+PQ3xRG4GPx+8gAa5blLSJWXIIkuo3FwmsvJYyCjLQbKcg68pGXhUHb3+qgA56mIkEOEVHQYY5sKoH3Ghwa4EuzD3/rnr0rIimL06NA03w366E9pTnZ+Vr7vekm34m2ZORQrlUvEUWTtH3/z4DQYPBqnLen4bTL2NefVtyivioYa/q1uVI29NAe6aGzkjRGK/Ejm9CrDsVWRuzQJNVAy2twE0ayU4DTww2Uyw2SwSWcgjkZ3DQHYBE3HGfDxuLYJzth3BoVao3BqUtahR1k+mhjELWbIJUUiyN50cHEJZJZqmAvCv9GF6ZRyyjRZwB3QIbPRCqpfe45eXQVRXc0+haHg1NuRHBk5PNJi2HH9l2mh807HX7KZk/xbYhr25kjbtBfGI5H9LNtXI29AgJ6JH7pgaqX4hnjAW4JixFMm2cjJnGyAk5ba8RgAWEZsTjVwW8gtyobYoUeCtw3EnmYv9tRANNcI814Lm+XZoR90YXB1G53AbhNUCcAVcVDWpYJ1rRc9MPyb3lhAab0dtHRf14nJyAGXeP9XJYGbC4zF/0nMwF56+upnr2Pb+iXrTBt22GbpNE/Qbtl+YV6wXg6e6imMvh+L/h6vbxZSE1adlo/K/FhPRxXt6HJ8Xgd5N5lI3F+xuJXiDJlT61dD6zVDaNKisEyKPlFy1RYXaJgWSPXwUhxRQeOUoCqtQRh4vHLYjNNeFYLcfWoOaCOajsoqP5tEgBvem0bY+gva1MeQWsVBYwkYxLx9sJRc8Yy2yBHkYXuhAx4UxqNcd9zRbNig2LFBuWKEhojUnLdCsm6BZM39m3/Kejb0Uis8jOBGk1bcptqTjkv9lOaWCuLuOZKAMFcMS0PrrUdejg9InAdcnQyWRSnPVgNumQIqnEoVhJdxdPgQGgljcW0TTWAChPi+cXguMVgMsdgvcHjcW5kfw8nPn8fzNpyBfCkA16Ucg5EOFgIdUIto9Hga3gY9qsQCuIQ9ksyRrdxzQbDvuy5UTsSpyq1ozQUdudRs2tOy2UB93+edgC9qSq72K3rpGzazYKzulCNX/uXhMjqxBGaRTLqT4q8Dvt4HXooIgrEZzbzOMHY2w+W2YnhzA81cvIrIwjgEiu4ybD5GoGkq1HDKFFOsrY7jx0lMIrPdCvuBDeKEXFULSWZOoldTA7DRDYlOjyiFGaLEd+l0PNKdc0Ow472ew/KQZCiJXSUK1boZhzXKv70wHPzZ0ii9C70xvinXS+jp7qgZP+ksQ76+EaMCBIFlSjQx4EGrWQNlpR5VdgiavGStEbm9XAF6nEZkn4sDITASLkYqsLBp03Va0L/ciOBJE91QPxFYZmCw6clhZKCzkoKSKB051IZq7fdCtELF7Tuh2HSSLG6HeskNGyrJ81fgPgq0R2x9RV2c+BNpOutLNo5o/Vo9JwWkvR16HGCPTXWhqkqHYUA066brz5DyMDbRgsMsLl0sDgawc6QUZoNGTwM7ORB6PDdmEC/JJD7zjIfQs9UFil4KVTUc+h026cjZ8HR7IybKtsl8G4ZQUml07yeJfC46WaemaAfI14/0s1qxY4Ik4+mJDpHhQurq6jiubleOGTtnPFF3VqOluQC1ppmjeGiQYSlCjrUWjWwVfsw5GpxR8owAJzlKwHFVQ+o0QhFSQzUe/06MZuj4HtN12lHA5pBtnIjPzBBg0OmSkGtSO62HaI2J3rKieEKNqXAIlmXujJVp2kgheN0C9RrrpSd1Pb92KUF/o8rBxjbqOyVyyQbGv6k9rOyuQ21uFpNZycFyVsPvl0Dhq0dRhgKJDiaoRI3avnsP2U7vYeO4A0pUgLEshlHkl4FeWIj09DWknUpGdzYKovhr+IR/pjO2w7vtgPEfiLIl9D0SLaggmGlAfUZPsJRk8q7vXstZMXcj3ZRIVLbVLh+Xuup83dNSASUp3Tnsl5BM66GcNSOsUYuXaFtwhO/ILU1ArLsGVV19CTVAPkUaE1Oi1W6wM5JISnZPDIMsvORQzJhjONMJ44CRyXeTWA8u+l2RzI0yk2YqWZtkUkTyieC02DIovm2jplprFQypv1X+VEcEF4TLkDTSAM6aGeM6Jg2sXcfL0JkZnh/D0nevgdekg0JCyzkjEkcQnQWOkQ2aUQdmjhWLLCu0ZB/QHjTDsO2A6Q0STZZLpFLklYdgmzdaU9m/7T/VT56//pQkEAnFyc/2YwiX8WUOwHOwQD8ktpcgblEO7HID9ZBjsPjlquoxoDjWisCgL7BKSuUYJPO0O8NxVyG+pAH+0HvINA3R7NuhP2aEhSyNDtNHaskE1r4NzxrQZe0qKfw2iomV64ajUUfELkZ8HZksREkkkhCqQ3ipAprMMXLcIOaIC2BqVcISdYBv4KGqsIPM4F7nOEuS4i1HUWYmaWSnUm6ShIpmtJssi9YDy55GDwcTYU1H8a+J2u+Mb9PwJkYX7y2ovl4guQXKoDBn+CjADQuSFRSj210HQJEe2nYscSyGyrcUkipBlKyRRAI61EKXNPNJZS1A/3ABNp4T6bNPvGnq/PrFKVTHJNZf+sqSpFNlENIOUYjqJvLY6suZVo9AnBN2QD4aecz+YxnzkmAqRZ4wGEW0uRn1L3X+MRCLUVxn/rqJ2q5N46vIlrqH4f/J9xShoKSOiBajoV6G+1wBeSwMyNRxkqHPB0HGQqy8A21hEynchCs2l0HcoqaszvwqYmk0plSreYpWF+98qveUobi5DUTvpugM1YHsESNWxwVbng6MtRK6h6H7U+mu/H/0QemwXFF8FNAFNnFBdOiPQFf5ZZWMxmA42jpsYyHEUvac1NOxoG6Uf1TtF94qtvE9tvdr62GYUXzVkbll8papkskpf+It6bz4cvdLq2J8eDXa4+e3DLSWx3ym+yoyOuo5ZfbIqqhRTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFD8C/LII/8XOiyFNY4YUGgAAAAASUVORK5CYII= - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD-1812-PWM/LD-1812-PWM.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD-1812-PWM/LD-1812-PWM.xml deleted file mode 100644 index cb5dd91..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD-1812-PWM/LD-1812-PWM.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 24 - 3 - LD-1812-PWM - P_LD-1812-PWM_20210925_180413.png - 宝来威客供系统机,2路PWM强电驱动 - 2022/8/30 10:29:22 - - 2 - - - 78 - 1 - Q1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACkISURBVHhe7Z0HeFT3lcVVRtNnpGmSZjTqBRAGCQSiI4ToEuoFiSKQqAbc45pAbFzABmwDBmMbsCk2BjeKMRjUe6/0YsAlZZNsNs4mcWzr7Pk/zXixk01ssrsBMvf77vd/780gS+/3zrn3vjeS3VzhCle4whWucIUrXOEKV7jCFa5whStc4QpXuMIVrnCFK1zhCle44p8UcHNzd2y64laLVSbV0rUaj6bn9R7vb9J5rXnRx6tgW4hPzI6YYJ+VK1d6ON7mipsxVi5MUc/X6z5fotDgHoUKT8s98ILMredFT7evt8ncf7Nd6dm+XSPfucOgvP81u37yq+MjA1zQb65wz7f6VmTpvJHD/IlagRc83bDV3Q0v07lfYb7kWLeJVLl/9d7SwnN1DZUbaxuqZ5bXlg+or6/XA3BZ/I0W+3Ki5WUrE2SLYvrMzNbpem7XKLGecDcTrgAswH4rvdzwWkwYqo+/j9rGKmY16ppqvqptqvtVTX1NQ3V91XauS2saa4a2tbX5uKD/E2N1iGHyeoX7r55XuP98o0518WnCe9bDDRsI8gXmZkeK7S0CNl97WS/DB2tWSXBrJMC9kKsaalDTUIu6xjru14r8mtt/YJ6ubajdW9NQ90BtbdX0mpqa4HPnjigc34Ir/q/imREDfZ/UeF5dT6jPEdx6AlxPkM8xn2duFNviuIzQ5W7YxPdtVbrh9aRhqK0uk6A6s7qhF3B1L9hvQIusb25AA1Os9c31fL3qz/WNlVdqGyrfr6krf7KuriKrqak6vLu7W+741lzxj4ZokB73Ve17RtELUIJLmM9xfV6kgMt1HV9bK1TN921SUb3+Gpx4bRuB1oCqJMgaCex30wlagtxU3wu5pRGNTLE2tzVJ2dQqjtX3NLTU/7mpteHTxpbaw00tDT+ta6nKrG+tj25ubla7LP464olQ06wnvdy+FvDWsd4KwM9zfYGQN3FbqPdZ7q+lctcT7vOEu1nrjv1zclBTX06IVG19L8zK+l71fhdwTVMdaoRimQKyE3BjqwDbhJb2FilbO1rR1tmGtq7e7OjuQHNXM7dbvm7pbPxlc3tDeWNr/YaG1tqC+taqmNOnT+scP4Yr/lo8PtwesErt+fNnBFwCFICFFV9bczcK9fL1Zwh2vdIdmzTu2B5lQ8Whd6jaSkKuRoUD7nfzu5Crmd9VsUgJMOG2djoBt6OdcDtOdqLzVCe6Tnehi2vn6U4eE8el/Kq9u+1XbV2tJ1o7W55u72qc0dpaH9Pe3q5xKZ0hrHmVWX3wKVrvM077dXbMBCvyRaaw7bWst+vUVK/aHVsNnjj08D205goJcNV3oFbUVUlZVluJivqqb6vYCZhQG2jJAnKTsOf25l7ADgW3S4DbJQV3nhJwr8nT3eg+042TZ0/h9PkzOHPhLM5ePCttnzp3sufkma7fdp/pquN7t3aePlnU1t0d29nZadi3b5+n40f/14jHgnxmPe7l1rOaYJ92qFeo1Tnjipl3s7Bmwl1L9T6rJXCNG3YP7YeqimMEW0F4ld+ALXeAFVBLCbesrhKlDsBOyFI9FjbdQgWLmkt7biTgRgHYadHCnp2QmZ1Cxc4kYLF2nzlJmKelPHvxHM5dOo/zH13AhcsXpbx09SMpL398Waxfnb988bfnL50/efbC2Z3HMpN+fCDWmvZu2pBA3Ko3aB6PsQc8qvT4t9UEuIZwBWAxEgnFbmfuYIpR6Dmqdx3hriPYTcxXDF44unEtQVVSwQJuxbcUK8CWEGyJYxWAy1ijxQVwtPQ4dryxB6ueXoM9+98kaHbSAjRVXE/YzW29KnZatLBnYdOSkh2AnatQslCxACwUfC3gS1cu9cL95AqufnoVH//sk2/ywumTOJ6ShLKJCSgdM/jrkpGxV4/FRx04MjhsxaFhYdMOjY8J2JeTc3MrXTxEeNhH/uYqQl1NgGuo4LVcNxOwgPsaU9yh2kj466neZwl2I/NlvRv2JiegutapXAG3/BvAAu4JAZavSymBrkCZA/JDKx/FU89twCOrnsCKJ1dLdbu8VszNnJUJWth2s6jFrMOiFjvtWgBtF1BpzSI7BNxvbPqkZM0ihZJ7IV8g4F7IEuDPPv4GcNvBdwl4AspTJqMydRrq0qejPi2ZORU105J6KhPj/3hi5IBT78eF7T4Q679kV3yE3nHabp64Z0j/wGKj/qs7dBo8rFFgNUELpb5Mxb7qAPwSt58XNZnq3UC4W3XueC1Ag9K9r6KK6v024F47PkGYJ2pEljPLpNUJupQXwGNPP4Onnt2AOx94GLvfeRvPbd2KTVtfwrZdO/HG2/sl2BXVlTheXoqyqgpHo0WLJtAO0WTRlju5tottAj7psOnTFwhYrIR8/qNeJfda9CXJoq8S8Cc//1TK2qefJOApqCDUqoxU1GWmoz47A00zctCcn4uWgjw0Mxvysvh6Mo6mTXjScdpunhAWlBsSVJXmZ0W2NQAr9ApsJGBRd3cyBWRxW3IjR6KNbKxeZO3d7u2GA4vnoKaxQrLnawGXcT3xDeBeuMermQ7I+w+/h4PHP8CxyjK8d+wDvr8W5VTv1p2v4rnNW7Drzb3YumMHXn7tNWzZ9gpe270Hb+x/C0eOH5Nukog6LFkzFeuELWrwtXVYsmmCPUeLvuiwaSdckUK9Yi2ZX4jS6dNQRbDVWRmoy8pEQ042mvJy0JRPuDNnoHl2AZpmFaCuYAYqZ+b85tj87FDHqbt5YvHYEYOm26x/TLX44TGVJ14gUGHLArDIV2jXW6nsl6ngHQS897YAVB4/zC646luAS9lJlwjAQqkSYAG3VALsVPFTzz+P9Vu24Il167Dl1R3Y/sZuvPfhB1Q2x6jmRqq/lvZOu+a67713sX3PHrx18CA2vvgydu59E1te3oYNWzajRYCWau9JSb2iiz4lOmcqWNjzWaHeK6LBuqYGf3YVV3/Wq+AL3Z04RlsuS00h4DTUZmeiPi8bjXm5aJyRiwZmfW42j+WglqCrqOTaWfmoyMs4U1KQOvaGb8hWG1X2tSZ535XBwUoxJy7qG7L5QY1cgis6513M1x25m8d2swa/zhr8BseiD59ayRm2hoCrCZhgGkW3TGsm6NI6AbdXwccJVChXAP6Q67HaMhypLMGh0mPYvncPdr29D6sJ/Hnas7DorTt3EvjrvBD49Rrq0NTRhubOdrR2dbIpK+H41IaXdryKN995hxZ9Cl2sud3nTkl58jzVK+ASrGiyRIN1USj3k8uSeq8Q8McCLtUrso3/7ZK0FFTQmiW4wpIJsIVqbeYqsnF2PprmzEQVX6tgnshMRc2cWWiYX/RVRV5m7f4BQQtWJiTIHKf0xomHYiMsj6g9P+XM++Uznu6frVd6dq5TuH8u7lQ5lSvA7mXuY+7n8beo4rdo0wfGxqKWAJ1zrBh1KmmxonESXfI3cAnzQ5ECbE0pjjpXKvqYgC7eQys/XlOJDypKaddH8cqeXdj2+uvYSnve/dZ+rN2wAe++/z6OlJYSdjtVy86ZnW8X1Xry/FmcPHemFzDhivVawCIvCvV+TPV+2gv36s8JVyQBVz/xU5xITUZFFtVLlTYKqLTjlsKZjpyF5nlz0FQ8FyXZ6VgXGYF7lSrc6yXDUxYjXo6KwIs+qp7NkcZCx2m9ceLuQdERC4Jtf/qRSY/HCe4ZAhT3mcXNDFFzdzvgvsV8m8dFvsv3vWPyQsWrL6GumZ0us6apVpppRQcs4IoU9fc4VSzBrS13rL1wBVjnKt5zgqoXKY1OTQ2oamlCbVsLqrmW1tXh7SNHcOjYMezcvx+Hjx/HblGLCXv/gQNoP8XGSkCmLYvsJmwB+PQlzsGi/tKezxPwRQL+iIAF3I9/0dtciW76KIGWZaSjMiuLgHMJdxZa5sxG29xCtM6dgxZmc3Eh6opmY+uIYSj080equwzpbu7I43mZx7zP3R1r+vjf6zitN1YUR0etmBVkxwqlB9Y6bmqImxkC8B7mm0wJLF8TcN9jF300jyMEodY2054dKRRc7lDvCaakym8AO+GKLP8GrgD/9rHDeOfYESq8gv+eLiAAswbXcP6ta29FQ2cHmqjY1pNdaDnZLe2X07YPnfgQr7/1FjrOUrUEK9Qs4PaCpk2Lu1hMJ9yLtGgB+AoV7AR8iv+t47TmcjZWlVRvlai5tF6h1rYFRWgrmoemwtloZFbzQtgxbizSlBpMdvPEdDcPZPDc5BJ0kZe85ydDbxvhOKU3VqxcmSCbHWw/+IjSXQIsaq/onMVY5AQswB5gR32QcA8F+6DuyAHxAJ8KdkCW6i8BN/YquOQawM7shdubTnsWsPeym9797rtY9+IWdtaH8Nq+fYR3gl013aGtF3AzwbacPoW2M6fRykaqgwA7CLOTyu0kYAG59Qw76bOciR31WEA+QxWLBkuAvczGSqRTwSKbdu5ACRur0txMlBbkooQQK+cVol7AXbgAHYsWo33BAgIuRMPc2ahlHV4dMxCpMgUBCxXLCNgLi8zGqhv6PvePR/WPWeLh1vMwYa5hiocJ4q6VALzPod6DBHxY446y+2+neqsIWHxKozfF894KwnXW328ruNee/xtwL1wnZPG6eO+J+hqquBKHykrwxoGD2PbGXmx6Zbu0faSsHHVtbWg7exYdF86jk9l14Rwhn0Y7ldsuAe6WIHeKOszsIuTTH7GLvnxBUrCAe4VwhYKdWfHQ/SihgktzMnGc48+H+fkoL5yDuvnFaFm4SALcRsBNtOsGqrq+iLV4/jyUUu07R4/C42GhWKJS4idjYyjmGzjunhRtTFV4/meuhzuKCfVO5qNM8cx3BwG/KeyZ49GRwaFoYPdbL9T7NwD3wq10wBWWfK1F9zZYIp2viwuhRNRv4QJN9ahoaUZVawuOVhJ4SSnePnoUR6uq0HbuLNrPn+NKuFRvy+lutFPJAnILR6UWzsICujO7OSadYrN1hl30RdbbK7TlKz9j7eV66fIlHMvLQDnVWzkzD6W05/KZM1HG7rlx4Xy0EnD7gvmSgiXI3BbHmxYtYPdcjGbu11PRb98Wilei/ZY7TuWNGzmhAatSLIaeFG8t64wCuZ6eKGLzcA8hP8EUDxjeX3kfagikjkCvBVxNRVfw2HcBf9eae9Xr7KR71fsh3yMUX9ZYh1J24+XN9RLcGo5CtbTnetbfhm7W3m4CFBZ9lkCp4Pbz59FMwG0E2cqOulVsc2Rq5760UtVi+9RHFwn4I5z/5CoufvYJLrJzvvzzz9BR8iGOp7N7zs1CDefbOsKqmzsXzfMXom3REqp3CToXLkYHQbcuXIjmxcwli1A/v0iC3MLtutkzsSfUik2B+kOO03jjxsqcaHlGWEBlss0PU/3NmMZMMeiQplEhnyPBIpkHVtxehE0b12LP3ldx+IMDKKk8Lt3YqBKACVrU4DKCFsBEV+ysv84m66iAK5TsACteE+8r4b/phduAypZGVLP21rS3S3AbRf0l2BaCFWsbFdxx8QK6P7okwW6jklup4EbxIQDadBubrHZmB7PzArtrdtKnqeCzVy9LkC98+rEEumbjcyjNSu8FTHsWNy9aimnNxfMla+5avATdi29HJ9cWKrj59kVoXLIQjQQtAV68SGrMXvbXY0OkkX3pTRDz4weGJtv9fj4xwIKc8SOQNWYw0gZGIjnEihSLN9KHD0LutETMzknBHYT92KpH8MJLG7DrrV2cXw/RUkt6myyhZEIrabimFteV44O6MmY5jvKi+FDc6RIXAy+MMo5aFQRb0Uq47c2o4axb54DbxOaqFyRVy7rbRvV2XLrIvIBOsV64IL3ezPc1C/USrASZcDsEYNbg0w4FC7gSYGbZHbejMicL1eIulVAwU1ixyM7FBLzkdpxculQC3Hr7YrQsXYLGpYtRVzwPjQIwL4LSjDRsNnhhbWzAg45TeONHVv/QlAl+xi+nRIUhf+o45E8bh4LkcZgxeQz3E7g9nsfGI5evZXI/N20SimZn4d57l+KJp1dh8/YX8drbr3P8OYQPqkqo3F6VHmceYwq4EuBGHiPckpZalLVSvW1Ub0czqjtbUUu4tbTcRlptHcejJqFewm29eB5tzHbCbaf1ihTABWChcKFuUaOlJNzOS+dxkuo941TvZ72AT9EJxN2oqhlZqGSWZ6eznhagleC6br8d3cuXoYtwu5ctQ8fS29HGFPbczGO1bLhELa4vKsKxaZOwUeuO50dF5TpO340fK3Ny5JOC/X6VYDYgJTYauZPGIG/yWORNScAMAp1BsHlTE5FHyHnJSZiRwiT07OQEZKckIj97KoqL8nHfA3fg8bVPYMOOF7HznTew//hhHK464YBLZUtwa1BC9Za1Ub2EW9nRguruNtSd6kYdx6F61tYGQm4WDZUDsBNs+2Wql41SG+26hY1WMwF3cruLqnbmycsf4dSVyzjzycc4/+knTDZXn32GpgPvECobrJwMCXR5fjZqiuZSqUvQRagn77wDp+65Byfvuhsd3G8l4CZaciOVXTOHXTZrdR1n44NjhmG9jyc2ZowZ7Dh9N34k9AkY19+s6hnqo8UYkw9SRwxC1oSRyJk4GtlSjupdCT1nyjgquRd2bnIicqcnImf6eGTwtdTJo5FO9eflJGPhwtm4/8f34Ynn12DTzpfw2oE38XbJEXzAelzSQvW2N0mAq7pYe0+ysSJYCTDhNtJ2m2i51wIWYDuozE5ar0jxWqPopqncXsiXWKM/Qhfr9KkrV3Dm46sSZLGe/+QTVD+zmurNkW5RluXnoIzNUhXHIAGwfekyKvgOQr4LHVRz66KF0ojUQGuu41rFjruucBbXGXhr8G1Ya/L68s2Vdxsdp+/Gj4Qo6+jBVvXv4iwKxHurMMLPhNRRg5GaEI+0cfFITxzGHI6MpJHImDAamRPHIGPKWMmuswhUrGmTRmM6L4R02rrYT586BqlTRyEjbTxmFqRjyfJiPPjog1i96Rls3r0Nuw+9gwPlQt3splmHa2nLwqIF5EbCFQpuEioWFs2myaleAbf74ysS9CYCbiHgVmmU4pzsUPBpAdeR56jic1dZf5csoDXnoopwKwm3fB7BFRehjt1y2/KlBMsaTDW3sYNuZtdcN282apnV82ZJI1VdIS8IWvvuSDvW2fU/u+k+1zUqzBAUH6C7a5ivtj1Go8RINlmTh8dgyohYTBs1CMmj45CcMBTTxw1H2viRSEsahTSqOp1gUwl2OuFPp+pTuS8AZ0zjRZBM2Cm8EJLHImPqaB6j+jOmoLAwF3fcdzt+svqnWLd1A17a+xre/OAQ3q+pRHkHFc35to5dslBxM2faVqqyjeBEtrO2dhJcx9UraCHQFmHXYoRi4yW6bMmeBVyq9yxTAO5qbWPnnCl1zmKOrZ49C9Wsp7UL2TjRijvvWIZO0Vwx2wm5lV1z48JiCXBNYQEBs+Mm4IrcdLxiN2JdhKnWcdpuvhhut6sitPKNEUqv38dH2HsSYqMwPq4fJgztj4kC+MjBmDZmKJLHxkuwUxNHYDrVnTJuGFKSuE3YQs3pwq6njJEyjdviWBZreTZrdyZBZ0wl9BQ2dLkpWLBoDu5/5F6sWv8Untu2Bdv378U+8cGA+lpUdLdT0efQLGCKMUlAJsQ2ptiWjjNbadGdly+jm+BPfyys+b8BN77+OmryslGXn4cG8Uhw3hw0Fs2T6m/HMoJldrFj7lrG5orHmjkaNSxegIZF81FZkIeKghw0LJiLExkp2GJWY20/3+2O03XzRoDKzR7ho0uJCbaWDI6wfzG8XzhGD4hCwuBoJA65DROGxWAybXzqqDhMHT0EU7gK6CnjCZspqVko26FusS3qtLB0kdms39ms3VmifrNjF5mdPglz52TjjrsW4ZHHfozVG9Zhw65X8Op7b+Hd8hKcaGlCNceoRtFF064FYAFXQJZUTuhdrL+nrgjAnxIw7ZmAa366gnAzORrloWl2AW2Yc68Yi1hvxVjULeASaBdtWtTfNu633r0cLXcsRc3cOagXOX8ujk2dgA16GdYODnzYcZpuifAI8fcJjrKb5/cL9j8QEx746yF9Q3pGDIjAmNi+EuykoQOQFD8Qk6nuqWOGYOpYKpz1exrr91RHpnDGFvYt1ehr6nd2Crvx6UnITU2StjM5cwuFZ3N/Zt50zF84C/c8eCdWrHkUT7/4LDbv2YHdh9/FweoKlNHOa0VTxvHIqfB2oeLLVLFQMvMUL4QKQm1g/WyhPbdTie0cf8Tc20GY3UvEzY2F6FowD+3FhWjj2NRM0DW06Erac/nsfEIuRBU76PcShuE5nQeeSYjOdpybWy+MRqM+3GqZ3CfQd1P/EOul2IjAnvh+YRgxIFJStwA9YXgsJrETn8ycyG2hbgk6mzXJxieMkhSdRtgZHMWcsLMIV9i4cz+HwHMIPydtImZkTcFczt5Ll7FZW3E/7fxJrNv2Al7Z/zrHsfdxrKEGVeLOFrtrZz0WDVdzZTnqstPQRJttmzsbnYuK0bGgmGAXo5M1uItwu6noTtp2B19vpVLL2Iyti+6Lu9Rq3C2X4ylfM7ZEhmBrqD+eNnpiQ25ijON03NoR4eamCDDqhgf5GldE2i0dMRFBfxCwR9LKhboTBvWToI+nwoWlTxw5CJPGxGHKWKqcqpaAC2UTtlC3qNPOdHbjwsoFZKFokbm08QLO3bPyU1E8Px933rsEP378EXbna7Flzza8fvgdHKksRS3n6xZ25LUvb0FDbhpa2TAJsB2sq50EelICuwCnqNaT3O8uKpQAt3B9NDwC0z0VmOYuw1Q3d+lBfwFzuZcMj1jUf3xvzY/+dX4PirNCqrub22PcdLeo1f7hVlN630D/7VT3J7HhgV8Pk4BHYiyBj4vr31u/hcrZnU9iDZ/E7lyoexotPZmNmrD1ybR5UcedKhewxViWIZTNmp2bPhF5GZPYkU9CXuZk5OdMxZyCVCxeWID77l+OVezOn39pA3bu24V3cqfjQ/63atJT0Fo0B+203s6FRay9i3vhCpteUIRO1lmRLYQ812xGkkKFLF8rpsqUSBbPgd29MEvvjeWhARW9P/m/QChlstEe7u6/9vT0THYc+iasVje1zVs9KMJqub9/sLWcVv77+Gha+W0RGB3TRwLubNiErQsrFzV80ujBSBg2AKPZuScMH0DFD5GUniw6ddq7gD6R41pSQhymT2bjNk1AH0MbTyTwJFr5RMzMnYqiwkzcuXQenvDxln7l9SVPD+wxaHGQF1zp2GFozs9CF2GfZM0VgLuK56Kb2cE6/FjfKEwyGDBLKFmhRTLhpsvkKPS1fPlIQtxox494a4dcLo8m2E9lMo/FjkPfCh9Pr6e4fPOJB5PJTRce6Js6IDRgS2yk/cKQPqFfDYsOJ/BIjBoYhbG0c6fCE+MHICrUhvAgKwZT/eM5nk0YGYsk5gReAMMG98WAfiEYO4KNXWI8piQNIewRSJ/GUWx6AhU+HjMyJyA/JQFzdCosVHrhbg8PPEzQ4jGo+GX2l2Qe2Gv2weF+EaicmIDmgmy0sqlqmzcL9TMysOK2vsi1B2ISrTrZzQvZShWWRodvdvw4t3aoacVeXl5nFF5e4tP+f/GxFatc3tfi6XWOm3/188PRvD7CrebB/UIDHh4QYa+JjQz8gp05hlPdIwl7dExfxBF+aIAZ/iYdhg/qgzFD+mM0FT9iUF+EBfkjMsSKQbeFIX5QFGGHIn5wH0waR7VPHI60qazpTAE7c+TAnrRg/55Mg66nQK9FkUaJJXIZ7iHwRwiaP0CvwhUyvO5rxMGBfVE+KQF1mck4wGZwHb+PO0w+WGg1/fuD6Ukmx49w64afn59GLVeUqxSKPdz9q58LDvTy2hDgKd/m2P174R4QYLRH2M3FUXa/D/uHBvznYHasw/oL2H0wnLCH0c6HEvxQXgAD+4TAS+EFL6UCWo0aZqMeNn8jwoL9MGRgBMbS1pPGDMLIof0l9SeNju3JTBmF7GkjejLHxPTkDIjoyQ2yocBsQKG3FsUqApfJcJe7Ox4iaDYTeJrrCyov7LIacYDj4NHRg3AgNvyLbb7ed4vvt/fbvgXDbrertErlAa1KeVxsOw5/K6L1emN/L8Wv+6rVcY5DPyTctSp5pq9G+bXN4I2oAD/EEvYg1m6RMVR5vwg75FoFPNnRygiGTgKWCygJ3FuvQaDNjL7hAYigvfcJC8DIIf16JicOoZXHUdkjUZAzAXPzpqAwdRxmj4jBDJs/YZtQaDJgno7A+XUWyjyxjMB/RNg/YT7h4Y51Mnc8rfX8YtfymTffL6F9nxDzr1qhOKhXq0uCg4N9HIf/IsYrlfeOkKs+4Ob1XOmenu7uu3QEp/eUQe7hCYWXJ3y0Ktj9TIiiLUdEBUITZIaXtxpyplCyjLA9+W8EcA9ar1zuBY1KAYO3BsGBZlp5KGKjQwRs6b54oWjC8lNQXDAdWWGByPW1oMDqhzn+fpjn74+5fhYUGn1QqNVgrkKOBazXS7088ECQqf6W/IsBZrPZqlFravU6/VvR0dFax+G/iJycHM98pf7kRJ1uquPQDwqZh9udnu5uPXqC8vNSQCPzgozApKSivDw9YRoUiQFJiZiWmQMD1awL9IWa3bGKVq2g3Qo1C+BOdYsU6jYZdYjuEyQ9/JidPRnzCHiOuE3qa5IA5xPubKsVc60BmBcQgCJbAOYG2FAYYEURnWRp/8g/PJaVNMjxrd46YTAYbtNqtGdNBtNGwv2bf9KoMGea/8KRw49MiYj4wX/vSu7pOZ0g/+RDqGaOJH5yBSyELHPvhStB5qhjmZGICQ8uxfb3DyGuOA8zli3HsrvvhYUW7mc1wRToB7XZGwq9Ggq18r9hU9UmizdtejQKMiZgTvYUZLNpyzAbkW0xY4afH2b5WzHHasNcwp0XEIi5djvmBQdiCTvqFdMnPOD4Vm+dINwRKo32Z34WywPfx5pe3rRuykMPLbc4dr93KDwVU2Qe8s9NhBqqUPZYVMrfm1XKHpuXEkYC57wtAdbZLbAtTYM6sT9MWWMQvCgdc59Zgc0H30IURyITmyb76BiMHD8BCRMnw4c1WGfxgUrAZg4YEIrUKSORm5qIgvQJmOpvQQrn3TSTETkWC/L8fCUlF9ismGmzYQ4BL4gMx/0JI0rLVq688X7R7B8Jwh2l0el+abPZlnD3e9Wd1Y89/JBj83uHWi6fRhv9nVWpxmBmH6X6WbNabTXqVC+pqFgrVexP0FrWZK3NhMBMgiVk+7J0+M+bAm3ibbDljYN5WH9oDToMmJ+Gp3btw7JVaxA6OR6Hj5UgJ78QhnB/JI0djJRJw3ufT4u7aD46TPX2RjIhp5pMyLL4IpeQc1mP89l8zQkOwvK42N+smnUT/l7w3woBV63R/Jqd8lLHob8b4i/1/PSROxc5dr9PuOt0uiKVUvmnCHGSNd4YodLu4HFJKXKZxwpRc42sq4FecikNrLU+Ef4w9LfDPCQCQakjEbk4DaF3ZkETaIVvbCQi502DPW00ogk6bM40rNqzC3srShGUFPtR4sjYQ1PHDfl12qSRPROo7kS9ChP1Okzx8XYo2YRMX19k067zWXuL+0b2PDglaab4fm6ZsJnNg0wmyy/tNtt93P3eHePWrVu9jxx4U6j974ZoxnzNviv0ep8v41jvZhstSFbr3nTW+AjWcJnM84qRXWyoSg27TNFuVyq3Wq2mz5WiobLoqGaDpEpjv0CYY8Mgk8tgGRqFsOJpiFqegVCuthnjYZ48GOGzJyG8YKK4s+YWExPsM2HYwNHDDNoHRqkVFYla1R8nCci8yFKMRqSZzcigdc8ODcKdI4buEheu+He3RARbLP52W+Blq3/A09z9QePAB2+8EfLe/t1/9bbltREfEa8PDAx5w+Yf0JPcrz/uDQhFvta459rGTKdSpSrl8p4YvQGxKvW/heh0fcRx33DbCIW3eo+nWv4LbYCxR+6thMqshdbqA0/auZnArTEhCIjvg5Dk4eg7dxri7i/AoOU56Dcv5a919u4jVSpbgl67ZIKPbv9Ug/cvppuMX+farVg0sG/3UwUFBsf7bv5ISEiQ6TX6940+pqMLFy70chz+3rGuX2zxK2Mn/4/3akWTNmDAAEN4WN/KiJBwFA8dhsdC+vYUe1u25HynO9dodO+Jmpyk9fnTYB/dXzzIMIQZvH0CTLMUetVOL438E5Pd2KNXq+BjN0FH2D6ck/2iAmC9LRgBcRGImBD3ecSU+L97g2LiQD9NVojfsKKYvskPJo++deCKUCuVjyiV6o9ok/6OQz8o1hptO9eYgyQbvDbi4+P1ocGha6z+9raw0D6n+kX2w31jE7HGHvXVIq3xoZXfuV9tM9n66HQ+X4zSG79OMhvucRz+H0PcUTP7+4z1M+gf1NkMlTK1/Lcak7ZHZ9VD66sndCMsUX4HHG//1wyr1Rwnk8l/FxwcnOg49INC1KlntOYLj/kGpzsOSXW2X1RUbqDVftHfwsaIdqtTafHguAl/Xmvv88UynWWu463fCn9f63a7t+nrZJNl/Xfhf59gg+jt7WdKVPmo1niqvU57B/j8KaR/YJ7j5X+9ENYc0zdibXhw8BTHoR8cK4Miw5708v7ykYFjpHFiWOywyPDg8MMBfravTT5GaJUaeGv0UHDkmeEX+Oc7jLZ50j/8TljN1rjAoPAvYo3mF8X35Tj8j4SXqY/JxvXm/ot1/0C4x/SJXJQ5LTHYsX9dcaePcU6a2doTe9vglbEDB68MtYd87m/2h16tl1QrVgFYQ9A6tfZywtAE/+jo4d/8ZkBc3ATvyZMzrGEhfToC/PyrvluTXXGd0Sc4cO6wwQOHOXavK/qHhyeG2e0XAv1s8Pf1R2hwGExGM7QEK6CK1Kl1UMvV8Df7InZgDKz+ts/794/dOH36dL8BA+K2+/kF/jI0JPI3gfaQX0ZGBoU5vrQrrjPc4+LizLdFhiwf1L9PluPYD45wW3igwduwK8DX/2urrx/sNjt8WWsllRLqterVKFUIsvohLjYGQeyg4+KG4UcPrPztwIHx/242WaHV+EDDDAkInOP48q64znDnfPmwv9nUMXnyGKvj2A8O0VR56/SnNCoNLAYLRBOlUmgglymg8FRAo1D3qlahgrdWi7CQQERG9kFwUDiGDhmBrMwCRET2h9HoJ8FV8yJQ8/1mo98ux3/CFdcR7govr0dlMtl/BPj5jXMcu+4Is9vm+ZosX3J2htxTLoGV0ksppbdGB5vFhIjwUMLsg7DwKJjNfgQdzWPRsFmDYfCxQKs1QKP27jEZTR/ZbNb1/NK33vPW/4dwl1O5Mk/P/wzwC/iLGwfXGxq14j3nc1elACtzpoLKNiAsMAihEZGw+NtgtwcjijMwu2SEhPSFPSAMFrMN3nrD7y0m0+1Tpkxx/S91rjdUMsVSTw+PPwb4W/5Xa5zN5JNKuD3iIbtCroBKQBYqlim+MBuMm2xm32qjwUSg4ejXdwAC7aHw97NzDZMUbDZaLtt8fW/MPyZ2s4TGS5kn8/D8o8nH53s9CPghEW80DtcSsFCwAKxWqHs0clWt0agbbjL5jaN9Xw4NCUNERD8qNoRQg2C1BrIZC0CAf+CJQJM0o7riekOr1I7xcpf9h0XvI57T/q/XtkS58kf9FEooFQoo5YpfeKvVC8VHYk0G0/0mg/EP4aERPVZrAPQ6PZVr43gUKCnYz9cGi8WS4/gyrrie0KtU8TJ3z1/6qPU/4e7/SeMyWa5+Y4RO87JZpy4Sv7biOOxm0GrnB9lsIwf2CX8ndWpij9HbGyZvE6xUrr/FBoPe+LVBr/8hz45dcW3olMqRAq63SvdT7v6fdaXiEd/ful+cPXy4cXhs9O/4vbA2y+Fr9IWPzufPvmbzXXz51nnO+v8ZOrk6hSf01yatXnxI7J86cowYONA3ItD2hZo27qP1gV6j/cRm801yvOyKHxoajWa8l4fsN0ZvnbiZ/0+fJ330+mUWoxl+Zl/o1Zpyq8EQ5HjJFdcTfQIDbSa9fohj958eUUF+oRGhgRuiQoPmi4/hOA67whWucIUrXOEKV7jCFa5wxT8Ubm7/BcmutcjNroI2AAAAAElFTkSuQmCC - - - 扫码目检 - - - - 79 - 2 - T1 - Test - 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 - - - 成品录入 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD_1901/LD_1901.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD_1901/LD_1901.xml deleted file mode 100644 index 4128b1e..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/LD_1901/LD_1901.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 30 - 3 - LD_1901 - P_LD_1901_20211012_154024.png - 单路总线调光模块 - 2022/4/12 15:27:57 - - 0 - - - 95 - 1 - Q1 - Test - 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 - - - 扫码录入 - - - - -1 - 2 - T1 - Test - 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 - - - PCBA测试 - TP_30_96_REV_05_20211021101247.uts - - - 96 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/MD-36K10/MD-36K10.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/MD-36K10/MD-36K10.xml deleted file mode 100644 index c55708f..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/MD-36K10/MD-36K10.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - -1 - 3 - MD-36K10 - P_MD-36K10_20231130_202648.png - MD-36K10 医疗级精密电流源 - 2024/5/30 20:26:12 - - 0 - - - -1 - 1 - T1 - Test - - - - 电气测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/MD-W5500/MD-W5500.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/MD-W5500/MD-W5500.xml deleted file mode 100644 index 6f63059..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/MD-W5500/MD-W5500.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 5 - 3 - MD-W5500 - P_MD-W5500_20210925_175628.png - W5500网络 + LCD1602模块 - 2022/8/30 10:29:22 - - 10 - - - 9 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 10 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Mars/Mars.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Mars/Mars.xml deleted file mode 100644 index 1f37c2d..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Mars/Mars.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - 1 - 2 - Mars - P_Mars_20220819_171547.png - Mars 智能传感器主机 - 2023/2/19 16:07:31 - Mars 智能传感器主机 - 0 - - - 2 - 1 - T1 - Test - - - - PCBA_F.T - TP_1_2_REV_49_20220920223340.uts - - - 3 - 2 - T2 - Test - - - - Wifi_Ble_Test - TP_1_3_REV_25_20220920175923.uts - - - 4 - 3 - T3 - Test - - - - E.U.T - TP_1_4_REV_14_20220918161635.uts - - - 6 - 4 - T4 - Test - - - - Label_Print - TP_1_6_REV_01_20220917175214.uts - - - 5 - 5 - P1 - Package - - - - 关联彩盒码和机身码,并打印贴纸 - TP_1_5_REV_05_20220921120022.uts - - - 7 - 6 - P2 - Package - - - - 称重,并关联彩盒码,记录重量 - - - - 8 - 7 - P3 - Package - - - - 外箱装箱,关联箱唛码和彩盒码 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/PAD-C43/PAD-C43.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/PAD-C43/PAD-C43.xml deleted file mode 100644 index 72d26d1..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/PAD-C43/PAD-C43.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 14 - 2 - PAD-C43 - P_PAD-C43_20210925_175859.png - 酒店客供系统机PAD-C43测试项目 - 2022/8/30 10:29:22 - - 0 - - - 44 - 1 - Q1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADRqSURBVHhe7b0JVJzpeSWctt3darXYlyqovQqKrRagFvZ930GAWIQASWxakBASEggkQIAASewIENq3ltTd6sXd7diOl8S7p213vMZLx5OZM5l4/sxknNj5ncQ2d+77Ut0nk5k5M7YTu23znPOcr6r4avvue+9zn/d7v+IPtmIrtmIrtmIrtmIrtmIrtmIrtmIrtmIrtmIrtmIrtmIrtmIrtmIr3nPxhN2u862trX2/5/5W/C6FNSa8z6DV/K3ZqPuGNdK0ZreENWVlxZu2AP8diLi4mDKdRv2PBp0WRr0OYUYDwk0GRIWbfmaPifiOIzbmSpIzpj43xaEdHh5+n+dpW/HbEOkJMVE6vea/6jQCXL0E1xxmRFSEGdaoSJm2mCjYLVEbdmvkT+JsUW85461LiS57VWlpRqDnZbbivRj5+Yn+JpPumwa9FiaDHhHhJgIbhuhIgmshuNERsERFIIKAR5vDYY+JlmkTW0sMYi1R/+iyW7+U6LBcTE6ILS4sTA3aYvhvOHJyDGZ7dNChiBh9gc0S9iGTUUiyHpFmEyIjTIiJCEdMZARiyFwLAbZGR8IeHU0wJaCIs1pkxtuscDDF1mkVty0b8daov3PFWj6f7Io7n5PhzK2tzdjhedut+HVFSZF9MS/P9dPIKP2G0aCmLGtgZO0VNVekYKvNQobaoglyBGzRURLceBtBtUbDHWuDO84Od3yczIT4eCQ44uHk4844G5JdDv7dhiRn3Aa3f9O8u7jB89Zb8euIjtLS7SnumBs6bSg0qhCZWrUKeq0GEeYw7O3qwgtvvI7HH3kDhXlZZLQZcQQ83hYDW5QZSY5YAR7TSTCZbhdSuE1y2JDqdjCdciuAFrezkt0/ykpPfCU7O/FwTnqitaOj40nxOdKTbHGVefaH6UkxLvnBtuJfJ1ITLDaDNvS/hyoVCFUGy1SFKCXAx8+cwZ98+Yv4xFc+j4+8+WnsbapDdHgYIsMMBDoMdjLaabcghQCmJbiRmkAwE1y8zftJLmQkupGRlMB0I0X8jfuli7/zfmqiayMt0fXT1ATHfyzKz36Unuz+89qdxSgrSj3p+Whb8atGaYYjMMqs/bZGtQluiCKIWwVUSiXSs3Lwx1/6Al5/8+P45Fe+iJdfe0xW2hFHQyXqbCzrsdMeA1esFS6C7I61IIG3BUszUwhqcgKyU5KQlZLI+4lIS3YTXKcEPCctRf49JyMVeVnpyExLQn5OJooLClBRXPSDipLi5bLinML8/Hx/fswnNj/tVvxCIaQxOkL7RphRBd07AAcHQTjo3MwU7KzdhT/6ymfw8bc+h1feeBlFeZkENVLKs8NuY62NRbIzFqmUXsFUAWTbnnocam9FJtmbk5osgczNTEXPgf3oaGlAKV8jOzUBeXysJC8XZDDSuW9qEuU7UWS8ZH9WqgR8ozg//4fFhfmfK8jLGc9IcWRmZEQLk7YF+P9LhBlDz+s1SphNKjLJjclzR8lMM6rLClCclwq9RoOmlt1o3tMo3bKQZBslOZYAuwhwitPBjJeSm0lWHj3YgU99+FW89YVP4P6tVYKbjILsDAK7C/euLeK5awtYmT2H3fXlqK0sJMAZyEoXDHcjM5lyzhQDIz2ZUk7AkxPimNwKWRdqkJG2kZuZ/sPcrMyP5mSkDGSkxCfm5dme9XydrfjnYTbp6yjHP9WqlGyBtDh1Yh8qS1Ipo07UVeZTohXQhKpkigmPML1B9r2F+QXYWVHBA++kY46VIAsWZiYnonPfHtxdX8RXPvtJDIz1IrGtGIUd1Wg/tAdLM+P40Ev3cGGyH7nZSWR1EkoLsiBqbk1FEYrzM8nahE2wmWlJmyCLWi1qd4oH6CQOqGSWgHS+X1Z62s9zszP/qjAv95XCnKzudBq24eGMD3i+4u9PROt0yoSEhLzc3NxQ3n3CYjbYggMDf6hTa5Ce4sTAiVbK6k6CG4ehEx0EVSFlWhUSQsneBNqo0yM/twDf/Mbb+P6f/yd8+c2vYWpiHEmuOEoq6yrlWdTUJEp2VIwJYU1Z8DUqEJRnQ2BqFNTlLpiKXbBkOVFYmMO6m4qi3EzkZiWjvqYUhTkpyElPQC4ZnZ2WyNtiEKRI5or0mDLPbRdBjpfAZ7OG52dn0ZiVoLykdKOspPgvK0pLHxQX5u3PzU0Pz8j4PQDc4TD6xNsib1QUZf91Y035G7lpCZ/w9/WFIjAQzY1lONPfhqQEC050t8AabSKwChw50CpnrFQhoQhVKGE0GLF+5Toev/ACvvWN70qQ1xbn2BNHIIE9biYPfG5WBkwcGAqdAvqGFMT31SIwPQrmPTkICFMhIDMGPnY9HNWZKCJj83NSkZMpAC5jiUhEtgfgXBqu2opiVJXkMwtQVVqIghzKOR/PTk9GJpme7I7loCLj+ZgYDNncinJQnJ+HsuJiVFdWM6v+qaay5hvVFVUrhXnZNRkZLiXwO1y/E+MjrLGWyB9rQ0M2/H18kZocj7Hhw4hl3W3fW4+a8myoyd6q8gLYWWdVShUBVlOi9ejrO42rq6v46Ec/jre/9x/x+c98jkxywB4TKd20iw66dmcZfL294OfrhW2+27FD7Y8AhxHqMicsRyvhn2CCpaUQGosJe5rqCUSONG51BLisKEcyVgBcVUKQCrNZwxNpxgSzKee8X7uzBDVVArxiguyW7M/PTkM+DVsBMzcj2aMAYhCkoDA3GxUlpdy/hu/RsFFZvvMfCgpK38zJK5pyOhNzHQ6HDw/L7wzgT7DmjqlDNRshwSGw2yJxabIXzQ1FqK4owOH2XTCTZXnZyZTOVKgpz+oQFQHXoKi4HPfv3sdLLzzGW299E9/79vfR1FAj66HofcUBba6vZm0uRh5bHb1Wi23bn8E2r+142usZ5jY84/8sfM2hUMSaoIky4+a9h1hevYKdZfmoILh1BK+xrhx76qs40ArIRkp4TvomgMxCynkB7xflZZHtyZLh9dVlm4/xb4We/fKz0zlQMphiK1qwVLI8mcmBkpWF3Nx8lJVVo6iwYiM9M/e/ZWfnv5KSkXHYbrfHUs63eY7VH0RHR/tHGQPOWyzqSs9D7+1Q69QNCoXiZ+HhEUjn6D9xrAX7myuRmurCYF+XnHOOj41ELw1RuFGHOJsFGpUakZEWPLz/PD764T/C5z/7Bbz15a/i4tQEbBb2vPEEmO1RdUUJGnaV4URPJ82XG9YYK0JVZL9aQaCfxtPPbuZTzGf8veCvDEIea6bFZkMLmdy2bx9leicHSCGNXi7Ki7JRWbrJ4rICsrA4DyX5WWRxDiU4m6Clcf8KDgyxTw5KuE8pHy8toCLkZnEQZBNolgHeLsgVQAuAk6Rpczvj4Iizy88fHmZGREQMbHEuOFzJP4uNc//nmBjb81EWW5dOp7tWV5m74bCa/9N7/mSJyaR1BAYG/p3JFIaj3a24vjKF4aF+GI1aDPUfRILTDp1WhcbaIsREGRBnj+EBccGg02FibArnzg7h+tXr+HdfeBMfeeMN2KwxBNECV1w8HW8yWnfXYldNOUZHTmBpYQzZmXTE2dkIoQr4shQ8/fQ2eFO6t+94Fs/6eCGYDn3btm1QKIJRWlyIlj1NaNu/D10dndjX2ordDXVSDcpFDS4rJMsL2boVUW4LKOt5ctvC9xS1WdZosU95MQcC9+djZYUcJMxSpqj1hTlpHBQpsiUTBi2BfbuVJSg8PBImYySPgxlanQkGgxlhYfQMBN1gDIdKq4NWq/trjUZT7jCbxWnQ956ch4WFBQX4+X7XoDOAHxRTY8ewvjKKoVMdOHqomdKXhuCAQORQEgtykmmm1Ght2gm7NRL1DXvwkNJ87/ZtvElw3/zcF1FckIdIcwQs0RY44+LQ0riL7K3Eke4OnDh+GB37dxOcElSyl87KSKMyxCAwUEGAfREQ4I+goCD4+gfAarVSKiuwu7GG9biWLG7F4QOHcPhgNzra2tHZ1onddY3YtbMStVXlBLCE2zLUVJYR0GK0te7G/tZG9tQ7UVfNvrqqhNsKqkmxrNXVBLyqtAjlHvYX5mbQ1KVLJie5nBykNoTzs4WFR/M7myXIBkM4b4dDz/s6XRi0ehMBNkKl0m2Ehqr/Vqc1fspkCj9tMBhchYWFT3sO8W8uCO7TgYF+H1GxzVGpNAgOVvIDayjFFpSV5mJXdQECAwLgirdJNxuiDCZb8tjfxiDe4cD9O/dxbXUNn/vMF6Q8D/X3IYKyZom2cgDEorAgnzJfj2zWuZqdFTjU1UpXXk12EbTGWt7eJbNhVw0K8vMRa3dQtvWw8LkHuzrR1dmOQwcJ6oGD2NvahBa+1r6WJoK7j9lB0NtYlxtY7xtRX8fXampGQ+0uGqYqSnQlmnfXoXP/Hhzq3Md9atG4aycHxU7+TfydtZwDo7qyhKaxiMzPl/JeX1tB1Sji58lFWnomWzo7jKZoMjaM2whuIyTgen24BPmfp5mDISkpE8awyA3u/58NRuMjSvm+cI6C38gypoCggJng4GCoQtWUSn+6W3/4MmOio3DsyD4o+LeoiHAarXIYKNG5NCm7a0v45TSYvTSP5dk5fOj1P8T3vvvv8erjF2FkCxQRbkZUZIwE62BXO1KSkpDOA8URjb3NjWjnAW9va8HxYz0YHOjH2LlzGDl7BsOU+XOjI+gfGMKZs6O4MDWDqemLODM0jIGBQZzqGyDYXSwhB9HXe5RM7kL3wYM40N6Bg50Hyeo2vnYbutq7eLsTHXy8s20vJb0FPd0H+Le9vN+Gfc17sL+lGXsa6gl6Pep3VbN8CLDLqAYVHCDVSE/LQEJSKpyuFLlNTk5DSkoqbLHxAjwJroGM1unDoNcRaEMYpTyCZYw+JT4RsUwxEETqhbxr9f+o0Wq/rtdrLxHwzLy8vH+z2TVRI6QhCA0NavXz9/+5jtLs4+NHcP3g7+tDxvojkDKpVIYwQ+WqDT3BVdExO2maoiPDceLEAD7zx5/G66+8hm98/c/w9T/9Os2TC7FWO/bua0ZKagbODs9h4vxldHadQAldaWNjMyrKylBaWoYjR45iYuICZmcXMTd/GVfWr2Nt7TpWV6/i8uo679/ClbWbWFxewcLCMhYXV5kruHRpAWOs+YODZzA6PIYL07M4M3gWp/sHOViGMHzmLIZOD2J4eBTjE5N8j/OYvjjLQTSJ4xwgPT0ncKKvH6dO9nOQnMQZ7tt/8gR6e45wEBzC8Z5uVFVWor5+D0pKd8KZkIoYqwORUXZKNX2FLZ5AC7BTEBfnoFSHy9psDIuQAJtMkazRkRwYqYiMthPgKPl3PQeCjltKOMugnqn7e4Pe9DGj0dgXHR0e+w4mv1LodEFKV7TyE3pV4FuBgf4rNDd/p6IL9vcXrPWVNdDX2w8aGoegYAVYU1gbg2l0QvjBwxHoH4RQ3s7JycM3Cerb3/1zvP2d78s81s1e2e5k35yMkuJSHD06gpGxVYxNreHMuXl0UGr30Qk7nckoJdiHD/fg4sVFrKzewNr6bSYBvXYH127ex9rV27h2/S6uMm/cfg7XbtzF+vXbWL96CytXbmL9xj0sXL6K0bFpHDrci55jfRgeGce5c1NkOsEeGOZrU11WrmJpZZ2vcwcLS+u8fwOz81dwaXaZKjGC8fFpPmcS589fxOTkDNVjHH3HT6G1eS/Zf5im7ghq61qQmp4DC79buNkCU5iQapoukxlp9A86CXAYa3MYS5xWGjBZn1mbzewu9Nw3SBHK46jkcVTxmOqg1higVukk2HoBvs70M2t0RKMHpl8+tNpAR7zF9P/5+fpu+NC5CgDFVqRS4QcfMtjby0fKtZ9fgKzHHGlsE6JofBSyFqs5ID72sT/B977zPebbEtwHd25DpVEjliO6blct0jPy0XdqGmOTV9A83Q99qQOJh8oRl5+GtKx8VFY3kN0TmJlfwWWyVgB6/eYDgvkIq9cI7E2Cyrzz3GNcu3Uf1+88YD7EVQK7RrBW1m9i7eZduV3hwLgws4yx8Qvo6SUz+4dx+swY+vrPbL7H3GU+7zms33yIy+t8ztV7fGwVw6PTUjnOT8/j/OQstwvczqD78FEM8LknTw2hoWEfa3A+3EkZcCamI86VjEjWYwG0g/29NdYhTZZObyZoOglwVFQM2CsjnubSaPAwVwwCSrdGbaAiCtIoebzVMFDmNRqjlHWH3dLpgelXi9TYsCB/P9//Iljp7x8ILwIqmBtMAAWLRQb4+SGIbDVxVGrUOoRSmgO4rz+drYEf+oXnH+M7f/ZdCfBbb35F9o1C5ovYY+bmFJHh2TRZUXDTTasKrFA5zQjOjICmhAeEYOd0N6Bv7ByW1m6QjfclAALQqwR57do9rF69i9v3H+PGvRdw6/6LuHn/BVy/+7xk7ioBvnabLOd2jYy/LNjP5ywuX8XCyjUJ+OTMEgYI8imydGZuiQNtFjOL67jM111au4NLZPGFiwtyIC2tUhXW72CSajJOgMfPX5J/Gzo7jgOHepCdW8KBmyQl2hQeRVdtpVRHIcwcibS0NISQkToCFarWSEZmZKRTmi2IZrrdbiQmJdJ0JbDlsku2CjBFaglsVKRNAi/uu93xaR6IfqV4gm3ITEBAwEZQULBkq6i9wUFKspUMDdwEMYAtURglSK81EFxKuF8gggOD+HgQmSxWcoQiyZ2AHtbRgpwsecpQfLH8vDxkZxfQ7bYgMzML0dUpCMqNhKo0DoooLUGOxHaFL8Ib0hDdnIOk/RVoGT+J8bXLuEEAL1+5LfMKAbtN9t558BKu3X1IoB8R1IdYJ5tFrpHlAtTLa7cwv3QVi5TeVYK0dv2+VIDV6/ew4tlHSL74+wQZOjg8iTPD51k6LuHS3DKZv0JGi8HyHP8+h4XldcwzBaPHJ2Zw4PBxlFQ1Ip7MjbHEwxxlJchsmSjDwk3HscdPTEySPXFoqJbG1IL8/AJpxKLYRYSZo2CxsM0KM3LAR8PtcsHF9ivWJsA2SnDDTFEE2PDT+vpshQejXz4UQUF7vb28fy76TB/vTXCFFAszJRgcQkPl4+PD0cVaItoBjrhQpQoKPi7MlgBaZGCAWLITAq1KBZ1azQ+rZc9o5Re0Yd/eveyDi9HZvh/5Rfnw1QYhOJH1qSQWQdkRiCTo+tok+GsVUGVZ8azaHxF783GSrvkygVi+fAO3CO7d5z9I9j7ezLsvyAFwhUwXwK1cvYNF7reydhuLS9dx4+YjLPP29dsvEKwHWCZTBVtv8Tkr1+5j6codLFOeL8xdweSFRfSfPoeLswu4tLCKOT7/0vyalOjFy9dlXpy5TIAv4uixkyglwIkpOYiOiWVNtbEGR0kjpaVzNhgipIGyEjDBUqfTSfZaoTMa4M1yFxUVSSN3DAc69qG8rAgpyU6CaqAZMxFkC1xsM4VChhlNf/Urt1AqhSLBe4fXj7x2eBNckV4Ey1cuWnfFWxFtDqMsk700XCYDiz+dngBXSYMgPoSQYFmHaboEwMFMMV9t1OoRxv3NYeFyKU0pDVZbays6O7pgiwlHSloCtu3Yhm3e27E90Bve5hCEN2VAV+yEV5wGYcmx8I/VI5s96DIP7jWCeI/g3n/hdTx48UO49+hVMvllXL1F4Cjpk5TP8ak5nJuYxfziDdy/9ypWr7DGXnuA5557lTX7ecxTdlfJyluUeAH24uptzC0TSMr4RYK5RIN2YWYRMwR4aUXUcaoBB8HUpWXMLV5jrmOCct3TO4ByApyUypJjjUMEGSxaJAMBFrKsZ+01UOnUPFY2G2sub5vZHhYUZHDQq9B3tANvvPZBvPb6h3CTn38Xe3WNcNHs88UxTUx00tOoYDYaPuGB6ZcLjSYg1HvHjn/vtcOLsuwFH69NkIMDfRCj90OMzh8OSziy0hLlYjiTXkd5JsAEV9TfsDDWUBouAbCo3UrmO2eQDGJEslZb2R71nzyJ8pIyHDrQBWecnT1nK+z2WDz55FN4/5NP4gNPP4Untz+NJ72fgZcuCPr8eChzbNgW5A1jpAmXaJbuP3gFd+6+iOcI8r1HH8RdpmD0zTuPMEkZHaFT7ukdpHyeZLskgF4gK69ibvYGPvjSRwn0Q1yYF7VYsJbumcwWDBa5yNsLdO3XKdvCbF25QWN39zGukPVzS9fI4kVK/jVK9TW+5gKN2jAqdzUjMS0PUTFxsk0KM8dIl6wXPS/NkwBdRfNkj3USYPbHfCyJfX9iogv3byzgjz/+IXz+c5/Gxz7xSZRUVEkHHUXTaqN0Jye5pImNiTaveqD6xSM6Ovopb6/tH9+xYwcN1SbA76aHycH+PjRW4v4OuRxWrJQQJ/CVrM0mukRRh4PJVqWQa4IbQtCFA9cKeeEXMhLgtNQ02FhnkhISkJqUIldfNDY00YXmIpyj3pvt19NPP4MPfOApPP0Mt08/jae2b8NTO57B9gBvmpQQtlEduHGLNffWI9kHr7APvkJJvinrM90yjdDA4Cilsx9727pxqGcQvSfP4fCRYXQcHMTIyCzN0QyO9Y+zjbqOGbL2MiVasFlI9xoBvXmPpo3MFsDe4EC6/dzLdOgvYvrCEhXhKmbJ3mkyeZzu+ljfWVTtaoE7mQy2ORHBtkcAbPDMZgl5ttkddNXRHODxcnZLzFXr9RH0I1n4yIce4wuf/xN8+c3P42Mf/yPEO12s21Yc2FuFI/urcPrkIZZDMjnO1u2B6xePQF/faS+vHXj22WfxLsgEVmxFvZUgc/uOg5b9MM2Xn48/Ga6QqSDQimCCywyhzQ8h4KGhGjE7Q4knwMxwju6ExFTExbJOUbIrSsvhdCSisLASLmeanL5LSEpnyxXN0hDEz+ON93/gSbzvA+9HoDIQz/Kzif5YyOrzL38YD154A/cfvsoW6i7mRK1cWKPDncHgmXEc7j6B5n0H0XnoOBr3HED97g7U1LehoekA7x/E0eNnKOOzrLHrlGcOFIJ8hXX6GoG894gK8VCowiu4++CDBJtGjgNqijX4Clkt3m9p9SYmpuZx5JhHotPzYLW7ZF8bLhjsOfEg2Jidk8fvlipBFvPUgtUijx3pxBcJ7te/+ia++qdv4uVXHiMmJgZ9B2vR216J0z31eHBrFvHxdpQVpWV74PrFw6RR1AX6en/ae8f2fxKgvgPwPwf2na0f2yM/P3/WWTpmtkVi6tKHLZS/L3vioBDWZA0B1pDRGqjJXjH6DDQb4TQe0dFxSEnNRWysCzlZOfwysXTSYj63gs66jLU4D/kl1Thw8BgBOo6WlnY5d7tt23YOPB+pEGfOTuA51t77j17Dw5f+EPeff03mTRqta5ToKcrmseOnsb/9EHY3d6B57wHU1regpq4FdY37me1o2d+NU6fZC/O1hEueX74hpfiaYKt43cd8/Rf+ELcfvMrXfoO99qtyEAhjJVqzK3TiQt6nLi3hxMAwqmqbkZlTAndCBqLppEX9FRItJjeiaCoLisv4nd0SXNHXitkq0fuur1zA1976Ir79rT8lyF/CgwcsE1NHcGJfCezsKHIyXEhKdJAooTyW6ldImqoMxy9/Ud4TNkOgWeHvfSnQz/uvfL29NgSYvr7vAOsvwWX7JFshkZutE+uuMFXsif28uQ9TsFnUXxXbAtp76STF2ZbEhFRYYuKRm1uIhIQUOOKT+AWyKWEEPLeUI70YjbvbcKp/FLM0Oqtsh5ZZD7sO9qCoqAJ19c1kzx15gO+xDt8ly4TRukUJvU22rdB8jU8tsi6OorGpjYZlL+p270dpRR3KqupRVlkvbzc07Zf97/C5C7LfXbh8k331fbZaL8nXe+7xH+LOo9dx7wVh4F4nm1+jLF+VoN64/TzN3EM68Ds0YGvoOTHINqkBCcJFE9wws4UtEV2ykGF+b3uci6qzkz4jAUZKtt1qQ0tDGVrqKvHxDz/Gt772JXznz/4UXyPA9++tov9oLcINanqYAPbFETRudvjzmIsJJld87EZvd/OP9jVXn/Jg9suFOyzMW6v0qVYGer8S6O//j+LEgpjwEKCKrXDJ77hlAbBoj0SKFipEoWKtJrNZT4MClGSyljIdRoORwJbAhsgIG4rYIqWl5CIrs1ACm5snsgxHDnVjbPgspqfYjtDIiHZkXUxw0F3eYBskJjzElOXSynUJ/OoV0ccSGDJP1MjVa8/JNuf4qRE0tRxEK2twflEVsjhwcvLLJMuy+H6Nu/fiECV87PymRC/xdYQ8337wBh4KV/78hwjqJosFuFfZWl2cW2VL9SJ77Ue4The+QkMmpjR7Tw6honYPJTpf1mBzhEXWXy0BFnPP7oR01NQ2yQEuGHxhrBftDblYmTyCr/67j+Hb33wL3/nWW3jry1/AnqZGlJVkITpcjQhjCMkQgWgOCHO4+R80atX342NtG6MDh9HRuusHzz//r3PW6YkIdbBVGeR/JSgg4IeBchJDIRkrtgJUBWVTmCmRsu5SntXC4qv0ZHKoBDvAN0jWYxONlNXqQmV5FXJzCtkqVEiAC4t2cpTXyrM7k+MTstbN88CvkzHrV2/j1p2HdMjP47Y0Py9SMl/C+vV7BFlMYlzDNGX24twa2cjWhQzuPjZIWd5HpnaisnoPMrJLkMnML6xCAXNPaxu62d6MTsxglu+zcvU53KQM33nwmpT/W6y7twmwAFnk3NINud8dMlwy+OZDAsy2avEKa/lpuuhWpLAGCyUKI8BikkPUXw0zO6cAZRW1cmarrqacXYgDh2iers8fw5c++2EJ8Le/8RV89tN/jDiHS5a5wKBAePt4Q63VwRgeSXJYV0tLHdvzcxKqywpTLlTlpxZ68PnXi9gwZVCIIqhbERj4ljJY+XPhnkPEPLSK9ZbgCfespiRrmEKa1QRYnOQWWbuzUq67stFAiHnViEgrW4Q0lJVWoKamDhl00Yk0WC0tnRigdI5SOufnV7FKh7yydkdOS17nQb1154GcqpSsJpPWaXyE+RH1cfrSZYyMX8LpM5Po7jmNfW1HZc2tInvqGvdxuwd7+PoHD/ViX2c3Bs6I+ntZTmIsk8HX79NYsZe+Tcbeeu41CawA+gYfH5mYo0O/S+dOpeD7CtVYXb+LSbZsPSfPopouOiMznzLM9lEwlb2umH8WTN5ZU4+MrHw0NVbRVDXTmG5HkL83TaYGYyNn8YmPfRjfoDw/fukRAdUjWCggTauYXNIIgypUwB23zwPDv304HI4nVQpFllYZ8qpaGfoP4sxRCMEVbZKYJA9lalQ62agLI9FQW4WeQ2043LEX7Xt3S4OhVGhgptN0uZJRSlNVUlSOPY170HOkF/00LSOj01haEnPBlyVD59lzigMqWLsupxo3pxnFHLO4fZnOVvSws9x3fHKBEj2M4ydH0HngBNq6jqHjAPNgLw4dOSld9uj5OUzPruIS6+oFMnN5/R5l+EXW9FcI9MtkM53zfYJ77xX2xHcwPD6HdUr4+o2Hsh++LGbHWCbE3PSxk2dkm5ROgG2yTbJKkyUMlj3WgdpduxHvSEATa+6e+mIEEGCN0l9eWqMiMYRHSU9LR1l5uTyjFEQG+1L1vLx8aWKD6MbDkJ4U+5u5SjJKr9SplcqzIcGKt0OCQzeEcxY1V8xuCVZnZmRgaqQPo0O9aCLQEWyTzEwTzUcO62FycibyKNHlbH12VuxCV+dhDA2dxezsPMYnZqXDvUgg5tmrzlB+xalCOf1INonJiBUyW8xLL5PlsxwEgskzi9foblcwSlBODU6gq/ukZHR3zwCN1SgGhiZwZuwSLhLYxbW7mCGDZ2myhHG7docO+dYLBPlVrN9m73v3FYxNL2HiwmX2xw8l05c5kETOLV3F2OQcjvYJgPciPbsYtrgEeRZJGCwtB7ebKiWWK8VTepMSEmGJNiPOaoIuJADKYJY4MSEk/AuBFXMHousIoirKRRVksB87E61a+w+nOmrFstzfXNDCP6NSBlVTsj9Jk/VTIdPiXKbdbsfJni60NtVhZOAIEp1JSHAloqWpGSUl5SgtraHhqkAVa9RuOt79+w6g9/gATp8eZTs0iXOskVMXlzEzt06Ar+DKlc2aO7e8Odkwf/kalsQJfzJqnsAvCID590nK9STZP3FhGecvLOEcgTg5cI7KMIkT/ed4f2Hzb5dWMT69jAt87ZU1mrYbj2Reu/sy1m6+iGXW5oHhKTkI3hlEs7y9sHJTzk2fm5zFkePCZDUjJbMAMWSwnMUSPTABLq2gOpXX0HfEQaxCba4vw+7ydJw7fRihlGI5MURwZRJo0f+LkxVi/l+ALAxsRLjhbR7i984ivZCQgMjQ4OClEKX6L1Vq3YZYmSDOgbqdiahnvU3jqDbThLidyWji6G6qa0IlDVYV25j9+zpxvPcU+imxo6NTODsyJZ3u+Pl5zNPQLF1eJ3PW6XzXCPgaD/hVKd+CjXM86AIIAfB5AixO9ouc4fOmRK0V4CwKQJdYq2dxjq85PkWQZ9ZYY2cxOT1L2SbQ1ynDN5+n5D+HSd4/PTItTdjiKtlOdZieWZUt04VZqsTEJRw62k+TRYnOYu8al0gzJVx0JCLZ/9bs2iPdu1gwWFFWiEPtDchLCsdXP/sIqUlJ73YhGrUGNotNnjuOjLKw9hrk4yoCb4sKf9VzaN9bERQUtCNUoWilXN+LNJt7NKGKunBT+IupSek/riytQnlJBb+kuI63AvU8ELW1jdi3tx0HDxxB77FTOHnqLAbPjstedYwAnJ+ax4VLS1hYXCOLV+hqV+T521kBOEG8JIFfl22SAPIi97tAoza/Itqtddbwm/JEgRgMYhDMLt/AOKV3dHoR0xcXcJbvc4FOfJrPvzh/dfNv5xdYf2flWaaFldt8/Subjt1zZkmYus7uPlTU7JEAR7NDiIiyy/43ngO4kv2xOAkxNd6HvJwU6DUhONpZhd6De6BiOVMEh8q5hKzMZAwN9iE+nkbUakFkZLSUb01IKOKtEZOeQ/rbEUaFItioCe9MTc74Uklh2U+62g6gproeTexNO9oP4tDBo+g7MYBjvf3oPz3y7oSEaGnEabwJyu3EhXm6ZnHq7goZTSYT3Km5yxJwwSzB9PMcDALMKfavF/n4FB+f5GNTBGiGDLxEkC9yK1gvVn2cZykYI9gzyzexwNp8habrLOv4FFk8xxq9tEqA6QMuidOJF5fI/nkMjZxH1+ETKKtqQkJqLqz2BDnRIVarCBYXFVchJS0TK/NnYdQGwaD2R2K8WJdlJIDiLJxaLtER54CVSgXEsqgY9r5uh53ghrBWK5Diiv/Vl+n8huL9Op0uyhnv+moBDVc92xkh0Qe6utHT0ycX7J3sGyKTz6CPTnVgaJzG6RJGxi5QXmfk6cBpAiac7OIq6+LyFW4p2QT8AsE+TxAEI4VcC7c8SfZOzRFkyvWlBQIsZJa1V7BybnmdfTRv87GLBFyAemGBjlzUaUryPNkrUgB9cZavz9cQBuv08Dg6D51AcUU9UjIKYbE6CbITFZW8n5aFvMIymslcJCeJKxkt0Cr8aLREF6GQ9Xdz3l60mJvdRwgfNxk1CDPo2W5SukNVyEqxx3iO129nGI1hSxnJ2SgtqvynxtqmH7Q2t2/s3duFnqN96O0dkKaru/sE+ofO4czIJAGexumzY2TXRXmQp2cvE5DL3K4wCSIBn/DkFMEQgE6TxaJnFTlBFbhIYIUUT3EACDUQqzQWWa9FPZ+jdF9auI4z5y7K54k2SkxlzntylnVYmDjx3gNnxtFx6DjKqgWD8+TKyuSUTGTSUcdY4+FOSoPNHg+LxYLGhgoY2ft6ez37qcBA/w8GBgT/d7J4Q7LYc5JGLJDwFUujAgKgCg6AXqX8yXTfPi/PofrtC3HNbbLb/YMUpxVFRWVrhYWF3jsrdu5v2NX4ybbW9p/sbe1EV9dRHCHY/YOjcg2UOBV4sv8sa+Y0GX2RDF2ktM7L+ipcrTiFNzrFms37gsUixak9Aey4BF7I9KpktkhhsMamFvi8BQJJV75yFRN01sdPjfK5l6XMi9OK4oSEOLUoABZ1WDh8oSoHWYOLqxrhThZz0Q7W3XrEu9Ip1VY5Nx0h1lRpwkDDyTZIu8GOwyq+u9Wq9QsNDa1Xa9VfUpC9ok1SKMQZuUCEBvtDTXnW61XfkgfqtzkyUtMfZqam/CA3JUXreUjE+8rS3IamXfXn6uua/rq1pR3t7JF7T5xGn5BspjgTJBg9TCf7To0+Q/kepesWj43w/ggHwAhvnxWPi/sTFzFK5olaO05Qx6YWqQR8PkE+x/uT7J+XVsSSnSW5WKDjQC+BnKOhE6s8Nk3cDFO0YALg02cm0HHwGIorPUt2LHHse/fDlSiuWoiWLZMtNoGmKR4hKgPNl+m/vvNTT+/Ezp01B4Io12I5lJwGDggi0MEwx9hgMOoeenb77Q1xxV3LP7vc8l9Gbm6uT01VVVt1dc1nqqvrftrY2IquQ8fQy/osGHRyYBSnBsfQd/ocTnIrpiD7+fjpIW55//TZ83TjHAxsuwa4HRqexCBbn7NjFwnujEzBYgH0uDBZ82JiY5mvP4y9bUf4XsfRfWwAfQNjlOUFOu4VqsUq3fUMe+oRtBPgoooGOBKzkELHXFZeR2nOhMudiu7OTummY9k+CWfNPvd1z9d6NyKjre3i1KsAWLRNYjlUCGuvITyKPbBxyLPb736IBWeFOTlxxYUlM6UlFX9RUV6z0SSY3dWDnuODONp7mluRg/IkvDgnfOToSQLF+5T4o2y9jjCP9VEF+oflktnB0QvccgBwe3p0mkpwia3YPMGfweDwFF9rSM6CtXX2oq3jGFol4Cdx6rSYMOGgOjmC5pYu5JXWEOAMFHObV1BOcDMQR+ZWllbAnZgiFznY7HY43c4+z9d5N5Shuim/gEBoNGp5daa4/ksjLvAzhsEZF1Pt2e33Lt6Xl5ERm5dTeDUvr+hvSkurUVffQhCOEIwjaD/Qw9uHsZ+5b/8B7N3fxW0X9rcfQCf77INUgGMnBgn2EE6cGmEO48TAOYydvyiXzQ6R4QNnN7dDIxf42DQH0BBa9h/CntYuDqrjqK3bj9yCKpSU0zFnFiHWmYaGpjYksBZr9WYU5hXJS3CSUtIJeCLsNhvsdnOK5/O/G8Gh2k9FR0Wg9+ge1JYk4ji3LmcCVBrdRkFWcoRnt9/fSHO7DRnp6WsZaVl/k5VVgOLiSuxu2ofG3SL3YvfuFjQ0NnMANGFX3W40NrViT8t+An4QHTRwYl3z4Z5Tcq66t+8sRs6JKdIpWV9PCaknk0+fnZYzX2cItpDuQ0cHUFa5G87EbCSl5qC8UjC3CK37OgioWD4bh+yMTGRlskUiwO6EBOi02h+yHP1PpaiPDnlstPvHyxeOo7d7t1zF8fyd83I5Mc3Yj/7l/r/XYbfbfZNcrtLUpNSPpCZn/jQrMx9lpVWoqqzFTmZpSSUqKmpQuXMXqqrrsGuXOI3YiqY9bWRlB/aT+Z0Hj6Pz8Akc6R1kTT+LoTPnMCgucSG7T5+Zkkw+NXhenqk60T+K5r2daO84iOTUQvgHqdgDx6OwuFjOO+9r3g2HI0FecRhLeVaFhPyR56O+G6+/fjXq+uWhjWPtZcjNiENTQyEGTrYjKSkFep3my57dtuJfxPvSkpzJiS7XjWR30n9LYf3Lyc4HpRwF+SUoLChFSUkFzVA1dtY0Yld9Mxku2N5GsDsp54fQKi4qY20X9f0w63jfqSEMj05ghEZtcGiaNXyMNX4YE+dn0NJymCwugsXuRgzbJL/AUNjj4uSFAIpgJeVaj4QEJ9Sh6v/FMKWmppY2NxVv6LVBCAj0QqR584K+SDpok0F707PbVvyfwhUZGeCOt/e4nY63EtyJP0tNziDYBXI1SQ4zL79UTieKS0DLK3fJHraquhG1BL2uoRUNe/ajsbkdLXsPsN8dwCX2zc8/eIxZ9tV9fWNYYut05vQMB8ZhFJY2IDm9CHZHKqKjrUhJTkZSghtZ2amwEjBrlDnH87HejZAQ1TmTUbthj9ZBG+KHEEWAXG6sN4WLU4u/2rqr36cQDtzhiMl0xsXeTHAm/m1aagYyM/MIdhGymemslTk5RcjKyUdBYRnymeJa5bKKasr6Lgn2/rZurC7dwq21B+jvv4ihwQncvvoIV5ceor6xG+U795LFiYiIioPRGEnFyMOehlpMDHbiSFfTT44ePerr+TjvRkBw8Kd2+HjLXxJ6etvTePaZbVCGqqEgyH7+/n8d4Be4aDCEp/HzP+V5ylb838Jttaodduug2+X+mtuV9DOx6CAtPVtmQlKanGpMSeVjGbnIzM5DQQHBpqTvYu3uOXAUo4Pj2Nt8GM27D+Lc8Cymz68gP78aVex/7bEuOUVptcWhtqYOtTsr5G93VZaXvOV5+3cjObncy98/8Mfi3K+Xjw+2b9+OHdufhUqtRUBQELy8veVjZpP25+Fa9VejTdFhnqduxf9jvM/tjk90xsXfd7sSfpSclC6BdbNmi3S6kpFIwFOS05GVnoH64kycaMzD/JFCTLdn4dCuAlTl58vTnRl8XmZ6DiIjY2CkvOYX5OLo0X62RW4EB4UiPs79VklJiZ/nfWUYjeYUfz+xHNYf3l6+2CGuB/PxRQwHh1+AP7y8nv17AryxsySd752EYP/AZc9Tt+IXjCdSHA6tM9Z62hnv+Au7PW7D6Sa4BNnlSoSDhikvxYnT9XbcOxGOV0fC8YlpPaZaY1GXxVrriEN+ajpiLXaEE1xxct9qiUVzy17k5eZQ4iuhCtWJs0Z/pVbq50ymyHgxe6dVG0+KZcgCYB9vP4SGKOF0xiIlna9lj/wT8bugCoVfnSU64qpBE/rnJk1onefzbsUvG2JBYZI1PN1i0s7aLdbvxNodGwLkorR4tJdacf2IAi+PheDRoArLh02oSjHDbNAhzRUv/7lITESU/HkG8cNuqYmJcMa76KCTqQIJSEtJQlREBJ11yEZoqPa7Ko3mx2KNuVh7JWQ6NtaKENZfcb2wQaO54PlIW/FvFQR7e6w1ps0SE/Nlgv3zksxkNGZbMd+pwblGNbqKTEi2GBCu18BpiUCcJQbREZEIM4ahIdeBBFskkpgZTjvZKX6cRiNXa2SmJSM5yQG1WiMvJBAAC6Cd8Tb5Azfi4vmYKPMez8fYin/rGGatTnHadrpt5r9JiVQh325ARqwRqbYIZMaFwxamlf9+wBoZhSiyz0XWNpcky/9FIX5dN5ggit8zEUuLxcI6caGeWqVBXJwNieK3q5PccoG7y2GlVPvI673E/77wvP1W/Loi2RlX7u/ttWHT+SPLbtwwaTV/L36nxKwTl5kYkchaXFpUhprqBtZgq/whVS2BDPQLkhfmBQUEC3mGUp4aVMr7IjMT45GZ6oJOo5ImSxkc/KNjx2qe8bztVvy6IiTIPz/KpN6wReqw49lnv09GG5SB/sPB/v7f9vPx+bk1KhrWaAvbmgiY9EYYxe9riJP8Yq24IhQBvoHw8VxyKyRZ/N6JkG7WW4QGB0t5DvTzhUat2Jqi/E1EuE4Z5Yo2/bC2JPMvfL29z3oelqtSFIG+pZoQ5euRRsP/HxMZDXOYWV42qxHXR5PFanHNllj7LM75krXiF4vEhXqbKzgEuJtGy49p0ChveF56K37doQkICPUhErz5v1uI/kR4uNZoUIWMGnTat3Vq7YYAWdRbFcEUP4oeQpDF/LQwUkGsxeIEv38AnTQBFldwiisyo826Y57X24r3aogfb40waKu1ocqX1KGqH8l/Z0CQxVpnsfZKLGoXKQGmXG+2S5Rof3/Ex0RkeV5mK34L4glx/ZZOFTKiUSr/Q4giZEPUXrE85501WO+0SoLBgX4BPysuzlB6nrsVv01RGx39VJQppMKoUXxYHRz092JxnQD3XYBpvthW/Yf3/K/Cb8X/NZ5IsCv0GpWiX6lQvB0oa/DmzzOHKJXvzeuQtuKXC/HPO8wmzS51SPDrrL9/qddotuabf1dD/FaZ5+ZWbMVWbMVWbMVWbMVWvLfiD/7gfwCTJDboc5QSowAAAABJRU5ErkJggg== - - - 扫码目检 - - - - 45 - 2 - T1 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/PM-1202/PM-1202.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/PM-1202/PM-1202.xml deleted file mode 100644 index e529d54..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/PM-1202/PM-1202.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 7 - 3 - PM-1202 - P_PM-1202_20210925_175705.png - 12V/2A电源 - 2022/8/30 10:29:22 - - 15 - - - 17 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 18 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 19 - 3 - T2 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAClaSURBVHhe7bwHVFVn2667sCsdlN5ButKbghRBQESKgIViAaQIIk1AqkhRUBBBBKyoqGCLGo3G2EvsLRqjMRo1iTGaXtQYufaL4T/7jHP+vcc++z/j20m+dY3xjLmca8Ka873n/RTWHEqkSJEiRYoUKVKkSJEiRYoUKVKkSJEiRYoUKVKkSJEiRYoUKVKkSJEiRYqUUomkj6Wl5QDxsu+fe6T8IwgJCVEaMmRQvoGe/nlDQ7OH6uq6V13cfKuCguK0ew+R8nclP7/UJCkp/WZ8SjHHzzzk/LXvOHTiPsXlzQSHxHxp7eBm3nuolL8b2dnZsulzc2+Uli1/K+71Oy+5duc3bj94xa27PxCfkImaut7B3sOl/BXwLPXs1y/colAm3GyT2qwxWe7zIyJk433UxVsyfx7x33G0s5s1PngKO/dcoHPnWT448Smffv4jly7f48Chi2TPr8bIeMRLBwdfxd4fkfKvpnimi8uCeYmarbNn9+/5t3aIzTzziZbdlmH29A2xxrkgGsmkkS9lpjic7RftUjx4qoezSXrAwJ5jR7m4Nzm7BXLx5i+cv/49x07fZ8fus7z7/i2OnX3MvNwlqGsYdE/0n2jWc7yU/wOUpnqaJMWFfhYd6n3D2sM+Ws3Z+KdpcdHEJyUiF2CLfc5kIbANkig7JJMdxNbpjwGx4z7rP3d6s46b81k1dUO277vGtU9ecPLDx2zqPMXJi1/Tvu0Eo73D8PT0JTEuJqf346T8K5kzxcHPycalLGScz1kDXR0GDpVH3lQLUycbhlkbMcjRDNnRJkjcDZB4D0d2qicD/B0YN20yA1Nn0Cd6IspKQxlh4yPScR0LK9tYULaKpLRyzKxGo6KihulwUwJ9fVt6P1LKv4oGkWanhAX7ODr4MCE4gdDQRNxHBWBiZIHGUE1U5OUwG67NcCttBg5Xo4+VIT5xM9HSN0ZTUx91E3OGOdljaGyMnJwiw9T00dAyQdfAmqFqegyRlWXgoEHIycozytX1XO/H/o/4f9V3Kf9FSmcHzPZ1sf8+YGwoISGzCQ9PJyoinUlC6MjweCaFTMfb1QttNQ0MVBWEI40wNDVHV8cQNTUd1NV00dDURVfXGDNTG8LCppGWVkD8rHmYmtiSMDsDW1tnBg0agr6B0a8R0bP+0zqsaTcsbdhIhcOlpaV9endJ+a+SHeVpvXNdm09KpF+3ocZQTA0NcHdyJzRoGqHBsUwU24jwJOHqJCZNShWixzPeKwBHWxfkhyigraWHv3+YcLgtKbOzOXTgGFdvfsOdR2+49yVc/fgpxSXLxE0Ti4uLSNXaGuh7jP1GPShio2rEtGl6iYma4jRkdBx1nNTchr1Qs1N5YzfKTuvPs5NIvrq3OPD5/fKMLz7ON5UK/79BxWxPx8KUmXem+Dt3D1OQRVVuCHID+6GhpECYtzuRAeMIEQL6+wvBI7OIil5AQsZydu6/zkT/cbg4e9K1/QA73znFtWsP2dqxl517z4v593fuf/EHD5+84fPPvyU9LYcxYwJxcHFBxWok6uOjUAybikVe9q/qpeln1bxMHugGGaLhMAwbFxuDnnN7cm2j7Mtvlz3u/q2O1z9Vv3rxQ/lHPz8vX/nN4+LAG6dSlEGazv+n5E73CS3NyFCK8LZbY6mvgZqqHAP79UFxyGBKIxxYETWCOeOdGWdjiJuxLkGj3ZkyaSY1K3azYd1ODHW1aWjaKObcD3nwdTcnzz3i+OmbrF3dwcWrX/LZ579w+/YXtG85SKcYmZxcxxEYHI6ipg4GgZPRD40hclk1I5YswGicBVqeaigMV2XoWK+NCrEh/g/v1Be8+bUOXjfR/WaN2NbR/bqNN7+38Ornmh9/fFpx5JuHpVkP7xYaS939n7Aozc8wI2bCaR87g9/1hylgqK5E/759sTTUY1XSKF5cL2Rv7RRac0PZOFmfXJdhWGooMdLUmPAAL5ycRrFn/wkuXHkk3PqGu/d/4+TpW5w+fYOL527w4enLtK3dzblr33D3cTcZmeV4jZ2AqoY2ut4heE5Noa51NZU7N6Hvq4aq/WCG6CljNmkCFjFh3Y/vL33DHyvhzQa6/2gWAi8XQm8R0SFiHW9eNcDLOv74peblL88qzt25Uji199Kk/AeTvG22Weupoq+hgL76UORlB6OnNhQftSG0+Koy13c41SHm/HSlgW1FwSjIDmFw//7oinodHRlFadlSrnz0NQ+/6ube56+4d/8nbn3yFRcu32P9+i4uffSMz592c1fcAOUVTVQsrsfC1gE1O3dMR7oxITqShVubsY8wQtl2CPI6w0hfVEFGaSTdL+vhjwa+e1rHo/sVQuRlIhpFrBYCi/hjBfy+HF7V0/1LHZ99tPh472X9e7MiL8wmOmjUxPyUacrerg53tVQU0BmqKEQeiuYwZRQGDcRIfjBR+vIYD1Niou5glo1WItxBBxUFJWRFNzx44EC0hqkxN6OYyzef8sU3b3j4+CeuXf+MjR0HhLPP8f7Ryxw/+ym3Hrzkgw8f4uUbyQjRnGlbmKBmNhI3Dy8ylpQyNGsuxtGmaNipo2viyHBLVy59mCfErRHpuI6rH5Zy42IB33+zkK8fVfDkQQVvXlaJ9xcLV9e+Ffjlt3XkF836QnXEf96h/9sAyNzs6hqQFRf4jr+r5TPfUS5YWxkz0no4yooKOI6yR0vUXIUB/bBXGYLKoP7YK/YnRncAWgqDUJWXxUhPjwEilZsbGhITM4dNW49w/8H3IjVfZ/s757h86yeufPIzB4/d5NSFe+w+fItps4rIXVCJjb0DI9zssPOZSPy8HBZ1rKBwdTO+OV4Y2diiY2RPZKQfb15UQ3cNv/6wkCtn5nHpxByefVnM408L+fxOPq9+LRWpu1KILI57Xc+zhw2Y2Doh55J6/t+6Hi9MGuM3K9w/qzh12h4tFXmGKcmhpaaItbUJ7u5W6NsI8YbJkTWtD23zZZjk3gd9xb44idCQG4i8EFxh8CB01dUwESPPGBdXHJ28Wb/pMKcvP+GTBy948KSb+yI+Fil754FLTJqaLpzrjYvbKExMDbF2skfeyAjTmBiiNy+n/YNOUhryUVXTRlvfivf2pAnRyoTAC3n6RR5nPkjjs0/yePakiPu3M/nofI4Qtuf9nptApG1Rh/d1pSI7bCh97MLeqPmGH9D2C0kymhCpJy7536fTLi2NHNBzd6dOGlPvaa3XrThkAOpiHDLSUEfdKQnZgFX0t52FucNQvj0mzH5ZwhsR3x6VsLdGwmirvqIJ64OmmiqqSoqYG+mjq61MZHgUIWGxrFjVSUPrPrbuOsPajqPkFK7E1XMywy2cUVJSRltHHXNzI9RN9JEx1aNP4Fgky3Kwbi5hy+5iYoPVCfHW4sWP5cKdJaLOFvD0y0wh8nxe/FLCZ0Lcm5fS3rqaN8LB3bVv6/CL7+qYHuOIzCA5+ihpoOkVipYoB8rBU171Lci4MKAkq1Q+f46ba2bm4N6l+GeSH+seOXW8V15mdOApbSVZzIVzRygrMEyI2yf/C2Tm3UQyfh2NlVZ0fyQEviHi+p/x+wUJGwokwr19sB9phaKcPIoKCgzRVBJz6wgC/cbi6zMOYyNzHBw9iIyIJSMtEzNTcxTk5dDWkBfbQejraaOorYb2GAdkfEaRsL0Ftdo5bFyqw8NDGjw4PUGMQhVCvEJRTfLFtkBEsRA5k/ufzOWTq7P5/VdRn98sEFHLHz+UcetSEUbGxqhpmQkXD0fJ0gcjMbcrTZuFpLIASdUCZCryup3qyx+nt65YJ1ecHmKZGa/Suyz/DBrS03u+1pOJ9rPLcjQa2q0u3DvLQJtGZ2c0cj8WTvoNSdpFhk8u44dzA3gjRP3j6p8u7hH683ck7KiQEB8kg5amupiZVRmkKItxqCv2s32YFB7Ike2ryI6PYMYkf+anxGJqoIOTnaXovGVRHyqHkqjhA0VtV1RWwmCMMzKRYWitKMR+RgSGOorME6PYL89LhKCLRBSJECK+FbmQH55ncvlMHF8/nCNcmyv297h4Ma++X0JKYiDG5m6YWo1luJUXzt7j8YrPp/+8DCS1Jag3LGLdgX3kN1WRtaqGwTV53X0rMn9ULE7dZzMlOsbSc7xGz9q8Xai/KyXxvoVTA8dkTHK32jNUOMlRzLwNdhYUj09EUv8KSd1PSGYdoqHOFa5I6BYCv+kRWGxfX5JwqF5CW2F/Ggps0NEQqbp/XwbpKRFcPRPJbBeU/UfStryMa4fXsG1lEd8/OEXilPH4Cad6uDmgKFysICcrBO6PrKI8miPMkUmagenSAtKjjDEx0qMwf7yovaIz7q7k1W/lfPu0mNevemptJc++KuDxg1R++DZDiCsc3N1zI5Tz87MqwkLcMRvhg7ltILqGthg6jkU3OBaZqiJxXeV4rG+kfW8HLdXTaa2ey9rdO1h1YD+hCxYwYVYOBn4Tf9Py8D05zNV9vpy1tbkkMvLv9aBgQ0HEsAMNDQMXJIR8ZmegjIbsQBKFe1e7jmR61BL6t7xBsuQ5BrNX8d2pAX+6Vgjb/bEIkaof7ZOwqURCbfEUoqeNx91Nj8Fy/THxtcYoKwDJnFFIcj3QHWXG3k01rFqUzoPrB7l15Qhh/h60NJSjrq7CkMEDGSRGMDt7S6xGOzAgbRa5bXM4tWYo++rNeSAaKbrF7EsNt64W8ttPJTz6LI+vHhbyxYMCvnyQKd4XqbvH3cLB3X8s5KNL+RgZ6DN8+HDcR48T2UEdI4dx6I2LQjU5gwHFIj0LFw9bvgDv+iIWrK2hcdtW/ObOY1h4JArBoagGBaPq7YeSiwd9LMxf9bEafr2vjUmlrIvpSE9Pz369y/jXpXimW1lWzIT6CC/bX4aK+dZVU5kGWzNanSyJnN6K067XolZ9SV1LyNt03C2c+4dwcU+afn1NwvEGCc15yiyqLiUo2o2pMd6oaCogsdZAkiDELfBCUuqDfMJoLCwNmTbRi/c66njxk/idlXl8+cU9/EK9sLI0Es2WPL4B7liOtsN4fgJJs0OoztDk8sFpQrCVQrwmEcu5d7ucq+fyRGpexOO7hTy8V8LDuz2uXSLEFeNRdxWvfqlhRow/SVGa5MzQJsxDHU1NbVTVDRnhHIaZSzDGPmFYzkoianMTZkuLsM0ZT1jORFRSsrGfX8LkxQ145RUyfm40RsHuDLCzQSLmdIm1IZIRum9kbDQ/7TvGsH5AhK1l73L+9UB0zrPDnNZ4WamjozCYVBNdWt2sWe1ixbTo5UhWvESn5gLfnZMF4di3DdZNEbckfP2ehG1FElZVJhAd68vYSQ54xntgMdpCLIIOkmRPJGWiGy6ZxJDFMwlOCMdMLJCliR5jhYgjzAy5duUsk1Mmk5wYhryinEilFviKTGAtaq+ljTdGZo588H4e3bQK4Vp4+VuD6JirefZ1rUjRy8RoJMQ+v0ik7eVvxae7pwmr5cdny/HzGsmuNa48PGzBg8OjGeNujvJQXRzco9+GjeskzIIiaT64k5ad+5iS60VFYyzVHZ18+uglZ699T/uWo9y7/xXV7R308x2LnLMTSs6OKDjZMkSYQDLagIFRNnt6l/OviZWhVqqOiiJeeio02ZmyepQ1G8bYkhCQLNLzM5ZsS3kraI+w3WLbLZz8Rgh9plFCY9Yw6itLKUgJpTwzksLsSKbFj6OfqToymWGizqULB4uGZkkRM0XTpOdoipz8EGSHDEJOhJuLDU7j3UVatkZFTx294fp4FsfjFRSBha0HYeHB/ParcC9tIlYL8Vbz5o8Wfv15Gb+JePViBT//sEzs/w+Hi9n3zXI+OFAqOnMxCYywYEaQBjtL9Yn0MSAx1ImoED9sHXwZYT8Wzekz6Tp5hNDMJK4fNuWjD+bw7NkrHn35miNnHvH+B1d58t0b7j1+zZRFS+jjM4b+ViZilNOm/whdNILc0I31qu1dyr8m6ekBA/2CXc+OtjNmnnDeMhs9Wu2Nmaqpi3PJO3x3Qf5PgYWoPam55/U370voFO5trkimKHUahckRrCxLYl9bIXnxAbS2NhNTMB/t2Clkr1+JX8cSjNdWMjkvDkMbI4ZqqaBvYcrc3EIGDBmIrJoCw22G4zM/lrElCRiZWmExYhRr1iQJ0daJWN8ba0S0CRFb+fpRDc+/rhPNVZ3Y19wbjbz5vYmFxZEY6Slib2MrOnZtNs0zIjZQi0ON4dzYbMmuGl3G+bphlzqHffv3Mi/TiEWtydw4t4nrN5/x2WffcP/Tp9y+84zHT7u583k3u4/fol+QP8McR6BtrsNgC3UGjjEmKismtHcp/5q4LgjS9i6c8FPMohkUFM0kLcSBXGdDkrVk2V2m+Ke4InrE7b4pI0LChVUSWnK1aF1WS86sMDpWllE2J5KC+EDaGxdx8dxlbt39jncOnqZy5TqC5maglD4Dw9oUQqri8JroSnZxFU2rVqCuqYqqgTpOcyMwyQolavYUrKyMcbA15vnTFUK0DSI2itjUu13Pi19bef5VHV98VsXrl0Jgeo77U+TffmgiyNecfRts2VsxmKbZmqxLMcZ+hCp2NlZER4wmPc6XytIc5tZVU10STUyONTObcynt2sOnj39n+97LvH/kPE+evuDLL3/lwcPf+ejOD8SKGq3mPRoXN1uGOxrTb5z5j5F5kX/tx31lk6w2qMaZMGCyCRYZgUwtihYNig+5wXr8dEaIe/tPgbs/EuJ+3IcfTkjYKTrnluoMKrPiiZ0wioriBFoWJZMZPZbzxw6wY+s2jh2/xPnLj7hw7UtOX/ycNR17iEvPRNfbAcOprrxz/CLFtekkZ8ag5GqMflU4ZUdaySqcRUTYWBZXTRG1t0fQDiFgp9huFdue1x08f7JCdM61fHm/JyX3OLhR7BfO7m7l9JFc0dDZkx2pxIcbrTi9zJm1qfosSjRgWY4dVmY6KCmriU45GLmqucyIMEFe1H39igosK2s5dfM5G7d8wMnT13n85A0fXv2WK1cfcfzcNWySIlAfK/oMUX91/GwZNMXxr/3Avnqmq7NXsuXvC8vimFccw4AZTuSunE9JUwHHtln9KW5P9IxFPc3VJxKur5XQNE+Xzc0rKM+YQUVmHCOsdVndlM/eNRXs27qehqXL6Ox8l6OnbnHu6mPOX/uCkxcfcPDoJbF/B6vXdlBU34zavHCMEv0JXDRL1Gl/cg8t487HR9i5q4VPPhYNE11CvB29IV73CC2i+007r16uEzW4pzaL1I1wuYg/fm9jfmYA5iO9sLEbi6+rCTtSbWnLdyZxahCXOyfwXp0HNiO0kJ2Thn2sC+MnmqIeYINWWTZaC8sZtWwlbVt38/DJLzz5Vtzb917SfugaCRXp+IkeQ2GUI5JRw5GJcUNpnv+C3qX86xHZFdl3QOqI47Oy/eloW0JyWSwKyR64zA9iemkI35+R+bOx6qm9Pd2zEPfnsxIOVElor8+lKieJqqyZtFbNo6kyFT3TYRzf1cSxHU2sbapn+/Z9nDh1k/NC4HNC4HNXH3L6/KccOnya90/fIruwjOXrN5HdXE/4mgIGrZ6OfnsiU3aVkJUTLpop4V52C2H/77FThBC7R/hesWGbiC0i2sXotAJnRwtsXCZi5xKKjroWXWlmONkZYjlSCO4fweYKbxKT3Rk0cwae3poMdbNgzOxxyM2NZPTKGgzLy1AvLSdz237K958jonUbcilpyMRNQzY0AKPQsYxdlEJQYw6JLcXevcv512NOc7J/v7nW3Vppjrjn+DM4YSS+lbHopfuwfePIt01Vj3P/LxfflfBJhxiL5g6mdekS4dx4ytJiWZQRQ0vlXAqSQ/no1C5uvr+W93d2iPHmJB+e/Zizlz5/K3CPi89cvs+p83dZuXEz9fWL6OjaTnNbGwf2dbB593qiWgpRS5sgBBjPT98U8eb1KiFcj5h7/4y3Iv+Ho3uE3i62It46vZ339qTj5OSIg1sw5iO8RTpWJSbCFG09K2zF/GtlJ9xtaY5vbBga48egNFIfxQlO2MzxwClvArNX5DKjIZqI5gS8F89nUF42MvNSkYmPZUhEMHYxsUjSxyHJ8qfPvHEvxlbFqvYu51+PWU2pY4KWRu7QKHD7YXixL5NXpKCf48GUsng2Vtjy/UlF3twQLu5psoTALy7++YeNraWD2d6QzpKceCoyYkVjFcqChCBunNzPlaP7uH5sNycPvccJUYPPCsdeuPqnuOdFHbt45XOOn79DVX0RjfV5tLWvJL8gic6tqzjy/rvs2ruHMWNDcHLx5dyRIO5eDuXpw3n89mPPt0PCpW/F7BH1PwT+7ym8+80GFhX5U5I3meVLF6Kpp8EIFyMUFBXQMRrJUMPhDNQdipqYEhTyklF30aKPmI0NZgk3J/kzYXEmew40EJLqSEq6BqNyAuifPA252FA0A8ZgkxCHSrkYHReGvp3xB2f7X+ldyr82a3dUGznVhjZFtWZ+n762gBlViXiFj2ZO3BiOr/Xks/36vLg8mEd7JRwRAu+rFSJXDmNHUwY1OTHMnxHI9tVVHOhqp2t9Kzs2b2b/vvc5cfIGZy4I94pG6/yVnvicE2du0NSxjczCdLLSY3ALdRfOiSBmWTrH961h49rFZJeUoi/m18Z6N65+GMaNS3HcvjKTZ/cLef5gNi9+6PlCX4xLbx29T0RP2t7O069qyU0xZdcmK1qb3AiOMmKYuiIqhhoo2xgwyMOY/hE2uC9NQiZ/CgbBxshPdqdvuAtmxTM5cKyTrKWJjPTTw9TLgP4uVvSzFscY62Dn68HYpenIL45BY4Y3kkBrVLMntPUu4d+DmNoYWaUFznGDc13PmhaHvJ5YGk1rx2JaV4xnf5sTV7ssuNLej0PLxQzcU4cXq7Nl5VwWZ4Rz7eQBGqsX0lSzmPY1Gzmw/5Tooq9z9tw9PhTN1fnLn3P63C0OnbhM1Mwo/ILccHe1Rt5CG6/8OLIbi/ji5gkKNy4leOUCBsxyIDDHiSvnk7h+IZFr52cIkZO4fSGU2+cDuX89jG8fJvHq55XC2ReEwBdFWYnFb9QAlpbr4TtehX4+Jsj4iFFmogWSBCcGZLszcploCDdWIBFzsiTIEb1Z3shEeVO6ex3rdjfgEj4STWdt+libIDHVZ4CeOmpOIyhqWs7EyVPxnehHaIQnxlniGvLCxZ31N/ymqeeLf+N8FweVVOfV2lleP6pne7KkMYjOZmsubHPl5nYjdi+ViNGoP7p5PmzqrGdvewP5qQmUFhSxbs02Dh08y7FjVzj74R3OnPtUiHyPY0Lcrp37Ge07mklxwYwLcGaUhx3WwY7My4gjJiYE0/hJuDYvRJI7AYWCMVw9V8b9mzV8fquSu9dyuHlhBjfPRXHrQgi3L07g3qVwntxO5fUvJ0iZNRE52X7Iyw2k/+B+DDRURuKmzZDUUdiumI3tpjJk1xTRpzEDSXkY8tPHYjTdC93USeRtrmVMVgyq9jpCWBEGOvTV0kDd1QYVUYo8J0/Gy9URYx2xT12bMZ5ulKR47e/5U2/vsv09Cc0fq2qS5pqplTvqZm5b4pt1G6awptWGrjYVPAoNkWQ6oZzpwczG2cSVxZBVkMuWjnc5fOwqp87cFg7uEfgTTp69xdFjH1JUXIK2pTGWXk6MD/YhIyuT8sVLMTbWx3iECcpeDmhVZWG2soj45gzWbo8TLl7EJ9equXNlIQ9vVvLw1kIe317Eg1tFPLiZw4OP5vLyx6N4uTsyoOcrx8EDGTywP/JKKgx0NsJ7XRV9GhYgEb/TbGM1jWd24LcuF10xKahP82NiwRTCF4RgF2hBX2MtJPoa9BNCDjPRwzY/GeelhSIj+GFsoo+vhznWZsNxNtfH29FqVO8y/f1pbZ3dv7W92LOps2ilxeKg5x4rwhlS5Y1K2VgUCj0Jbk0ibN08xi2ZSlJNGh07t3FKjELnLonR6NxdTp75iBuXz+Hu54KcgToa1kYkp6SwbccBTosUXtPQjpqJLupezlhVZyFTncHiI1vYeHIDNV3p7DqUzKnj6Vw5V8id60v44k4j336xlV9+OMHLXy7x8tdrmBlro6Qoh9yQwW+f4dbUN8cpdTJDxEgnacxH0lCApC4T5foEbFbNQVLqT/CqTOIKQzEPNkd2pB4y+ur0G6rCYEVFdISQKr6+2EVG4unujqu1IaYGuhjr6uAxUufVopiRhr3L88/Csz5ESXGR28yB5S5n+5eMfq1YMRZJkQcDyoOJ25hHZFsy8a2pRNcls6S9mWMnL3D4yFkOHtjPguq5DHLQR0WIXFqyiENHL3D99nOq6zfhPMYBeW9nJGmR2LeUMu/AGjZf2s+aUxswKguktCuPLYcL+eBEIdev1HPv9lqefLGLP14/4cfvbzB1coBI9cmMdhslmitdho40Z9TSPCQt85BsFuJuLUbSKl6XhyAp8Kd/+URsVyZjvnQ6YZXJeM8MQcVUF309TbTVhzJs2FA0LEeiqKWLkY4udhZ6hHhb42BuTPgYq1O9y/HPpadWWxR7uajmebQOWuDzrE/xONK6qpixMZ9W4YxtDWnUrM4kcfUcXPIm0dJcybqOOjyLw1CcaEXzqrWcOvcxa9r3iRRtieNoWwKSIkRDFErdyU7++P0Bv724x+Hb75K0o4x571RSebCewl0VNB+sZvWBUq5eXcmnn7Rz7+5h3OK8Ca2aTXrtAoY6m6CUHIRLT0O1JA3JYlF3l4tYLV6viRPpOpzBDZOQXz4Z5YJA5NyHo2mghp62Gk4jzJkeEkD0BH8sjQ1QV1MTgqthKd53FDfNcB1tgtyMO3qX4d+DoPwgZZ35XvEKBd5nJzTP+WPRhgVk5QTyztYldB1sJbA+mejliZhVB2HRFIVNSwyF7cvYv/896mtrcXWzR89EB73RFvSLCUB5+TwSDq3hzKOz/PrLTV799hE//XiJy/cPsf7D9VS938iEDVmkdpaw40wLq3aX49uSwYCSQPrnjhFZwAWHVXkMWZWNb/sSTFaWIbM4Swg9F0nldCS1k5C0RaG8cRpzl4i0ra6Crr4mrnYjhLB+ZMZNJnvGNKYJkbWFwOoqijgKd1sZGTJZjFuVSaMSey/934uescG5aJyNycLQFRNb0r7O213DBOFmSf44+opwrI1jwppkJq5PZVBtEIXLi9m3vZ3pCVMwtDDEctRIdGIDhRDJGK0uRX5RIg45U6nasYzPvjzNm5c338a9J6eoOdHMwsONrD3bTvOxNXhvKcNuQx7mTQkMrIjAo72CAY1zOXftKHu3ryKtOo+p7TXoLBc1uTIGSclEZnaImdve7K3ARoY6BPm4Ex0cKASeSs6MGGKDx6OroYbWMEViQkdgYWiAhb5ed9aMEN3eS/73ZfbiSEXjqpDJcpWh+2WWTHwlqZ6ApGI8krLxyBT6Yb1iJvYV02les5y84ix0HIdj4W5H4Ips1Gvmse/dLpbVVRHo646zlx0mQU4El8xiy4mN/Pzzdbp//5iff7nO3ccn2HN1B1rN6aKZSmFgcxrma4swXV+MacsCdt08wpquBhZXZtO5qZotl99ljBC2X2UsMzdWImeojqK6KopqygwePABtIei40W5EBwVgb2aGrro6ehpDcbCywM/Fiuw4x58Oro74Zz1a+1/Fce1Mo6HNk6sGr5zyQFIX1i2pDaNPTRhmjfFUtZWTVpJBfE4iWY0FqG+fg+LSOUxrW0TMlDCmhQYSHebPrKkhRIT44DzeGaOpXiTvquXUZ0d48eMNNlzuQrI0GsmymX9GTTySFSmUH9zAHtGN12xbydojXew6s5NlF7az6/ZRhm9bgG12FDJTRE2OS0I3OpLgSfb0l5djQL++DFVWQl+Ia6CliYVIzbbm5oyxNSHQw7qu97Kk/D+J6MwcrN8aF6iwcvKO/k0Rv/RpiEC1fjKjV6UStjYPo01JDNicSMvODhrXrCA80Je4SROIj5pA0rRwEoXIURN9SZgTy7ilmbi25vPR3RN4biwRdVWk3RohVk9UizpbF8+71w7RubWOgtxk6hfn8P6lg3ivLke2I4f5ta5cPBmPR2kJmeu3sbRrB9VrK5iTNxZlDVXUNDXR0TdEeagyvrPGM27GeJz9nb4b7+am33s5Uv5njF8/XUOtdWrGoObISzLLw19LakKRrJ9Kn7Wx5HYtJyM3gZmTg0mJjXorbnxUiKiD4xnlMpKsqgzqK+JZdWYPpadWk7RrGUrLEkRtnSrKQDTWrTkMrZ2N/bZSZh5ZSePe1XS818hGkZ5PfXqGmuYUasQo99m1Sr5+8oynX/3G44cvuXT1cw4d243RhNHoWNljNNIV45H25NXnMGm9qOGNmTt7T1/K/ypdXZF9h6+Od1ZdNWX1oLVTn0s2CCdums7EzlICF83Ac7ofybGhxE+eyCgnW/wDvDCO9qGws42Id5fTeHQVh95dxdIjG0nuqsV7cxGxe5bxwfUTHDm5C9cwP+wrU3E8tIxxh+oo2lXD5jZXfr4/j7uf3OP58xe8+OUFFz78mEdf/sS9T5+ytGEKTmOdMHAKYOSYcfguTaPi3Rb0SyPm9Z62lP8dpjWnKFuumZ6o3D7jWN+m6JcmG+cSs6+KiM2FRJfOJHJ6EEXFc9m0qY66netxbsqktr6QJbXZZO+uF43ZGrbuaCOkczE61YlYzJ2Mt+cYcppL0H6nEAMx94bM82N+lQfb383i8YMv+Prht9y4fJMfnv/Ek0ffcef2M7LrCjEZ64qZRwSaXhORKY9l4NKpDC8Ks+k9VSn/RWRGtieYKm9IWDhgw4xP+66b3j3unWIxFq0kbnM+baJxyutcRfThWt7bvYL1HfVUfrCOopwkSuoXoLI+jdT3lpGQNhXnsaNZf7Idh675YixLwCbKg5iiYPRiI9l/9AyXz17nzidf8fD+N3z9+Ck3rt6nqikHG39XtJ0CUUgUDZuY4/svCn9WWlra8/9cS/n/k+nHSgeZdSZPVN4cv73/6tif+m+c3i2zZRaDtiax5HyHmI9vUicEbHx/Fbval7BgYw0uu/IJO1CN2pJYJtRnEniwGg/RWLnPjyC2PJ6WVemcudKF19x8Dhy9zvMvnvLg7uecPnaDS1eu45/ig6GHLf0meYrmbRaS5TOQLQn+az/g/k/AvSNFecq7iwLc9xS0q2yd/WRQR3z32APleO4t4er9C1y/dZSEzYu5cusU+/a1ktNWgGtVMoMKQkjcsgi/1GA69rZx5NQO1u3cROjCYjZ31XD0hJilD5+mrG0z1YsnEZDgSkRtDinblzKiTczXS6NQKAhI6T0NKf8KGs5tUvDYVxit15V6oX97bLfa1mSazmwieGMxp64coKW9jMuH1nNwz1rqD2/EvTGNRY1ZtHY2cebMbto7Gyhcms07XbNwTY2gT0AAEq8xaAY7I5sWgExhKH1KQnBvmYd7Uxom5ZPsej9ayr+S2a2z+0dvL5zqvCn99N7LB14kfrACl92iTh/byOrjazh+aS81R9YxrGYaR68fpG5tFR2d9bRuKGBZSy7lzVmYJQeiNTMQ/4XJ9Jk7lskLp9DQkkd4VRj9K4PxWZPxpLRLWn//j9Lz7daMdbnDg7blVQTuLHh04PphLHbk4ruvjOLDazh14z2O3niXQx92UCfm5ICsIHzzwpm5KoVs4Xr53HFM21TC4MwxNDbm8/6+DXRuXYJ1lT+yi4P39n6MlL8Cpa2lQ7LbC8IN2mevH9A69emglVO6j10/wPkL7/DexV2iq95AwqYCMrsq8N0yn775Y+mb50XcllL65LpTUJ3Knu0t7OxcgWlFAIpVQdL5969KwKZ0Be9NGbPev7Dn8sKdS97U7V5K54EVzGpNx2HlTGSWBSEp8UVS5kfcthL6FfugWuRPxJJExiyOpU+pP6ZVE5x6f52Uvyo9jx3NaZ/nmLV1Yd2uI2seTm+Z2924czlFW8vQqA1FUjEOhSUTmdFZxODycUiKvd7GwIV+34o6P6T310j5O9C6t3RIcNvMCQs7F29e0Fn+bM/53d3z9y3FvDkGuZpAIkTanrI5n9iOQuZ2Lers/TEpf0cy1pcqFWxfHNV8ZO27ITuLfpYsFem62hOZSi8R3qL+jpPW338KTu2xqioNQbMGLgs4IVPj81qyeGy3UW2Qde/bUv4p9IxcVivCbBTrAmb3vO7dLUWKFClSpEiRIkWKFClSpEiRIuX/OxLJfwNWNSm8Yv+N/wAAAABJRU5ErkJggg== - - - PCBA老化测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Phobos/Phobos.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Phobos/Phobos.xml deleted file mode 100644 index 5d6a570..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Phobos/Phobos.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - -1 - 2 - Phobos - P_Mars_20220930_152148.png - Phobos 蓝牙温湿度传感器 - 2023/2/19 16:07:31 - Phobos 蓝牙温湿度传感器 - 0 - - - 2 - 1 - T1 - Test - - - - Phobos PCBA 功能测试 - - - - 3 - 2 - T2 - Test - - - - Phobos 整机功能测试 - - - - 6 - 3 - T3 - Test - - - - 镭雕条码站 - - - - 5 - 4 - P1 - Package - - - - 关联彩盒码和机身码,并打印贴纸 - - - - 7 - 5 - P2 - Package - - - - 称重,并关联彩盒码,记录重量 - - - - 8 - 6 - P3 - Package - - - - 外箱装箱,关联箱唛码和彩盒码 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF-RL-1705/RF-RL-1705.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF-RL-1705/RF-RL-1705.xml deleted file mode 100644 index 87355ff..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF-RL-1705/RF-RL-1705.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 17 - 3 - RF-RL-1705 - P_RF-RL-1705_20210925_180002.png - 微信锁从机模块 - 2022/8/30 10:29:22 - - 0 - - - 50 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 51 - 2 - T1 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF_1901/RF_1901.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF_1901/RF_1901.xml deleted file mode 100644 index 31de10e..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF_1901/RF_1901.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 4 - 3 - RF_1901 - P_RF_1901_20210925_175611.png - RF测试项目 - 2022/8/30 10:29:22 - - 9 - - - 7 - 1 - T1 - Test - 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 - - - PCB测试站 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF_1908/RF_1908.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF_1908/RF_1908.xml deleted file mode 100644 index d31e26b..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/RF_1908/RF_1908.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 1 - 3 - RF_1908 - P_RF_1908_20210925_175436.png - RF_1908无线模块 - 2022/8/30 10:29:22 - - 100 - - - 1 - 1 - T1 - Test - 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 - - - 电流/电压/IO口测试 - TP_RF_1908_T1_REV_31_20210106144943.uts - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/SW-430/SW-430.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/SW-430/SW-430.xml deleted file mode 100644 index ce6ae41..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/SW-430/SW-430.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - -1 - SW-430 - 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 - SW-430机型测试 - - 9 - - - -1 - 1 - T1 - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACoAKwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCz4g13WovEeqRRavqEcaXcqqiXLgKA5wAM8Csz+39f/wCg3qf/AIFyf40/xE3/ABVOr/8AX7N/6GaoqAa61y2ufF1KtT2jSk9yyfEGv/8AQc1P/wAC5P8AGm/8JD4g/wCg5qf/AIFyf41GYs1EwwcVUeVkupVW7ZYPiLxB/wBBzUv/AALk/wAaT/hI/EH/AEHNS/8AAuT/ABqrTcc1fs0Sq9T+Zlo+I/EH/Qc1P/wLk/xpp8Sa/wD9B3VP/AuT/GoI4Hmk2IMk1qQabDD80gEjeh6VrTwsqmwpY1w+KTKi+IPEbn5Na1Zvpdyf41KNV8Ut01nVB9byT/GtA5AwoCj0AxQAM8jNdKwMEveZlLMajfutlD+0vFP/AEHdSH/b7J/jVefW/EsP3/EGpD/t9k/xrZlaJLd3IAwK4a9uTLOzE8Z4rOrh6UUdWHrV6j+I1G8TeI/+g/qo/wC3yT/Goz4o8Sf9DBqv/gbJ/jWVFMG+UmnNiuCUEtju56kXZtl8+KPEv/Qw6t/4Gyf/ABVRt4q8Tf8AQw6t/wCBsn/xVZ7EVCx5rNo1jUn3NH/hLPE4P/Ixav8A+B0v/wAVQPF3ib/oYdW/8DZP/iqyjTc1jI255dzaHi7xJj/kYdW/8DZP/iqX/hLfEv8A0MOrf+Bsn+NYu72pc+1QHPLubH/CXeJf+hh1b/wNk/xr2z4Pajfan4Su5tQvbi7lW/dA9xK0jBfLjOMk9OT+dfPfGK96+CH/ACJd5/2EX/8ARcdCOjCybqas4HxGf+Kq1f8A6/Zv/QzVFGq54kP/ABVWr/8AX9N/6Gaz1OK6VsfO1NKj9S4G4qKQ0wP70jNmqgrMUpXQhpKQ0HpXSmY2NrTI1SzMhHzOevtVk021XFhDjuKdXtU4qMEkeTOXNNsb2pp4pxz2qJPPwfOkjbPRUTAH49abHHYo6vOY7JgD1rjJG3NXTeIZMIqeprlzyc15OPnbQ+nyalePMw75qyjhgA3BqDFOxkV5cajie5Vw8aq13CUMp5GKiJq4mcYIDL6GnfYopvuMY29D0rdJT+FnnzpTpfEtO5nmmVcn0+5iBOzevqtUTwcHgjsayqQlF6oISUlox2aM1GXxSeZxWBpykxNe+fA//kS7z/sIv/6Ljr598yvoD4GHPgm8/wCwi/8A6LjoR0YVWqHn/iX/AJGrWP8Ar9m/9DNZuTWj4m/5GrWP+v6b/wBDNZma3ifO1V779SQNS5pgNLmtosyaFpM0UHpWqYrHTWv/AB4w/wC7TiKbac2EH+7T696Pwo8SXxMYaYakNRt0oZSOV8QSZuNuegrEArS1l994/wCVUMcV4GOleofb5TDloIYOGqQCkAFOXrXnHsIlTg9asoM1XQVaiHHvVxYNE8bsvQ59c0k9lb3qfMu1+zDrT0HH1qQDB4rrp1vsy1R52IwsZJyhpI5O8tpLScxvz6H1FVc10muwh4A2PmXmubrHE0vZzstjHDVfawuwzX0L8Cf+RIvf+wk//ouKvnn8a+hfgR/yI97/ANhJ/wD0XFXOjuofGcD4m/5GvWP+v6b/ANDNZRPNavib/katY/6/pv8A0M1k1qmfNVfjfqOBpQabmlFaJmdh2aN3FN6UVrFiaOrs+LCD/dp5psWI7WJT1CDimsZG6fLX0a0ikeE9ZNinjvUMrDY1RzoVjZizE49ayra5d2uY2YkIAR+NZylbQ6KdLmTa6GBqDb7pz6tUAHFOnO6cn1JpwHFfOYt3qM+6y+NqKI+lO7/hSsKaK5TvJkYkAdcdKuRiqcP3h71fTpVIGSqMHPc1KoyaiUc5qeIZbPpW9KPPNROXE1FTpSm+hT1fHlEfhXJONrkehrqNVfOFrmroYmPvXTjld3PIy/4SKvoX4Ef8iPe/9hJ//RcVfPQr6G+BP/IkXv8A2En/APRcVeatz2KPxnn/AIm/5GvWP+v6b/0M1ldq1vE3/I1ax/1/Tf8AoZrJJ4rQ+aqfG/UM0UzvS81SZNh9PiXfNGg7sBUQNW9PG7UIB/tVvRXNNIio+WLZ1Yh3HAHTipRasf4cVd0ye2WKVZFzKr/pU0l1CzHzGCgdAK+jc3eyR4sKS5U2zBv7Zkt2JHHSubgTZb3sh6l9v5D/AOvXWaveJLCtvbgnJyfc9qwL+EWumMmctyWPqTWc7tXZ00mo+6utjj35lFSio2/1gqRa+axP8Rn3OD/hIUjIqMjjipqQjjpWB1iwdavrnjAzVOAc1dUYFWhMeOtWf9XESetMhj53N+FR302yLHdulethaPs488tz5zMMV7aaow2RkXknmTE1j3vEin2rSc81mX5/eKPaufFO8WzbCxs0iDNfQ/wJ/wCRHvP+wi//AKLjr54QZNfRPwMGPBN5/wBhF/8A0XHXnI9Si/3ljz3xN/yNWsf9f03/AKGaya1vE3HivWP+v6b/ANDNZB61Z87Ne+/UKKKSmhWHfWtDS7eRrqObGI1bqe9QafZte3SxjOwcsfQV1DRwxIirFIFXGOgrejK00zaGEdWnJvazHtayeY00bmMEYYnG0/nURSHdh52kPogLfyrQVFnyWGQOgPan7AOgwK9bEY72U3BI4sBk/wBYpRqznZMzP3cSsyWs5wMknC/zrH1O8jnsSTbzQhxhS3INdFd/LazNjoh/lXL6ydmlwr/sCpo4mdaMuboaYvL6OFnTULttnMN/rR9KmAqJ/wDXVMvSvHxH8Rn0uE/hIBnvSmlpVGTWKR1NksIq/DFnDMPoKjtrfAyw+gq2WCrk9P516uFwtvfmeDmGYX/dUvmxx2qhZ+EHX39qxbyYyyMx/Aela9tAdSnZXkEVvEN0j9lH+NQyafb22q3CSM7Q24Dhj/I+/Nb1ayTsceHw0rKXcyb2CKKC1dDlpEzICeQ2fTtXOXUm+6bHQcVq6pflnkuJCDI/AwMZrHt0LHc3evMxE9OVnrUYpXkWIVwMmvoX4Hf8iVef9hF//RcdeADAFe//AAO/5Eq8/wCwi/8A6LjrlR0Yd3qnnfib/ka9Y/6/pv8A0M1kmtXxPn/hK9Y/6/pv/QzWSeKo8Op8b9QoooA5qiTrfDdnssWmI+aU8fQVoXUR25q5pUUsOnW6xBOEBII61JdRM6ZYKG7helaw+JHuQhy0reRXtlJDCpTHgU+0jwv1qw0XeujHfx5HPlH+5w+f5mNqYK6bcn/pma5XxBxaRj2FdjrMeNJucf3K5LxQhSIL6Bf5Vvg/4czkzX+NS+Zy7D96DUwqJgSc+hp+7iuDERfOepg5r2Vuw6rtrB0ZvwFRW0LMwJGT2FaYjWFfn5b09K6sNh1H35nDjca53p0tu4ZCLk9P51WLSXEyxxqWdjhVFNnnyTzVnQpYRezGWYRsYSsbdwTxx7121J8sW0ebRoqU0maQt7fSxJY3G6Vp9jpxwxHUH2Brntc1IFGhLn5GLTMOhb29q0dW1cWlxboOfJjZXJPPIwM+/euAu7pryUqpPlA9f7xrzJSt78tz2FBP3I7Ijkka8uN54QcKKtooUcVDEgUCrC9K45Nt3ZrJrZDq+gPgb/yJV5/2EX/9Fx18/wBfQHwO/wCRKvP+wi//AKLjpLc0w38Q868Tn/iq9Y/6/pv/AEM1lVreJv8AkatY/wCv6b/0M1k1R4lT436iYpR1BpKXNUiD1DS3Dadbt6oKnmwUJrn/AAxqKy2H2d8Fo+xPataaXjjpmtoK8ke4qidG/kX5LMxwRSxsQCgyVGdpx3HpVYyz8j91Jj32n9aJ74pwjcelUJLkyNlsV7Twiq6zPl6eZyw65ae3Ylulku4fJdEjjZhvbdkkZ6Aetcz4yh2hiBgFFYCumtjEHBYAe+KyvGHlXODFgr5AX8QaFQVJOMepVTGTxLjOpbRnnyDOD6jNWIoNz54A9arxH5CvdGx+FWY5Nveuax267GnF5cMfA59TVO5uQT1qGS54xmqLy5przDlvoiWSXNQGYxsJA20ocg+lRvIFUs7bVFZN1cNdvtXIjH61nWrKCN6NHmYl7evfSEBjszkk9WNMjjA6UqJt4xUqivJnNyd2egrRVkKBTqQUoqCRa+gPgZ/yJN7/ANhF/wD0XHXz/X0B8Df+RKvP+wi//ouOiO5vh/jPPfE3/I16x/1/Tf8AoZrIIrX8Tc+KtY/6/Zv/AEM1kkVZ4dT436jKX60U000SXLC+ksblZo+3Ueorq4tVgvIg0b4Y9VPauIJpokZDlWIPtW1OVnc2hVcU49Dv3kLHrSDmsnTdSju7dVLYlUYIPetASEV9TCpGcVJHycoShLlkW9vyZzWdqCgxHnOKma4O3GaqTPuBBpS1NEzirofZrwn+EnBpC+3irusQAknsaxwzbdrfeXgmvLmuV2PoqL9pBMkeTPeq09ykC5Y89h60y5uRCvHLHoKzdjSPvkOWNcdXEcuiO6lRvq9h0ksl0+W4UdFpyrjoKcqAdqkC1wSk5O7Oq6SshoGKcBTttG32qBXG07ml20oFILiYr3/4G8eCr3/sIv8A+i468CxXv/wP/wCRLvP+wi//AKLjpx3N8P8AGeeeJv8AkatY/wCv6b/0M1kH6Vr+Jv8AkatY/wCv6b/0M1k1Z4dT436jccU3FOP0pppiQhqI1IT2phqkx2GK7xsGRiGHcVrWuuyIAs43D+93rIpK6aOInTfusxq0YVF7yOrj1C2nHyygH0NOZsjgg1yPTpSedMnKysPxrvjmH8yOT+z1f3WbmoReYh6D3rmLhgrFR2/Wp5Lu4YEGVsVTbJOScmubEYqM17qPRwtCVNWbKzR7mLHqaBHUxFGK81u56CkMCCl2Cn4oxUBdjMUtLSd+KBoMUmKXml/CkUhte/fA/wD5Eu8/7CL/APouOvAsV778D/8AkS7z/sIv/wCi46I7nRhvjOO8Q+H9am8S6rNDo+oSRveTMjpauQwLnBBxyKyz4Z1//oB6l/4CSf4UUVocUsNByYh8M6//ANALUv8AwEk/wpp8Ma//ANAPU/8AwEk/woopi+rQGnwx4g/6AWp/+Akn+FM/4RfxD/0AtT/8BJP8KKKLlfVoDD4W8Q/9AHU//AOT/CkPhXxD/wBAHU//AADk/wAKKKpMPq0Bv/CLeIv+gDqn/gHJ/hTT4V8Rf9ADVP8AwDk/woop8zD6tAibwn4j/wChf1X/AMA5P8KiPhLxJ/0L2rf+AUn+FFFS2aRoRG/8Ij4k/wChe1b/AMApP8KP+ER8Sf8AQvat/wCAUn+FFFQaexiH/CI+Jf8AoXtW/wDAKT/Ck/4RHxL/ANC9q3/gFJ/hRRSsV7GIHwh4l/6F7Vf/AACk/wAKQeEfEv8A0L2rf+AUn/xNFFKw/ZRD/hEfEv8A0L2rf+AUn/xNH/CI+Jv+he1b/wAApP8A4miiiw/ZIT/hEfEv/Qvat/4BSf8AxNe2/B3Tr7TPCN3DqFlcWkrX7uEuImjYr5cYzgjpkH8qKKEtTWjBKVz/2Q== - - - PCBA FW Programming with fixture - - - - -1 - 2 - T2 - Test - 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 - - - PCBA Test, Wite PID/Production Date - - - - -1 - 3 - T3 - Test - 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 - - - PCBA Current leak test - - - - -1 - 4 - A1 - Assem - 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 - - - Mouse Assembly - - - - -1 - 5 - T4 - Test - /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACoAKwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCz4g13WovEeqRRavqEcaXcqqiXLgKA5wAM8Csz+39f/wCg3qf/AIFyf40/xE3/ABVOr/8AX7N/6GaoqAa61y2ufF1KtT2jSk9yyfEGv/8AQc1P/wAC5P8AGm/8JD4g/wCg5qf/AIFyf41GYs1EwwcVUeVkupVW7ZYPiLxB/wBBzUv/AALk/wAaT/hI/EH/AEHNS/8AAuT/ABqrTcc1fs0Sq9T+Zlo+I/EH/Qc1P/wLk/xpp8Sa/wD9B3VP/AuT/GoI4Hmk2IMk1qQabDD80gEjeh6VrTwsqmwpY1w+KTKi+IPEbn5Na1Zvpdyf41KNV8Ut01nVB9byT/GtA5AwoCj0AxQAM8jNdKwMEveZlLMajfutlD+0vFP/AEHdSH/b7J/jVefW/EsP3/EGpD/t9k/xrZlaJLd3IAwK4a9uTLOzE8Z4rOrh6UUdWHrV6j+I1G8TeI/+g/qo/wC3yT/Goz4o8Sf9DBqv/gbJ/jWVFMG+UmnNiuCUEtju56kXZtl8+KPEv/Qw6t/4Gyf/ABVRt4q8Tf8AQw6t/wCBsn/xVZ7EVCx5rNo1jUn3NH/hLPE4P/Ixav8A+B0v/wAVQPF3ib/oYdW/8DZP/iqyjTc1jI255dzaHi7xJj/kYdW/8DZP/iqX/hLfEv8A0MOrf+Bsn+NYu72pc+1QHPLubH/CXeJf+hh1b/wNk/xr2z4Pajfan4Su5tQvbi7lW/dA9xK0jBfLjOMk9OT+dfPfGK96+CH/ACJd5/2EX/8ARcdCOjCybqas4HxGf+Kq1f8A6/Zv/QzVFGq54kP/ABVWr/8AX9N/6Gaz1OK6VsfO1NKj9S4G4qKQ0wP70jNmqgrMUpXQhpKQ0HpXSmY2NrTI1SzMhHzOevtVk021XFhDjuKdXtU4qMEkeTOXNNsb2pp4pxz2qJPPwfOkjbPRUTAH49abHHYo6vOY7JgD1rjJG3NXTeIZMIqeprlzyc15OPnbQ+nyalePMw75qyjhgA3BqDFOxkV5cajie5Vw8aq13CUMp5GKiJq4mcYIDL6GnfYopvuMY29D0rdJT+FnnzpTpfEtO5nmmVcn0+5iBOzevqtUTwcHgjsayqQlF6oISUlox2aM1GXxSeZxWBpykxNe+fA//kS7z/sIv/6Ljr598yvoD4GHPgm8/wCwi/8A6LjoR0YVWqHn/iX/AJGrWP8Ar9m/9DNZuTWj4m/5GrWP+v6b/wBDNZma3ifO1V779SQNS5pgNLmtosyaFpM0UHpWqYrHTWv/AB4w/wC7TiKbac2EH+7T696Pwo8SXxMYaYakNRt0oZSOV8QSZuNuegrEArS1l994/wCVUMcV4GOleofb5TDloIYOGqQCkAFOXrXnHsIlTg9asoM1XQVaiHHvVxYNE8bsvQ59c0k9lb3qfMu1+zDrT0HH1qQDB4rrp1vsy1R52IwsZJyhpI5O8tpLScxvz6H1FVc10muwh4A2PmXmubrHE0vZzstjHDVfawuwzX0L8Cf+RIvf+wk//ouKvnn8a+hfgR/yI97/ANhJ/wD0XFXOjuofGcD4m/5GvWP+v6b/ANDNZRPNavib/katY/6/pv8A0M1k1qmfNVfjfqOBpQabmlFaJmdh2aN3FN6UVrFiaOrs+LCD/dp5psWI7WJT1CDimsZG6fLX0a0ikeE9ZNinjvUMrDY1RzoVjZizE49ayra5d2uY2YkIAR+NZylbQ6KdLmTa6GBqDb7pz6tUAHFOnO6cn1JpwHFfOYt3qM+6y+NqKI+lO7/hSsKaK5TvJkYkAdcdKuRiqcP3h71fTpVIGSqMHPc1KoyaiUc5qeIZbPpW9KPPNROXE1FTpSm+hT1fHlEfhXJONrkehrqNVfOFrmroYmPvXTjld3PIy/4SKvoX4Ef8iPe/9hJ//RcVfPQr6G+BP/IkXv8A2En/APRcVeatz2KPxnn/AIm/5GvWP+v6b/0M1ldq1vE3/I1ax/1/Tf8AoZrJJ4rQ+aqfG/UM0UzvS81SZNh9PiXfNGg7sBUQNW9PG7UIB/tVvRXNNIio+WLZ1Yh3HAHTipRasf4cVd0ye2WKVZFzKr/pU0l1CzHzGCgdAK+jc3eyR4sKS5U2zBv7Zkt2JHHSubgTZb3sh6l9v5D/AOvXWaveJLCtvbgnJyfc9qwL+EWumMmctyWPqTWc7tXZ00mo+6utjj35lFSio2/1gqRa+axP8Rn3OD/hIUjIqMjjipqQjjpWB1iwdavrnjAzVOAc1dUYFWhMeOtWf9XESetMhj53N+FR302yLHdulethaPs488tz5zMMV7aaow2RkXknmTE1j3vEin2rSc81mX5/eKPaufFO8WzbCxs0iDNfQ/wJ/wCRHvP+wi//AKLjr54QZNfRPwMGPBN5/wBhF/8A0XHXnI9Si/3ljz3xN/yNWsf9f03/AKGaya1vE3HivWP+v6b/ANDNZB61Z87Ne+/UKKKSmhWHfWtDS7eRrqObGI1bqe9QafZte3SxjOwcsfQV1DRwxIirFIFXGOgrejK00zaGEdWnJvazHtayeY00bmMEYYnG0/nURSHdh52kPogLfyrQVFnyWGQOgPan7AOgwK9bEY72U3BI4sBk/wBYpRqznZMzP3cSsyWs5wMknC/zrH1O8jnsSTbzQhxhS3INdFd/LazNjoh/lXL6ydmlwr/sCpo4mdaMuboaYvL6OFnTULttnMN/rR9KmAqJ/wDXVMvSvHxH8Rn0uE/hIBnvSmlpVGTWKR1NksIq/DFnDMPoKjtrfAyw+gq2WCrk9P516uFwtvfmeDmGYX/dUvmxx2qhZ+EHX39qxbyYyyMx/Aela9tAdSnZXkEVvEN0j9lH+NQyafb22q3CSM7Q24Dhj/I+/Nb1ayTsceHw0rKXcyb2CKKC1dDlpEzICeQ2fTtXOXUm+6bHQcVq6pflnkuJCDI/AwMZrHt0LHc3evMxE9OVnrUYpXkWIVwMmvoX4Hf8iVef9hF//RcdeADAFe//AAO/5Eq8/wCwi/8A6LjrlR0Yd3qnnfib/ka9Y/6/pv8A0M1kmtXxPn/hK9Y/6/pv/QzWSeKo8Op8b9QoooA5qiTrfDdnssWmI+aU8fQVoXUR25q5pUUsOnW6xBOEBII61JdRM6ZYKG7helaw+JHuQhy0reRXtlJDCpTHgU+0jwv1qw0XeujHfx5HPlH+5w+f5mNqYK6bcn/pma5XxBxaRj2FdjrMeNJucf3K5LxQhSIL6Bf5Vvg/4czkzX+NS+Zy7D96DUwqJgSc+hp+7iuDERfOepg5r2Vuw6rtrB0ZvwFRW0LMwJGT2FaYjWFfn5b09K6sNh1H35nDjca53p0tu4ZCLk9P51WLSXEyxxqWdjhVFNnnyTzVnQpYRezGWYRsYSsbdwTxx7121J8sW0ebRoqU0maQt7fSxJY3G6Vp9jpxwxHUH2Brntc1IFGhLn5GLTMOhb29q0dW1cWlxboOfJjZXJPPIwM+/euAu7pryUqpPlA9f7xrzJSt78tz2FBP3I7Ijkka8uN54QcKKtooUcVDEgUCrC9K45Nt3ZrJrZDq+gPgb/yJV5/2EX/9Fx18/wBfQHwO/wCRKvP+wi//AKLjpLc0w38Q868Tn/iq9Y/6/pv/AEM1lVreJv8AkatY/wCv6b/0M1k1R4lT436iYpR1BpKXNUiD1DS3Dadbt6oKnmwUJrn/AAxqKy2H2d8Fo+xPataaXjjpmtoK8ke4qidG/kX5LMxwRSxsQCgyVGdpx3HpVYyz8j91Jj32n9aJ74pwjcelUJLkyNlsV7Twiq6zPl6eZyw65ae3Ylulku4fJdEjjZhvbdkkZ6Aetcz4yh2hiBgFFYCumtjEHBYAe+KyvGHlXODFgr5AX8QaFQVJOMepVTGTxLjOpbRnnyDOD6jNWIoNz54A9arxH5CvdGx+FWY5Nveuax267GnF5cMfA59TVO5uQT1qGS54xmqLy5przDlvoiWSXNQGYxsJA20ocg+lRvIFUs7bVFZN1cNdvtXIjH61nWrKCN6NHmYl7evfSEBjszkk9WNMjjA6UqJt4xUqivJnNyd2egrRVkKBTqQUoqCRa+gPgZ/yJN7/ANhF/wD0XHXz/X0B8Df+RKvP+wi//ouOiO5vh/jPPfE3/I16x/1/Tf8AoZrIIrX8Tc+KtY/6/Zv/AEM1kkVZ4dT436jKX60U000SXLC+ksblZo+3Ueorq4tVgvIg0b4Y9VPauIJpokZDlWIPtW1OVnc2hVcU49Dv3kLHrSDmsnTdSju7dVLYlUYIPetASEV9TCpGcVJHycoShLlkW9vyZzWdqCgxHnOKma4O3GaqTPuBBpS1NEzirofZrwn+EnBpC+3irusQAknsaxwzbdrfeXgmvLmuV2PoqL9pBMkeTPeq09ykC5Y89h60y5uRCvHLHoKzdjSPvkOWNcdXEcuiO6lRvq9h0ksl0+W4UdFpyrjoKcqAdqkC1wSk5O7Oq6SshoGKcBTttG32qBXG07ml20oFILiYr3/4G8eCr3/sIv8A+i468CxXv/wP/wCRLvP+wi//AKLjpx3N8P8AGeeeJv8AkatY/wCv6b/0M1kH6Vr+Jv8AkatY/wCv6b/0M1k1Z4dT436jccU3FOP0pppiQhqI1IT2phqkx2GK7xsGRiGHcVrWuuyIAs43D+93rIpK6aOInTfusxq0YVF7yOrj1C2nHyygH0NOZsjgg1yPTpSedMnKysPxrvjmH8yOT+z1f3WbmoReYh6D3rmLhgrFR2/Wp5Lu4YEGVsVTbJOScmubEYqM17qPRwtCVNWbKzR7mLHqaBHUxFGK81u56CkMCCl2Cn4oxUBdjMUtLSd+KBoMUmKXml/CkUhte/fA/wD5Eu8/7CL/APouOvAsV778D/8AkS7z/sIv/wCi46I7nRhvjOO8Q+H9am8S6rNDo+oSRveTMjpauQwLnBBxyKyz4Z1//oB6l/4CSf4UUVocUsNByYh8M6//ANALUv8AwEk/wpp8Ma//ANAPU/8AwEk/woopi+rQGnwx4g/6AWp/+Akn+FM/4RfxD/0AtT/8BJP8KKKLlfVoDD4W8Q/9AHU//AOT/CkPhXxD/wBAHU//AADk/wAKKKpMPq0Bv/CLeIv+gDqn/gHJ/hTT4V8Rf9ADVP8AwDk/woop8zD6tAibwn4j/wChf1X/AMA5P8KiPhLxJ/0L2rf+AUn+FFFS2aRoRG/8Ij4k/wChe1b/AMApP8KP+ER8Sf8AQvat/wCAUn+FFFQaexiH/CI+Jf8AoXtW/wDAKT/Ck/4RHxL/ANC9q3/gFJ/hRRSsV7GIHwh4l/6F7Vf/AACk/wAKQeEfEv8A0L2rf+AUn/xNFFKw/ZRD/hEfEv8A0L2rf+AUn/xNH/CI+Jv+he1b/wAApP8A4miiiw/ZIT/hEfEv/Qvat/4BSf8AxNe2/B3Tr7TPCN3DqFlcWkrX7uEuImjYr5cYzgjpkH8qKKEtTWjBKVz/2Q== - - - Mouse Functional Test - - - - -1 - 6 - T5 - Test2 - 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 - - - Mouse battery record - - - - -1 - 7 - QA - QA - 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 - - - Packaging - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/SW-570/SW-570.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/SW-570/SW-570.xml deleted file mode 100644 index 6ce82ec..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/SW-570/SW-570.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - 1 - SW-570 - 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 - SW-570 GoPoint 2Key mouse BT - 测试备注 - 23.35 - - - 1 - 1 - T1 - Test - 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wP8L4vluR9ElhVAAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - - - PCBA FW Programming with fixture - - - - 2 - 2 - T2 - Test - iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAL53SURBVHhe7P0Fl1TJtoaN3t/yXTlnn61tNO7u7i6NdwONNu7uUkCh5e7u7u7u7orDe+cbK1dWVlHQQPeWZhNjzLHSc2Wu+cSUmBHx/8KX9qV9ae9sXwD5wJadlY0F85bg5o3bSIhPNDz6pX3u7QsgH9C8vXwwesQEDPp+hJKB3w3D3dv38ObNG8MrvrTPtX0B5D2tproGO3fsweDvRyoZZJDhg0Zj3IiJOHXiLF6+fGl49Zf2ObYvgPTTnj17hvvmDzFq+HgjHD2AjMCIQaMwc9x0TB87DXt27sPTp08N7/zSPrf2BZA+LTwsArNnLugFRg8gmos1XABZMHE2Fk2ei3ly3LrxJ3R0dBg+4Uv7nNoXQAwtPi4BWzb9hEEDRvQLB4XPqecHDMeKafOxeuYirJqxEEunzsMPqzegvb3d8Glf2ufS/usBaWhowNEjJ5VlGCiK/y5A+Difp3z/7TCsEkC2zl+BzfOWY+PcZVgxfQE2rNuM7u5uwyd/aZ9D+68F5MWLF7CwtMWY0VN6KT/jjP4AUWB8NwwDv9OOCyfMxO4l67BryVrsWLQaPy1YiWUCzb7d+79ktz6j9l8JSH5+IVas2oBBA0dpYIjS60IY9FjDCIi8jlZjwLdD1ZEyYdg4HF65CYdWbsT+5RuwZ+k6bF+4GvMlJmEK+Ev7PNp/FSDMTj22sscosRq6xdAtg24d9DijFyQDR2LAN0Px7VeDFSS8/d3Xg7FLLMfJtVtxbPUWBcreZT8oSKbI5/v6+Bm+9Uv7I7f/CkBev34N/8BQLFy+HoMHjellMXQ4TCExhUdZFAHm638MVPKtgPHdN0OUrJw6F+fXb8OZH37CiTVbBZJN2Lv0B2yZtwLjR01GaWmp4Qy+tD9q+6wBaWvvREJyOn7adRijJ8wWhecouAaGGtMYOFo9prtPVH5TcAgB4eBzX/39e3z9d4FEhK+jTBk+AZc3/YyLG3bg7A/bcFwgObhio4pLlk6ZhxXL1ig4v7Q/bvusAOnoeoKs8noEZpXjcWQudl+3wcQ5KzFy7AwMIBQq5hC3adBoDBkyTsn38jgB+OYfg5SF0GOM774eoiDgbbpW//jbAIMVGYRvvhqkWRKRyxt/xpVNOxUktCTHVm/GL8vWi6u1CmMGj4Grq7vh7L60P2L7wwPSTCtRWA3HhCKYRxfhXlwZ7kQVYcXOkxg/YylGjJmOwUPGYsiwCRikwBiLoXJ72IjJcpwocAxTcHz1t++VEAxaDlqMr8Ra8D6tBgFRVsQA0jcCzbdiZfZIHHJ9y24FyYUN23Fq7Y8qHqEVWT19AaZPnY3Ori7D2X5pf7T2hwTk+YsXyCyrg3NSkcBQiJvh+bgSkImLvmk455mERVsPYdz0xRghlmPoiEkYNmoKBklvruAQt2ikQENwho2crKwBlV8XQqCAkaNuNf7+1++UKAsiryckhGfA96OweOJM3Ny6B9e27FLWhK4Wg/Zflm/AjwtWYuLw8bhw5aa4Wl9Sv3/E9ocCpK2zGxG5FbgflY/robkKiEv+6bganI2bEfm4FpSJxVsPYsyUBRgxfhaGjZ4qMk3gGKusxzCBZYQ8xnhk5LhZcnsavhE3yRQO421aFFoROfYAQvdqsIKEr/lePnPU0HG4JYDc2LobVzfvEivyM06t+wmHxdXavewHLJs6D6Mmz8Md/0TkVjfCdIjktdzpevYUrd1d6JTjy9evDM98af8p7Q8BSGtHF4Iyy2AWnquAuOiXpqzG3dgS3Ikpwa3IQlz0ScG89Xswa+WPmL9hD5b+dAjLth9Vx0UbdmPp1gNYsH4X5sjz0xau0yASKzJo6PhegOiQmN7WAaG1+UZcLgqfIyADRK6I5bj14x5cF1CuCCTn5f5xsSQHxJL8uHgthg4di8MWvrjgEQeXpFzUd7ahurMJlV21qH9Zh8Y3NahHFSpflqDkWTYqnhWg6VkjXn0J8P/t7T8akKfPniM8pxxmYTm44JuKSwEZKsZ4mFSJ2wLFLbEatwQUMzmaCyx8/EGiWJiECjxIKMf9+HL1ek1KcZ8SX6pu8/XXA9NwwjYA28/fx/JthzB57kp8L4E8odAzVhSjBWHcIfHJt98MVbcHcIxEYhkG5re37cOtn/bhusjlH/firMQlxzbtwj4BZdqUedh95R780rJR2FCF0pZyVHYWo/pZIWpe5aH6dbbgkYEKpKEMKSh+k4z8V4nI6ExCZUfNl5H5f2P7jwUkp7wO98JzxFqkCxxpuBdfhscp1UaFt0irhWV6nSYZ9bDWJbMBNlkGkdu2vJ/J5+o0kddbpdfCKrUaj5MEJAFGiQBzX8Q8phAX3CKx89JDLFy/E6PGz8RXhjhEA2QovmNmi5muASMwTOKcX1Zthtm2X3D754O4tfMwru86jMu7juCc3D728yFce2iNpPxipObnI7usAMX1xahsL0HtsxLUvSxC7et81LzJEUiyUP4mAyWv05D/IgUZ3YmIb45FQlUaKhtbxBV7hs6nLwz/0Jf2r2j/cYB0P30G98QCFWOc8UxUxwdJVbhvsAwWqQSjXomVAEGxJgACgi46IHZZjbDL7hH77CbY52jikNsEp7wWuOS3wlFu28lnWNACxYslEmAeyvF+bDGu+adg/10nLNq0F+OmLlCB/QCOnQwcje++Gy6xzmysEzfKTOC4u/cY7uw/idsHz+Dm4fO4euQCHjt4IjIlD9Ep2UjKzkNWSSGKaktR1VaO+qcVaHxZjobXpah/I6CgEFVv8lD2Khv5zzKQ1p6CmLoEBJZEwzouFHaRGSisbUZ9+xOJXb6A8q9o/1GAVNS3wDw0C+e8U3BB4owb4j7dE1fprrhE98RdskgTa0EhHCIKCAVDI2xF+e0oCoBmOIjyO+RSmhUQfM4IhwihMBXnvGa4FrYpsc+qF+tSriB5lFCKR3I0j8zHKfsQbD5xC/PWbMP0ReskhpmmkgBTZi+H2Z5juLv/FO4fu4h7p67h7rlbML9ni8TiGsRmlyAyMRuJGfnIKCxCYZW4WM1VaOiuRcsLkdc1aHlTJbFIBerelEksUozCJ3lIa85EVGUy/PPj4JYehXsR8TjlHg+HOIGoqQPVrV/Sx//s9h8DSEpRNa74p+GUW7wCRAvCJVYQd+pBYqW4VzViPeokzqhSLpa5PMcAnbEEY41H0vvTktjSahACgcO5QBS+qANuxZ1KXIva4SIAOOe3iPVoNsLhpKRZiQKloBUexR1wKWiBdWoVHsYV47EBlLsReWJVUrH9grhgEvzPXf2TWJd92L1xJ8yPnseDMzfw8LI5zK89hHd4MiKS8hGekIvopDwkpOUjPbcY+aXlKK+TwLytHi1PG9H+sgntbxrR9qYBTa9rUfuyCsWdpUity0VkSTr8s5PglhIHp6QEXPaTzsM3Bee8EhFdWI2iujaVDfvS/jntPwKQ0IwSXJQgnHCc9khUadvbovwE5H4CA+9KZUGuBGWr58/5pIDZrCtBWeq11yhy+4oE8TxeDczEzdAciSeKVczhWqhB4l6iiYdB3AUCWgwFjAEOXVzyCUoLPEs6lNhn1ipAHsaVSLxSrEC5HpiOPTdssWTLfqzfexq3rtzHg0t38djMGuZ37RCemI/QqCxExuUgTkBJTC1AalYxcgrKUVxehaq6OjS0NqKlqxltz1rQ9qIFzS+aUPukDvlNZUgqF7jyshCQkQbPlGS4JCbhZnAKLgekq5T2Oa8k2MXnI62i8Qsk/6T2bwfEP7lABeIn3eJUMH4rssBoOXi8G1uG29FFKpV7J7oYjyRQt6MLld8GpwKxCEViGWgd+oiTxBY2EpQzc3UrLBe3I/JVUO4srpebWBIdkh7pgDstjMBCOBQgBnEvbIVXaacSR3G/CMqD2CLcj5ZzFVBuBmXgwB0nrPn5KM5fe4xH1l4inohNLkR8UgGSU0uQml6KtPQSpElnkJlVity8chSVVKG8shbVdfWoa25EncBS1VyPgppKpBQXISYnD+FZOQil5BbAPyMbd0JScN47SXUGN8PzcFk6CrOQdMQU1fYaY/nSfp/2bwUkJL0Y10NycCMsT1ylMhWE01IQjDuERG5T6FYxW6XHGjYScNuKGINxulSi+E7iUjkXthtdKlOrQVeLgTgDb/OoAmUJHHMalRXxFMXvJQoWcc/EguiQuNGaFLcbQXHIEnfPAAnjkzvhubgurteJOw54YOGOe84hiE0Va5FVgcK8ahQX1KAgr0rulyMjrQTp8lymwJKTXYb8/ArkF1Uir7ACGXklSMwsQEx6PuJzipFcIrCItUmvbUBcSYXEaOliGYtwxj0OVwWSO9Kh3AjJxiVxvaILaw3/7Jf2e7V/GyBJhVUSQxQLFOUKjNty+2ZEAcyiROnkvgZFvSi/KL64SM5iKWgtjCLKr0QUn2AwGGemSqV0CZNYD1u5zZijr1tFS+EkUD1OLFeWwCKxTKxKmxEQHQIKoaAFcSMkIh7yOm95nOIln2WbJjGRAEdIzMWa3A7LwTWvOJjZ+MAzKAkJmRWoKK5HbWkjqovqUZpXg9z0cqQnFSE5vgBJ4iIlJchRLE2iSIJY1ITUQiRnirURcLJKq5FX04j8+hZEZRfL5+eqWMomvRZnJWC/Lq4Wa9DMxJqcEZcrp7rF8A9/ab9H+7cAUi4X+y4LC+PpPgkYzFaJpWCGikDQhaKlIBSm0heQvm4VLQYDc2aprDMkZhCX6rYo7d2oQpWZIhymbhWhoCtln1mHu+E5uBOWrSyFKSAUBYNYFY+iVoGlRR29y+Rxg/A9jySQN4+U7+L3idwKzsAV2wDkiFuVmVODovw6NBaLG1VQj/LsahSkliMzoRipcQVIoSQUIi25BNkZZcjLrUJRcS1KyutRUtmAoqoGFMjxjkeUgoExE6F3EAt43jMBN8UK3xeLyN95UQL4lq5nhn/6S/ut7V8OyLPnL/AoShRIoNDAKIOZxBe0GIwr6EYxtrBnFsoAxofCYepWuQkMBMUipUq5VVf90yTAzYKtgEM4TF0qNwbquY2wy6jBTQm8b4dmKatx1T0cC3/YgTtByb2A8CxpV5bF9DGvUs2a3I3IVYDQotwVt+u2RwxyRenLCxuQlVWNpvwGNOaJRcmqRWVGNUrTKlGSVoHSzCpU5Eo8IlamrrwJ9WIJ6uvaUCtSWd2Mx15ROOUUpQY4HcRScvyGv4PJBUJyR2Isjt8QIMuo3C+j779T+5cD4hwYgwMPvNQAoJW4Qnsf+qn4ghDYCRT2ea3qtn2udvwUOHShAtFq2IqFoPLcDMnCOQ9xf8QNYmqXgbmpS+UmUDBbZSku157r1hg2chKGT5yPEQs246xLeC8g3iWMV+7HFCpQNNdLOgO/ZPgGJKGhuEkgqUFtdh1acxvQQsmpR3OeHAsa0SrPt5e3oKO6De11HWir70C6xCjnbAOx38JfjfYTDl1cxVryNzJVfUEguSdwPEooU9UAcUV1hn/8S/st7V8GSEVFJc6euYRJM5ep9OTj1Bpsv+Wq4hAdBOvMRuNtR2apJPb4GDhMAaHimAqV6JEo/h3p3Y/ZheKkY4Qa36CLxaDc1KVyzKzB6AkzMXjUNIyYtxGzt5/Bw5iCfoHoT2hNrFMqFCQM4u9FibUMysDBa3ZwdApDaEQ2ynLq0FnUgq5ikdJWdFe0obu6HZ0ipRLQ+8dk44JzOLbeccfue14CXREcBYq+omfk7LMacNE7UQ1sWiSVCyyFaOh4Yvj3v7RPbf8SQDIysjF50hyMnzIfe++4qqzVWY8EHLAMMgKhABH3Sr9NOAjJ7wGHLoThsUByV9yfI1aB2HbNAZd9kkWZK1X61r2gFbbJZViw5kcMGjMD87edxMFH3rjgHgsziSkYe/gIAP1Jf6A45TSIoubjvlgSCjNdOy7ZYPchc1y+4gJzcx/cvuaE6w+9cdUxBKfsArH1ui3WXHfAhhtO2HbTWSxDvMq4OQgAzLr1Jyq2ErBt0rXBVgJiKfGXfULRF1frN7Z/KiAlJWU4dPAExk6YjYkzlmD++j1qcO9WRAG2XLZTLpYpIIw/TO8zFnHWrYgA8D5AdDhMAekVlIsC0Z1i6lYfET9mE4xlB25ir7kHjj/2xMK1P2Hg4DEYOGamuIGeKi5R1iCpDNd8k3DeJRJWiSXwLevoV3xE+kLCAF4fM7kvvTqtyR4BYOP+W9hx8iH2XrTD2kO3sfLoHaw6dhcrj5hh0Z7LmLfjPA6KW0U3zU7iJmbcHARiJwGirziLdfSU38jfZ5lcoaYF8Ggh70ks+ZL6/S3tnwJIcXGpgHEco0ZNxrhJ8zBh2iJMmL4Yu2454gpHvUNysPO2Ry8YKKaZK0LBoyMHAw1AfAwcFA762Un84S4BtR6QUxhrPBCXhT364cd+GD19KQYMGoPhYjWGTl2GxXsuwCq5XFytWviUtCnld89vxN2QDJxzDMNl92h4i3vkK8/5FLfCr7S9FyQaKD2wMDX8KL5YvrNQfS9B2XfXDbvvuImF8sUhS3/8fNMJWy5YYpeZC3becsH87eewcNclnHePUzGNNauPJb4wBcNRLJR+VK6i4fexhuyBWB1aRoLZ+fS54cp8aR/bfldA2tracP/eI0wcNx0jR0/F2ElzMW7yPDXFdbjIRTH/V0OylXt1wSfFCIMuTO/yaHSrRDQr0v5OOEwBMYVDF1cqp/jlDtn1RgVinOFe2CbuT4Eatzh02wE/bdiOcUt3YMzagzhqFYA7oVl4EJUHq4RiuGbXCgRt8BMgbMRtuSKAHH3oBdesavhKDOEpQbZ6XkDRYekBxQBJcZsoOEtVivAwlrAU4YRtMM66RuOMcyT23HVXcND1O+cWgz0Se8wTSFYfvYsrvinq9bQKViIaIITDRLIbekb8JaZi2pdulk1qFfyyKgxX6Ev72Pa7AJKbk4eTJ85i7KhJGDZkHEaOmopRYwWKEZMw8Htt0bV563Yaa6cuc0agxCF9AXEwZLBMAeFAoKM8/i5A3mU9dCEQzFY9Ygm7KI2nuF16ME6F4uAeg2kLWy9k3b+NSLObeHjZDPc8JIiPzMUl1yg8lKDaLrEIXnl1CChpgUdWFe4GJOGkhRcc5PGA4ma4ZYoiytFfgSJWR0DpC4m7xDCEhNaEwpH4E3bBmiURS3bCPgynHMMVIBRaFUKyW2C57JOkIGHRpG1a9duAGMTDMNrPI+e5EJCHYnnqvgTsn9Q+GZDnz5/D18cf69dtxpCBo9QCa0PETeFSOlxWh8vpcHUQLpnDWXkbjt/SCgvFvboVnocboblvAcKg3BhzUAxAOPFxsSQfYz0Yf5iOjlMYoN8IylDuiA6Jm7hhd8JzFCTetk6oD/NBW0qEOsZ7e8MlPg/nbANw1TUc1tHZcEoqgl9eDQLya2EZloYLtn6wicpCYHETXNLK4FvQIJC0GkDpsSY6JC55TbBQkJTgsarpEnfL3E3FQ+c94pRFOesSpQDh8acrtpi77SwueiUoIVQExUFcx75wUFwkHqEFUb+tQICUgJ3jO+4C9Zf28e2jAamrq8NtM3NMmjDduMiaLvria1z9Q5/TrctBCz9xr3JwTcC4Ey1uSkDGW4BQOJejLyAUlq/TmvQHx7usB2MPZ1FIU1AsRWEueiWq0XMqkY8E4c459bgTliUxRjqS7WzwrDQdL2ty8bI6By05CYjLzMMttzCcNbPCPd8Y2EdnwjUhD0G5VbAJT8UN52Dc94tFUJEoqQDkY7A074LEQWIbi8RSZU0o98SVOy7uFqHgvHUeT4vbxeMppwhsOm+BVUfuqMTCJQWJ5qI5idvoLFD0FZbE6OUw9vIaG7E4VqmVKG3pNFzFL+1D2wcBwlRhXFwCdv28T61T23e5TrUyIdeufQccnJ560jlKWQ8OEHLU/JxH4ltwEApmtnhUlsQAB4VxCGcEms7v+DVAmLmiq8H4gwODmtUQdyuuGBck+LWRQJyAUJjevS+ulJVXOBqjAxQgr+ry8ao+H6/rC1BcmIOg2BS4PHwMe1tn2AbFwS4kAe7xWbAOisdtlyDcdApAYEEt7ONy4ZUjVoaQlPQO4gmIV0m7GnUnJErEbboTno0zAgNdKd16nHKMULdP2IdizXFznJb71wLScNk7SVkS/g6XXGaxBAwR3tbvq5oxAim/zVIAIZTOX6zIR7f3AvLq1Ss8uP8Ic2cvUgDoqw7qQouhFnKmKyVw6KsT9gcIBwcJB8dAWHfFOIR1V/0BwliEt1mEqANCcRQrwnnmOiQfAgithocopL24GQ4iVE5vkdvBGbjsFQfL+CKJFxiAt8IiOhdWMbmI8/RU1oOAvDYAUlOUgbSURMSmpKMpMw6VyTHwdXWHlZsfrH3DYeETjjsugbhu74vA/BpYRaSLJalVkPCzeyyJNm7CEXcb6dV1SGhJaMUuesYrKJQVEWBoQXj7iHUg1hy9o1K+dLU4FZgZKn6GDkZfYWdASBj7WAmQdgJJQeOXnbA+pv2qBWlqasaunfsUBBQCoUOhL8/JOINL4qiF1foB5B8inCVIC8JptJzbwVVJaEn6AuJc0IH78WXqNt0qU0AIhU1GPSxSqhUkHwoIFYX1U7aiTDYp5fAWhfEsaMYVjxjc8I2HZUyeKHIzfHJrYB2VCZfQBHRkxylAOipykJqcgLriTLxuLERXdS5S01LRXZmFxsoiNKdGItLJHmFurvB088YtGw/cdw+BX1YZLIIT4V/YoEHCwN1gRXRI7DOqYacsibxWREEisZAeg1CO24XgjOH+L/e9cFLusx7rrGsMzEKyFCSm1sNUCKHu1jEVzBJ9p6wafBk6/PD2wTFISEgYpk2ZbQBFg0QDhVsBaLAoYLjyRx9gvhVLc9Q+XMHBAkUu8maRWoNrwVlqnMMUEMrd6GJtTETcKs71MAWEYHB67V3xwVn2/T5APAUMwqGElqO4DbZJpbBJKIZvUTOcU8tw0TEY9wITYReTjZDiergl5sE9MQdZ4cEozEpGTloiXtKKNBQqQN40FuGpQJKTHI8ntQJMY6l6vCEjFsX+7vC/cgoXftoMe2s7uPqHw1IgCRT4NFdLg0QHhOdkxSBaILFKKpP4qEy5TSyWvGiIRZT1MKR+GcDvuOGoxjdYnMjHOLZCC8Qq415wGMTTMPpPV4s1aYxbsuq/bBX3oe2jgvSnT5/h1s07GPj9cM1yGKxIX/lWZIDEJgMHjcbgoeMxZMQk7L3noSwHZwxSHiVXqXWtHsqxLyAM1DmRipOiOMfc1NXSIeF0Wk6rdZHn+Fi/gKhsjrgZyq1q0wb9isVNi8uHrUiA9O73/eNx0zUE1mFJcJN4IiS3HF4JmfAKjkJzYZqAUWCQHkDeNBWhsyQd5RkJaK3MR01yKMxOHcSCaZOxeMQgXNi0Dm7Xb8EnIlGsSTCcEws0SErfdrUYVFuLVaN1IyS0ItfFfbrkHmOEhOMkR22C1G0G77QiXJGF8QpdMmbDHMU6EAYdDFPh7+d30dVi0O6QWf1liu4Hto8CRG+2tg4YNXqyWheKS98wxuB6UVxxUC3uLNaDj3HlQa5cOFgA2Xz2PsyixLWKLlLl7bejiiR4rFXjIazi1eHQhY9z5US6WXSpmMHSAaFw3sfNsFyJZVJVWTvnlpuWluhzydlLEwwf6cF9GTRzrKKgHtaRGXCOz4FfZikuWrjCLjgOLhFJ8EvMRFBKNgLjUtGaFdcvHJRXEpfkBHni6vnT+G7CZPzvsNH4m/z2iZMW4c4NK6RGZyMyLBleYo2u2PkioKDOAImW2dLGSLSe3TpZrEh6lToyYH8cX4zTDqG4FZhmhOS4bQhOOoSp28dsg1XsYS6WlvHIDQncmTr2FAvpKcF5X0Dc8puMQDrKfZe8RqRWNRuu5pf2vvZJgLA1NzfjzLnLap2oQcMmikwwkYkYPFxEwBgycgqGjp6KZT+fVDVYXImEc8sJCxd/MxNrwmV9mLUyHQPhfBAG9lwtkVaEKyWaAkJxZC/KlVBcYmCRXKkmELlwRRIDHIw76FYRDj8FRxMCixoRXFQP/yzptUMS4ZOcC8eQOFx+YA/v6CT4RCUIHMmISM1AWWJkv4B0l6bB6vIpDJsyFRNX/ID/HT0T345agIGjl+C7scsxaenPsHENR1l+JSKScnBPYhKLgDhx4RqNkHAgUbckLhJD0HrYZ9YoN8tSXKa7ETkqq3XdL9kIySELP+Vm8fY132Q1W/KSd5J6jOsV26ZVqs8jKL0gESBMXS0HFY/U4OWXpU1/tX0yIHqrrqnF2fNXMWr8LAwfO0MtGt1bZmPEhNmYseJHXA7MUFaBcltiCJa6cyE4gsNlfXpV74rcFZi4QPVjccPokjF47wuJXVYDzgtI+x/54bp8vmVKFRyzGzTrUawBQrfKzwSO0MJahBdWw1tcKafgWPjEJOPGQzu4+IciKEZihug4RCWloDCegPSGoyw+EKuXzMefR0/A/wj8I1ftxj9mb8VXU9bhqxmb8dXiXzBlrxm+W3cc9kHJqK9rgldsOs7etUVIQY18fwOCBNYAWhIBhJBQaW1SKpTQkhCWBzEFuB2SqWC44p2I826xKlg/ZOGvHmPKl4OOt0JzccUvBefdY/FY4he3gmYFAn+7G8eATMRb/hNfeY4pYA6WJla3Gq7il/au9psB0VtZWQX27D+GkQLDqEnzMHrKAoyZtghjpy/GuJlLMXHeahy2CVZwmIvFoNXgPHTGIBw4pFVhNS9FB8RJgvSznokqmGdgzq0OuB5WX0isJOA/6x6P3Xc8cNQ6CFyWxy5NAKD1IBwSkAcIHBz9DjHAEVlQgcicYriGRMMjJAqO3oGwfPAYobEJCI+NF4lDYVy4gkMHJNXPARNHDMFfBw3BPwZPwrdT1uLbWZvxtxkb8e2qoxj843WMvOmHiQ9CsdYjBTtcxEWTXjo1pwBXH9jBOTIFYUW1CCqs7wUJxYWxiLhYDmJFGJPQ1boqVsKcWS2xEJcl1jhvcK+O24UqSPgcY7BzbnE46xKNawIK4SIgylqIBXUXEEyFgFC0tcEa8eTFlxXl39d+N0D0lpObj6OnLmD8jMUaIDOWCCDLMH72cqw7ekNZC3OxBEoEkh4rkq9uc/1dU0h4+7BNGG5I0E6LwuCdQKk0r8QcunAmHUfIWeT383UHmIdnwza5VGWr/IvEekhAHlxQC7/0IkTklyM6vwyx+SXwi4yDZ3A4vAJDkejuhKjwMETGiQWJjUVhdLARjtqkYGydNAKrZk6Dk4UTRk9egb+OW4E/rzmLb1YexsgzAo9XDobdDcJ031wcyG7EwYgS1Bdmoy4jHi7uPnjs6IXIomoE5VUhpETOiW6fARIfUWZaEE604qAeq4lvSAzCgJ3z2wnEJXG1CMKBRz7qSNeLRZeXuZCcu/bc3bAc5VbpIHAQ1IMrsoiLRSviJdZDPS7iWtiK6MovVuR97XcHRG9t7eLe+AXh8KmLmL1kPcbPWo45P+zGMQk0ueYVlxQ115cVlftcHZHBOyEhRFwqVEEiFoLP7Xvkj6ucSxKej2uBmWqtK8YbKjDnrDq58JyUxHkb+83dcPC0Ge4Hp6qF1QLy6xBcWIfQgmoEZxXDLykLMXkliM8rQlhiisARAi//QCT6eqBEAu+o0GDExMWiKjFMwfGqLg9Rlw/Ddu8mFGXkoSCzDP5+sfhuyR78edlBjDp4HysdYrAmtADrxFXcLdbgVmoBSpJigPxEvMyJQ5CPH0IsLRCeXYywvAplyYIJiarbaleQOGXVKUhoRXjkQhLMUt0KSscVsSaE5KK4UixoZJn8KfkvnQQmu8wGHLEKUoOJLEV5FFtkBESHhNZEh4T3+TirDBwlgG998qUc/l3tnwaIaeOIvJdvEM5evYNdVyzU8j4EhAtS30sQRRBI6GqpLQ1EONpO0SFxFmtBy7Hb3AuXpLe8GZKt4o2bQRJDZNerC+8lwsG/++GZuO0vget9Z3jfewjLoEQ4xmYjKKcC4RI0R4n1CEzKRGhyBhJzCxCfmQU3L194uLogMdAbbQkhyPV3Q3xMJJ4UpypAXlZno+DhJXQVpqCrqQ5NtU2or2pCVm45frhsj9lXnHFIzvt+ZjU8UnJQkBCF19mxACUzWklqgC8qbR8gICYJ0YWVCMwqRWgx4xFx/wyZLc/CZi0WSeUMx1o8iitStVkn7ELUbbpQdLcuiBy29FeDiA8kOOcSRvvMPXHcPgwnHcJVVstZ/hdTSHShm+VR2GK8zzq1kNIvGa13tX8JIKatqK5Vgs4EZUXuJ1YaRIOE7hXBoAVh5S9v6+4W17266J2MnWZuoiQxyv3gNFizwFTYJpXAp7AJfoWN8M4VxQpNwcPABFg9skWglbUEy7Fwl0A5NLNQLEcpYrILEBCdgNj0TCRl54j744kYD0dkxYbhSV4CakPcUZUWI3CIeyWBOd0slp68aS7G65YKvGxvwPPOdjztfoKnT54huaQK3uHRqE6IwJvcOCBLLEdGFJAaIRKupDTUH09CPRHn74e4AokTErMQXlRnyGxprhYzWxw05JiIU3adiicICIXuFQcQr4vyc1zkrFOkGlk3E+vCmYZ0t/Y/9FUu5jn5f+5F5hkthanwMS1gZxZNy2o5CjRV7V/K4ftr/3JAOp69RHhGkXKXCAbX3aUQFMYlTP0qOMLz1PwRbfWTWhVz2GbUqRl2u82ccULciZu+ibgblCKuVAqsIzPhm12JoIIaNbZhE5IAa/9oZLo5INPLVQXjbkFRiEzPQYJYjghxrUJj4pCUkQkXVzeUB3uiIj0ar2pz0ZERqdwqPXP1pqlYwaHdLgLkPppK5HaZvKYMr8qzhPxkIC9e4BCLkR4JpAgYyWEioXiSGokXAssbsSSFAmKCxD6uYXHK1QorrhdXq8eKuObUK0BYO8ZSFLpYBGS/wGCZJDGbxBhcwZGQcMLVabEajpl1EuBXYOdNF2y5aKUyXZe9E5U16gsIhXGIacBOV8szv+FLCUo/7V8OCFt1+1M4RKSrsRDu/cGaLIoGCvcAqcFlLkQtbpU6CihcBI5TaDlZ6LJHLH4xc8Sp23a46REJM/dwWIUmw84wMBeeW4YAcXWcQ2Lg4emHOn9XZPi4w1NioriwUGU5EjKyEBIVhfDoaPg62qFNlLm7PEOldVnB2wOHCOEwBaShABCAIK4XKjKBklQVayiXSlkOgSNF4OAxLQKvMgQaPpefgKYAVyRm5cArPA6eYtX6WhG6ikz1UjjKzkwWU7jMzt0Uq8k57bQOBOC0uFO0JIxdGNgz9bt03zX8fFM6ELtQiV0y1CChKRy6uIs7StdUv89pAVnVX1ytvu3fAsjTF69Q1dyJu+IeafFHNR4ZhJBwzIOQcAyEloYrv18SReECBk7imztlVOGmTxzO3rWDx+17eODgDXPXIFj5hsMtPAFekYkIScpAQGwSvEIjEe/ugsZgDyQG+SFb4oz06HCxHBmIiIxAfJAvamMDtMpdDgrqaV0dDqP10ACBgKMAqTUAIlBBYhUFiATjyoIQEgrjD4JBy1KYJCCl4YmAmBIfJy5eIpyCohFZVNM7FpFgnUE6K485gMhAnYBwZZW9d91VCpj1V0zxMmg/K1DogBCmnbecsfKQmbzWQ6WF70W8x9XiCLvhObpc9mmVePbipeEqfWls/xZA2Oo6nqGmqV350FyLl6u2P0qpUQOGhISpX26Sc8E7BVcC0uWYqAJUs+B0NS/cPbMSlqGpuP3YCQn37yJIYg0rB3dYWDuqlG1AZCyCRALCI+Hr7o5SPxe0pkUiJdgPrYmhyEyIQU1yBJ6WpuG1Dkc/JSVG6yECU0DkPajJASrFvZLPQFEKUCCQSAyjgOCR0ND1EjAUSFXZeFGYLNyEIyQ2EfZ+YYgqrDa4WU0CiJbRcuVIt0DCkhCOqutxCKfg0no8iC5QRY0MxhnA3w3NhkN6jXK/+B+tPHQLG88+xqHHfgoaG3G/+gJCoQVhCli/zynIEeKifmk97d8GCFt5Szdqm9pwOyRLQUE4HgsYlAdJlWp7NRYuMjhnrv+yTyJO2gTgmmMQHgoczgl5cE/IgY1nMIJtbZHnYIVEVydEONgiytkebo4Ci58f3Fxd4H/zIhqixd3KiMFLUVTOGtTmewgYlPdZD0pLCWCEpNDEzTJAQgAICmGg8DYfowtGSyOxDVgVLFBlR4UiLCwMtt7BAkhlHzerXZS2Wa2oQgvCbBThoBWhVbgi/8ENiUEs4kvwUCzJVZ8kVXbCyV+XDHNJmO5d8PMFbL/uoNwujqWYgmAqpgE7hdNz69q+7Fylt38rIK9ev0FFyxPUt3TAXHo/pnoZpOvC+EStnVXYrgBh73jVOx53HAPgYesIK7dAWHiFwi0iCR7h8XBwdMHZgwewaOkyfDdpOv40bCz+NmoSxs1ajGGDR2HbrGmoVO5UnoJDny3469ZD4DAFRAXpBksin6HcLVoTwkIYeOR9QkGI+DpCReDkmBUfhdQAH1i7+iAyvxwRRbUaIIZFH1hcyepczvOg8uqAHHzkJ+KjxnosE0qVMM17Nywb5uKKHTdU/FK2XrLGkr1XVfqX7ydMpmDo4i0BuunAIstRXNPKvyw4Z2j/VkDYVDzS9hStnU9wPyxLQaLvXksXS49JWFLB5TtP2AbhklsUzNzCEObsglRnO9ieO4Vf1q7EmiWLMWPhKvxl5Gz8ecpq/GX2Fvx52gb8eYYc5+zAN0v34eANK2SlJilIlGul5np8gPXQhZCYwkLFpxCCvsLH+Rr9Pa2l6vPSEuNQ6mEPG2cPhOeUGgEJKKabpcUhnCdPC0Kl5fgHAeEUXLpOLGCkm0Urcj8iB1bihtGKcAG8/Q+9FSCcjbhk31WsOXoXxyTAZz0XP1MHwVQICIN2/T7nlsSJ6/el/QcAwtb1nJA8QVNrh7qQhELbwbYB1iIPuF9IQrmqH2JwetzSD6esfHDDJRiWF87h9rqFsDp9GmFe4Vi9+mcMGL0Yfx+7DP87Yyv+PHcHBu4ww/BL7hiw5y7G3PDDvAv2qC7JwWvp+V8TFIMVeZf16AWIQdGNkJiKsix9HtNfb5D2snQUxoah2tMBju6+CM0qFhdLA8Sf9WIGQBhA6xkojn+oQF0swfIDN1TcdtkrHvfDs2EVXwSrhBJclue48APX1tLL4vfccVPLBv142UZVBtPS6KUmpsJAneMvPoZiRgpTxOy0/tvbfwQgbCyaKxd3q6S6QS5whJq3Tjj0rZ0Jyb1YLjbdouY+nLT2x5EblrA+fQzeZjeQFJmO9LhcpMbm4MCpe/ifKT/gT0sPYuDOW5hw3hGTvLIw2T8P08NKsF0sklN8Ol6LO/S6JtcAST7eiJulDQ6aWA/dvTKFw1RMnzOVvq8TedNSjPLkCLTGB6M+0A0e/iEIyihCmMQgwcViLdSSQRogntyHxDDizcpewnHJIxZL9lxW80S4Qr51tFiP6FxYyPGyWyROOYSrCVWcdXhO3FFCsvrYHczfcR77uaI+57GLS6ZDYCr8LmbO9Psqu5XzxYr8xwDC9uLVG5Q1dyM5vwL7HweoyVVc8V2Xh4kVuB6cqZbh5BgBXa2zNy2Q/ugmCkMCUSy9cUVRDapK6xAQmYF5h+5g7PHHWO+Tjn2x5TjMcQVRwoCMXHQWpOC1BNGvJcBm4PymVgARS6IgMbUgH6D4HyL8nJbcOLSnRiiL1RjmDd+IWPinFyKkoBaBRRJv5NcbAWElshdL9UVZmcniSPplj2gs3X0RN8TFuuoUDIvAeNiGp+LmI0fc8YyAvYs37Jy9cPexAy48cMZ5xxA1aLhg50Us/+WaBOzh4q4lq8phHQRTISCm4yacfJVe2WS4Ov+d7T8KEL3VtD+FV0Iudt/zwZWATNhmN6uV362zuCFOtZpFeNU/VWVcbBJLcPquPXwe3UdnYRo6qyvQ2diMrvYudIuLEFVYBcekArUYQ0xkLBoTwvA6LwGvC5LwulggEZeHkLwRS/KGVkSU91kJp9oKKH2txycC8lqAe1aRjmelaQo6PtYY7oPAhHQBpAgB+TXwF3C98giIVrjIHlwfo7AX9+eyZyyuCiAr9lxUqzzesPGAo08w0jyckOTtgci4JHSmRaIzPQpdmTHozolHixwjw0Kx/dQd5WptvWiJG2JFCIn+2X2F5S2mGS+3vEbUtXcbrsx/X/uPBIStW+ISl7g87LjtKdYkELbclk3EJrtJLf1jFp6PM64xuB6Qrno+q5g8WNi7oyIhAi8KkvGyKB0vS7LwqigT3anReJkSjlfsvdMj8TojGq9zYvE6PxGvS1LwpjwTb1hrJa7WG4lFWJz4gtD0heMTAaGozzK5Xx3kruIPn7RC+OVWi3tVD08BhOUmOiD6SLdLdh2u+yTgbmASzJwD1ezEYEcH1AS4oszfFZEpGagX1607Nx5P8hLxND8JT6UDUFKYjFaB5b75IyzYdhpnncJx0j70rYpfXWi1aLFYiqLHJF75jf+1C2D/xwLCxlSjY0wOdtzxxI/XndXoOldB4Rx2rnpCl+tORJ4WlIrPbR4q1ia+AL4xqciIi0Ndcgw6UgSOxBC8jA/CKzm+ThYLkiagZAoktCRiRd6Iq/VGoHgjQTsBMcYhfeHoo+S/RUpFscMLa+CZWggfAYTulQJE4OAsQyomIXEXl8cluxY3fRNwycYHd+9ZIS8uRlUGlAkgKckJqIwPVVbveVkGXlRkimQpwHn7ufy256XpcsxEcpg/9l+1UIs+sJbrXa4WV2a0TipX2S3GJjwP/8LG/8pR9v9oQNiey0V5GJqBLdccsfb0Y+Oi1wSF27VxOi6n3aqtDB754PADT5yw9MMVpxAEe/mhJtQH3WEeeBkXiNcJwQZAxIpkaRbkTUkq3ogiaRbEEKirGOQd2avfQThQmeEtgBTXwS0pH14SDHvl1sGDq8Qb4OiRDrjl1iv36q61G3ISE1EX6o2CQA+kEY4IXwWCvhJkz7iOiNzmY3zuBUfxRapzEnHWxl+tYH/dL6XXIKGpcICSmSxWFXNOO18XVNggceJ/1wzE/3hA2Dq6nsAsMB0bLtlj4xUHnHSOMS4VRFC4nZtTfiuc8prVmMFRCz+ctPLDidt2SLG3xCuCkSTWI0XgoIuVFaNZjyKxHtLrvhHFeVMrMYjRegggfeHoB5BucWc6pPduFuD6PvdOkc8p93VEZkQ4ggtq4BKfC8/sanjk1BoBMYXEhyPr4uLc8IqFu4MLssQypgb7CRyJqAr1UtaBIJhm32CInVSSQR7j+A4HRbX1hnORnJaGwzdtVJmKRXxxLzBMhYAw/ctaL1oTDiIGF9b/V0HyhwCEraapTZWcbLziiF0PA7Dnvq9xPxFu18ZxE+4l4lLUobJcapkcUYDLrhEIsbLAS1qOLMYecRKgS+yhu1Y6HEYle4f1oJgoekt2LJ5E+EE0VgX4ps+9U+QzKgJdUOfnjOT4RHgmZsMzrQSeWVVwz6ruFYPoSkr3xlvcHDOfOLi7eCIgNArx0VGoFRfrmQCukgmGc+7vPHlf/R55DVPZnNdSWVWGzNhQ7DNzUvNI3jW5isKFIFj2wtcYy1Kyq/D85X8HJH8YQNhyK+px1DEKP5l54KB9NLbf9lDbSOuQMBXMI2cgct0slqdw3w1WtTo8tkYXLYghc/VG/PQ3TO8yMO8FB3thE2UzFVPFo7C3FgVVx77P9RF+dpmPPer8ndEoAXpYfBq8wmLhnVEqgFTCNaNS4hCOg+iA6FkszldvU4DctPNEaEgoagPd8IRZOGbdOLjJ7+/v/HSR5/gaZUkkzqqvLEZXTQGsrGxx8IGX2ixITyn3FT7OsRMCwpiFaWA+5pRQgCfPXxiuzOfb/lCAsIVnleJnc28ccozGIadYgcVdVfsSDB0S3f2i3Ikqwr6HfjjjGovb1u4oi/LX4g0G5GpwUOAwgqHB8XsH5y/k+wqcHqJegmrCQfFOyIaXl78CxCuzAi6pZfApaNTGQUwyWQSES5ZecQ7FvQfWqJbgvlus4EuBW3Ot5NxNEwr9fL8SeU63Is/EzaqqKEFHSTq2Hr+JM07hKr37LkgIBauICQjjEQbxDN4fhWeioe3z3lLhDwcIM1s2YWnYcdcLp7zTcFAg2XrTDSeco+DAraMLOmCT1bPXIYWj8L9YBOKkS6wqufD08EZLbkKPcv0aHJT+lO4DpDUnFoWOD41gUKrD/OAhgIR4uMM3o0QAKYdzSrGaMsxSE1oRtUOVWA6CwvvnbXyRbPcYrbEBeC4W0Lj6vMnA5nvPVR7naxi8MxYpKy/Fc3Ev79x9hA2n7uFGQKqyEqaTqEyFbpZaZiiXkDSpNDBhuegRg/SSz3fE/Q8HCNuTp89w2jYIR13icMQlHoed47H5hisOWAWqLRUYuHNw0RSSR0lV2G8VjOPO0TjtkYAz9qGwd/dDSkQw2gqTNUX7LdZDXkdFZTD8tDwD9Zkx8Hd1weYT5nhw/pKyHg2BGiCl0WFwi01HsqcL/AQQ78wyOCUVIkAA0VY50ayINzcINQByzTUUpV6OahCQgTkzYXSXVNbKGKC//3z5vO5mlVWUqdRvjL8nFu2+hJ+v26kCSAbkmuV6GxKOj9DdYixCISQcgzrhEA6PeAH2M1yp8Q8JCFtVXSO2XLbBad8MBchhlwRsuu6CvQ99FRy0JkwD64Bw4QeOmxy2DcNxp2icEUhOu8v77MJVhezeCw9w4Owd2HuH4LGtCx5Z2sPWzhlOzh5w8/SDk7t8rqsP7lq7wMzWA9dtPHHJ0h2nH4r1euCG4+bO2H3VGisOmmHNWUusu+mOZZecRFyx4rIrYq0fGyBxQ15sNBwCIlAW7AN/AcRHxCk+D0GGOSHa/PS2XoBcdQ1DqY+jGgjkmAfHOVRqV4B8y4r0AweF8NNq0vIwDmkty0VFcjhWHLiOxXsu44JbNGxTOB++ul9ACA4B4drBChIBhMLaOG5Zfcs7Fi2fWYHjHxYQttC4NBxyiFSxyAmvVBxxTcQmsSSExCanWQGib6+g1tgSMY8pwQkB5JgE+woSj3jsue+D9aLUc3Zdw7ozFthxyw2zdl7Bgl/MsOLEI/xiE459ViHY+cAfa+V126474rhrPH6xDsXOhwHY8cAPOx/5Y6vERotP22LRaXusvumF1bd9sfSyG9YIKGGPHqDO11lBkh4XB2+/QFQGeyMwswR+6cVwistGsADCqbfKioh7pQNCuSQxSEWgK57kGwDh2MdbbtavWDwTK/esKgelZaV4UpaBNfuvqB2stlywUG4UF42g+9QfJIxTWF1MkDRINLkZlI5dt11x0j4EuZX1hiv0z210t7u6utDe3o6Ojg48E8/i957H8ocGhO2eWxBOeKYoOE6JNVGQiCU5YBWkRtwZjzB41wHhQnQ3QnNUPHLUIQJnPMXdEki2XrHH8iPmmLHtosp8zdtzA3NFFh82x8arziopsN3cB5uvueCgmSMO2keKixeL3RZB2PHQHz8/DsR2AeWH295YcNoJK2/6YI1AcubSfSQ/Nke1lwNqCYi/CxJiExDm64PqYE8EZZWoeiynmCyEFDeoFU4CS7UFHLgXuw7IRZdwFAtcGiCpvwkQPd1bXF6O52KJ9l15hPWnH+KHUw9w2iFMuVKcYPUuV4vwcLVHxiWMR3if4yRc0I6VxIetA+GfLOf1O7pcL168RHp6ptrxbPtPuzB75gKMGj5ebQnIDWR55GayI4aOwZRJM7FowTLs3XMAzk6uaGr89ILLPzwgT58+xUVxDfbbR+G0X5a4XJk4JC7X6jOWOOOeADsWOmb2LGVKQDhWwoUgTrnG4phAwn3bj9qGihWxwMwdl/GDWBFaktk7r2LhgdtYcvieABGlxl9+vOWByzb+arHsk57J2Gcbjl2WwdhhQQnCVjluumCLW+dvIeHeLVS62qDawx613o6o93NBQ4AbImMSkOjtjoYgD7XSY0B6IVxis9TiDWq1ReVmtcK7sNkIyFWvOOT8CiDvhYNiBISBeo6KQ55U5eLMQxel2HQ1N5+3UGlfulFcK7g/QCgcQKQlYWaLgTuFwHBL621X7eX/DMZ9/wS0dT01XKmPb1VVNbCxtsf2bbsxdvRkDB00GsOHjO1Xhg0eY9xteeCAEeAuy/qmst99MxhLFq2Aq4ub4ZM/vP3hAWFLKqwSy5EgblYazgXk4JRPBvZYh2PxwTswiyhQ03dZ6KjgEOHi13bZjWp7BW6dwA1Gz4sVoZIskffM2nEJm85ZqPfP23sT8/fdwrY73jggkGy54Savc4ZrRCpOeiXjqFuCfFco9ggwdx45Iej+PRTYPECZkyUq3e1Q6WGnrAfdKz1IDxFAMr208ZCQtDwEpEngG5elFm/gxClthRMC0mQE5GZACtL8XFUB4luAMEj/lfhDiQKk2ABILjoq81BZWYZD1y1VAePWSzYCiCUOPvQ27nRlOtOwr9yPzldzVTj1QIEiQutDa8T/8pRTJM47h6OoptFwpX69dXTKtbFzwtrVGzFk0Cil+P0BYSp8DeGh0JIMEkAGDtAA4YZO3O2M+2dyO8DIyCjDN31Y+ywAefHyFS75p0ssEofzQXk4J3LcMxU/XHbED+estXW3UqolFtE24dHlXmyJ2kz0lAByzj1WKcm6048wfdsFrD9xD0sOmau4hO7W6tOWOOIch213vbHhihNyCkpVJszJ2Rexlg9R7G6LanGf6kM80BTho0m4N5rCREI90cTHgz3EarghIDoexf6uaA73QURSBvxTcgWQTOPiDdpCcq3wKtAA4VjIzYA0JPl7qOrct2KQjwHEJNXLQD+vrBwX79mKW+mrFnvYcsFKdQ5cD5gVv9ynpD84KBxV59pbXDWFKWKCwiPX71q2/7pYE1e19zv3gA/LKH5vfNDU3IILF69h2BDNEvQHgi5Ga2FwrwZ9P0JtB6jtskwQevbJ/Ptfv8Pf/vIt/vG3AUrMzO4avvHD2mcBCFtgdgX22UTgXGAOLoYUyDEXBxxjseTIfRy15wzFMlUqbwqIa2E7bgRn4kZgOs46R+Kiewx233JSbtaaQ7cwZ8dFrD1yG/uOXcPNq3fh7+yOKGcnpLo6IMPdGdHunqgxuE0NHOMQAHRpCiEUJiKQEIgqCbSDYuLRXZmJjqQwhETEqMW0XWPS1NRbzc3SAnVvAUTfaIdL/CT4e/YGRNwkBtwfNJpO6QuIfEZRSQlsXXzUTEQuE8R57YRk/z1PNeedsYZ9ev9ZLQoD9Zvy/zHdSzi4VjIXnGCd1/yfL6iZjFx4+5htCKxDU9ElgbRpe/XqNSytHTBEwOD+l++zGIMEBkLw1T++V8quK/9f//IN/vrnHuFjfYWvnT9vsQroP6Z9NoDUtnbikATODNgvhRbioghjkq1mnlh5ygLXg7NxN7ZUxR8aINq2CVapmi99wz9ZzVA8aeGNtQLHpbPXEfD4kbg1PsYBPl0KfdyQ4O6ups1qj+lQiIR6CQjeaIn0Q2tMgFoMm5OY6BpxnkldUgjComOVwnakRiA0IBC+CRlwiUxWizcY4xATQJSLJb1yjI+7wcXSAclV7pIWoH8kIGJ9WApflx4L20DDNm+i1IctA7D9moOyIlz72CqxTK2t9a6qXwqLGu9G5KoYhOMoFJbL77zlgrnbzqpNSNkJMYi/5hGNyoYWdc1oNVat2YR//H2Acof6izEIzPfiMv1DLMTfvhqMvwoYSulF4b//fjimTJmF5cvWYN3aTVi9aj3WrF6P9T9sxqaNP2Lrlu3Yt/eg2lczJSX1k5IGnw0gbPSbr3nF43JYIa6EFytIjnukYNmJx9hm5o4boVwMW7MibgZAuFga9xK5H56F654xuOwYjACxFPWi+ElOtsgM8JPbumVwR6mvGxIFDoLRGheIJ7kJxl6dCvfWAF4fxa1LCkV8Qpy6TXDCvTzgG5cGp7AERBTWGBeRYyaLMYhvCcs/OpTLE+rRJwbpBcivwEHpD5AYP4Sk5Bm3muYUXWbxtl60VvPeWYLC1R0Za/QHhy7cl8RSYCIktCBcL/iOPEbQOJuRq86bGXbMOmUfgoCYVEybNk9ZAu6KTJeJ7hWBoNvEffi5g/JX343AVwNH46vvR2HgsPH4+edf4OLqgdKyCrVrwD+7fVaARIlyuSQW4VJAJq5FlipIGJP8JAH2ilOWOO0aB7PIIgWIgqOIe2a0wSapFI8jBZLAJNxwDYWrowAgQGR5OKAsyBuFgRJPiJtUJa5Uoru4U3K7OzvOoJxamYqC4Nd6cJHahGCkJser2xwVjxF3zSc2FY6h8QgvqNICdUMmi4ConXkNFsRX3DuVxSruB5AP+O63ACnTACnKSldr/XLdMa6ewlXj99x1V8ptLjGIfVq1epxBeH9wUBjM0x1jdovLoBIU+/Qatfj2qsNmWLjroioavR2ajcteCRg9dbFyjWgN6DapjJOAomIHbh8+YCS+HjoR3wybhOkLVsPeyQOdXf/6qb+fFSCVzR0wi8hHaEYprkeVKkiuRpaI25WK5SctsPmaMy74pKjNQvWNd7hYtEduPSwiM9XOt3c9wmFtq63lm+dhj5ogT2QH+SuLkuLlifpQb2UtVGrVpJbrQwGpiw1AZmqCus2iw3Q3O7iHx6mNREMNq73rgHBLB7U7r4pBUuFm76C2Z3hWnIIX5b0B+ZDv7g+QhrgAlMUF43FckXKBuHWCvmQQ07VHxKJw4JAL01HZ3zU2QqG1YVEjYxbGJBSWy5+wD1WALN13VZXX0yJd9UnEhFkr8Jf/+1pB8hc9hhCL8vWQ8fh21DSMmroQds6eePny3zeT8bMChEmSK8E5KKqRwDEkGzdjynE9ukxgKcP6y05Yfc4GR+zC8SCxwgCINlrNbdpsYqSnjMnCY79oPLZ1VYAUejuiJMgXRUE+KIkMQX1UgOq5je6Twfc3DtB9gJLWS4+dkyaAyGvpLrF8xN43GE4CSGBGsQBSJ4BoJSc+hc3a+YnyXfVNgo2Vnbh08XhalKK5c58CCNO8Ji5WY2IwGsTVux2Upnp2Lk5HQDgll6laBuycVEWLcMwmCPcFAJ5Pf6DwMS4jy1Qv94gkKLQiTDD8IkH/nK0nMX7uapxxDIW5fA7X6Vqwfhf+/H9fCSBf4y8CyjfDJ2PAmJlYtG4bKqpqDVf239c+K0DYHJJLEZlfg7i8StyMLRepUJAcdooVQGzx4w1XXBOICAjLJrRNPpvgklwEx9hM2AbHw9LZyxCMOyI1MBBVkcFo4tz2KpaYc2BOlFJZDwMgOhwfoKTN8YHITopW72PRYVOYFyztnOAcGgevhGw1DZeAcJNPHwHXW86PykflffjQRlkdxjyqYFGUXGWxPsbFktcqQAQupnmbU8LwpDQNh8xd1S5Wp5wiVEaLLhV7fo6NnJXHqOxcB5g7W+krNJouNKcLM1lM/bIUhe4WQaFlYYzz4wULDBs/G2NmLFFrLHMchSP26385pyzIt+JOfT9uNmYt34SW1jbDFf33ts8OkMiietjFF6mxEW6RfCuuEmbxVeJulWDVWWusPW+nRs4ZpCtAilrUioZe6WVwEUCcwhNh7e6HukA35Ps4Iz4gCE25aSr41uH4VOvB1zBzlRXDzUHlHCtEQcO84WpnpwBxjkoxjoUQEF85Ny8RKt5Fj1hcv2slsU9sTyaLCYE6Pc37K99POOQ1OiBcepW/qTUjSsHy87l7amMeWioG1FRoQnLEKgDbr9opN4vC7RXOynO0FpT+slusClb7tvM9Aoptqvz/filqnGnFnnMYMXk+Bo2cgiMP3fEwtlCN2u++aoHBE+dhzOxVKK/6z1lh/rMDJLe2TcUhbBHZ5bgtcNxJrIZ5ci223vLAxmsu2PfAV+1YpSYIGbaI9s2ugKsA4haZDFsPf5T5OSPKxwdlWZl4Kv6+cquMcccnwGGQroxoZEcGKEComC1Rfgh3dYSdXzjsQiRQ7wuIuFlUOq7acubGY3RlxZgE6llaxoznJefzzvMwnKM6Zx0QQz1WO5c/ktsnH7hg+zV7tRj2aadInDAsX6oH7TclBrIVi8AFsllO8kB6f55Xf5OsOJnquryei2uzXIVpYI6pcGlUbjw6ddlWDB0/C199MwQH7zqp7CMrgo899sKRx94IzCpXi3X8J7TPDpDa9m5cDS/Ek+cv0dn9FDfk9t2kGtxJqFYj4Zuuu+LHa04KEK5eqO+h7ieAuMdlwT0mBbZu3kj09kBmbByai7jrlInVMATlH+NWobUMaBORY3duAgrEgjznjEBR7PakMGS6O8DaOxg2gdEIK9TW6VWAiHvlwbEQCdIZExy4/FBlvtTaV/3EIW+dk8l9ZT143gKm+j0ifG+XWCO+/7KNj1r4+qhVIC57J6jFr0/Yh+G8W6wWk8h9KjsB2njuMfY/8DZu46YvkWoqHD9hWpdHuljcIo6/gZmsA/c9MGr6UgwYMg5ffTUIB+44KUAYu5hLXMKBR+/sanQ86T2o+O9onx0gz1+9luC8FDWt2lRQjxT50wUQyuWQPDWxass7APFIyIIHAXH1hr+nF8qzM3p6aN1qmCjd2yD0IwSjvQLoEGmXnrEsAxWJYWgTF4mfR2tQH+yBB/ausA6IRnBuBUIN9Vh+AohbXoO4Mu3inoRh92VLtCRrG42qOEQ+S8UhRjerz/kZhI+p5/gbFCCFCpBnFRl4WpKqLMg1O1/lVu247qBSyhwPOekYroSAcEs3KjGtAS3NNhFmpAiD2mW4jyWh60UrQleL1oNjJMxwHbEMUG7c6v0XMWLKAmVFhk1eiMMPPRUghIkQMrD3yKlDQ8e/d37JZwcI272kKpQ0dqjbeRX1uCfu1f2UOoGkWgGy09wbbgZAjC5WZrna39A9KhkWju4I9Q1AW25iH0AMStcXAhNlNEovOCqBzip1fCW9dZMoeVlWAhqripCVmoyIwBDctXaClV8kfNOLjFuy+QsgrqIkPE+WbnDz0rJQzx5A9JmFXHy7D8RG0S3HW4AUoiMvXqWLCdhVWx/NUqhg2lKNou+756kW5aM14XPcdoGQnBd3b92Je9hxw0kBQyD6mz9iJ7HHVYk9GIizrstCXC4CwkW0r3glYNzc1Rg8ZjqGz1iKDSfuqFS2Zm3K1XsIGDuIytZ/39KnnyUg3BW3qEGrueE00LvcLDS1Ho/SG9Scjv1WofCQIF0BIkpIQHwySuGdnAuHoBg4uXigNStOC4KZJWLvrJSerlK5wV3qgcOofAYF7YHE8HpaD4Gjq7YQ5aXFCIlPR1R4GBLLm5FS3Q6vlGLccQ7AA7dAlSjQ67ECSlrhxL3XJQ5hwd/u227I9Hc3jt4TEGaiNIgNbpYOgwKjDxwidBV1F6tN4g+6aQSMqzbqo+nnXaNwz4O1aVr8wWyWek7AYEBtKZBw7xGOtlPhaS0orMsyBYRBPCdS0dWiJSEkXKyOcQhL6ndcfKzcrNFz16gAnu7XLXGv9Ljlobye231zQlZR879n16vPEhA7AlLfkyb0zaxScDwW4SzA875p8GQWhosiEBBxaTzTiuGVlAtXDx+0ip+vFI9wULFaBARaAlqBrmrNIlDxCYcaVxClU0F8/2MSTRV5yMwrRFZtO4IzyhCaV4PA6AR4RiTBMyQJ4XHZsHIJwm17Lzz2jTKWm7CilxuWuubWq9hg921XxHq5aWMhLG8pTTMAYohDCLIeI5kKH+PvoPUwAaQ1M0otAEHAzlv7qJF0PcX7MCgFsQXVOGYdqOINQsJxEA78UX66ZKM2C/3piq2ahUggONJumtUiIBws5NZ5HByki0VQDov7dk/ew3GQiXNWYcGWA2qQUhuojMZtAYoxi116Ne4LJDfFmnFTn+yGf/0KKp8nIBm1KDVYELb0qlY8zmiEhchRpxhlYbx0QBgMF9TDI7UIPhHxaMmK1bJD9OsVHKLstBgdAkd3LfCkTkARSCSeYA9NOKhgDHj1WEAHpK0yD7nF5UivaUNceQuKOl/DL7kQSRUtAkcK4uPi8UQC0ZcvXyEhPgM3rVxx094HocxkGQoWCYhjRrXqqQmIr7NLDyBM9QogeqDeO/3cBw4RBYcJIM1p4ZoVkjjmrI2fsh765jtU5uCUAmTVdeCAALL/oY8qZmQ2i6lZzjxkISLnj7ACmKUmBIKFijogFD7Okvlr4laxKNQ8PFftY8LaMqaDD9x1wfpDV9QoPeMcWkq6dATKWqwIP++OnAvf6yEWP03O51/ZPktArNPrUNPS09sU1LbiYUotLDObcME/E065jQoQb9Y5iRvDpT/dE3JRnRqtRsqp8Ea3SrcGugUhHLQg4j5R6QgF4wCjoooCPq3JQ0lRATKqWpDR0I0ScaGLxUNIr2hGTW0jugSK2poGpCcno6tDu+AVFbW4aeGEi4+c4Z9dYSw3cREXyzqpFEct/RUg1taOvQFhTZYhUFdxiLIib0sPHD2AZEaHoSA3G3XZ8ThlG6QsCIVKekliBLvUSlQ1tCCrvlNZkQMCCd2gBwLI7ZAMtSf7ikO3sEVcLY6hEAiu5Wu6dBD3QOQg4xWfJBV4mwVnqupgWgq6XITkF3N34z6MnJNyyMJPpYQZrNPdout2XayKeWQuvMRCJdX+6yD57ADhlBwG6V3Pelb9a+h6IXFIEayymlUtlmepXDhlQcQdEBeLi7ZFh2u9qTYgaOIqGYXuEmMKxh8i8hgV7pVAQSWlq0JIanNTkVpUieTyJmQ2PEFB+0txDbqQXlqPhqYet+/Jk6coK6lAVnqaut8ginjbxhVn7tjAU3puPdXrnl2Lx7EFOPzYD7vMXHH7ob3a5kABwrEQ1mRVCSCMQ3QrQkhMpD84eDsuOgqxZc1IknM9ed9VuTgKEFFO9uJUXq+MClUmnie/gW7egYfeap92WpGNZx7ih5P3sOHMI7X1G0fYaUU4gq4DokNzL0riHIGOIDEOoaViPMMylqPicnGLawJC4Wg9gaQrpk/9dS9owWV5L4N3XruEmo+b1/Gp7bMDpPPZSzXF1rTVCyB2TFFmt0gvJBfdAIgKLOXi2cXmItnXDbX56ajMz0R5fhYqCnNQUZCFapF6ebw5PxWdxWl4KYqoQ0OlUzVNAgeD+rTEZHGfmpFe34XclucIkXgjPbsYjY2tatEB08bZdY2NLSgpLkF1VRXa2zthbueOc2aWcI7lAg4aIFyv94H0nIce+SolvHTbSm2Oo0bTBRCV6mUyweDiabGQAQYjFKZg9AAS5eeH/Ip65Ne14/RDDxwVy8GxD0LCkncWLnKMI61Y+z+zq5txifGJwMFaqt1yPoxNVh+5rVwtjp8QCNZtmY6N8DazU7QcLJlhyQqDciq7vkDEhsM3VWaM301rwjkkrCjm7+Z7GbRziSHul89M2r8Kks8OkIrWbvgV9l7ForbzObzSK2CZXg+HrHojIJ7i03ITTJvAeIRnlSGlqg15Lc8QW1Qrt1uRXN0uVqAbKZUtyGt7qXrahPwKJGRIbFFYjLSkJKRFhCLKywtR6YViNZoRKlBkVbehsLIRT58+VwWU72qMPerrxNJkCoR1DWJB3PDQxh22Eak9gEiAfi88G0fE7dh1yxnnbz7uAYSDhQbLpdwsgdcIiQLFRPTHTB5PjYhQM/rampuxU5R92w1HHJM4g6Po7MV55DwQN7Find3aeER4ar6yELQih+WcWHayT2KQtcfuKoAJBzsePf2rRP5vVREsgTktBPdz53ZwaiAxqVwB4Bmfi8jETGw5dV9ZL8YkhIhWk1s18PMYj3BXsQte8eo+r2HyP9nd+uwASattV4pt2qo7niM4pxqPEysUHLrYpZQjPL8Wea0v4JuYj6iEbCSVNKjev1Bco/SyBrhFpCOmsBa5AkpaWSPSajoQJ6+JzKtCcmUrwgtqFURpEm/Ep+UjK6sQ3d1PlcWg8v3aOk3Pnj1HTXU9omMSYGbtCh/fcFiGJBnWyGpRg2V3gtOVkihAbhCQOAWIGk1nkM04xGhFTPeA7yu9QcmMi1fnV19Tg59FEdedeYzD0nMfsQ5ScOy774ULoqhU+Cj5vWz8OWYBKSqu4G67anRclJ4WhK4W55UQCkJkakXofjH7xVjkgrye76PFoaJTHkgg/1T+C7XVhR1jkBDlknEqNMdbzgmIhImfaS6uHz+HMDImyaj/50Hy2QESXNqKuo6epWYau1/g6YvXCMupkgtRKb0OrUcnXMVcO6aWwzs2G1m5pWiUGOD58xdKsXmRnhlWLucypx2d3coPpzLx+eb2LoRGJMPNNwbxGWI5sotw8ao1Zi46jO27r6K5uRVPJRA3heR9nHC+Q0FBCe7YecHZxQ/33EO1NG9xM9wFEE4HZg3UrpsE5JEGCLdZE0BUqlfFIdkmVsQAiakIID3QFKBb3leYlYM38rvyCwqx5763AmTbDWcFCIUuDsc/OH3WLbcBjS2aIlqEpqvKXw4ccn92WgYG3WuO3sGeO+4qtctAnbGDDggrfwkIs1EEiq+npSActC485orV1Vt6XimuuEcbA/qfrtqpgUReQ8Y5l+RxZsYYwNMTKGj656SAPytAXosWsqcybeWtGiy+YsJV5kouliddgNQqdTs0OQ/19U3o7OwSl6i3Ur+r8bnzly0xec4BkV8wa95WTJ2zGxNm7MGMubvQ0dGlrAitg/Z5r4yAvetji8ur4OAThqCgGNy280FAYQN8ChoUIFe84nBCAuedEsieu/5QAcISFT2TxcE+o5tFK2KEpH9QCEhdWhjqWDX76iXiktOx95EfNl60wcrj9wWOYByyDMAvEiiz5OR6QJpS8tDsSnWuzjE5ChAq765bLqoM5k5YthpYPPjQB3dCs9XrGSuYlqBwZJ2BP90nppKZFGAQrpXFV8ErrUx9vt5apCO67RuvBhv5+zmBi/NRON7CxSFYms/nuPe7hwBZ1f77l6V8VoCUtHT1ypPXSezxRKwHm1emWA+5SBSbtEoFiQJE/N6G+ma0tXagi5ZDlJo9uq7Q/TU+V1paiZXrjuOhhScS4tPEimShsKAMOTmFaG/rRKeC5ImCjpbp5Vug9IYlJjUHUYkZyMjIh6N7MLxyatSut24CCEe2uRnQzxIjnLv2fkDUeAwB0aUfSGhFapJD0FRbB7x4Cq/QWOx+6Ivtt92x+OBt7LrroQDhers/i1vHJZFYmOgmikkr4p1YoBSbynlRzo1jNKwApmXg6PpR60CVueJicrQO7PEJCHfP5UAhrQ4B4aAkrY82saoa90IzVZLFtLXLNbntE6/ex0lXe267qpiFbt81/1SJgaLVmAm/w6OoBS1Pft/NRj8rQAIL6vHUsPNRx7NXaBD3iq24RsywAQhH6XlcxCzzNk2zf2QSamsbxC1qUz0/B+6o0FTmdwGiNz5NhW9r7kBhZrnKRLW2tKNFpK2tAx1yv0vcsydiTRiw6y6cDsrr1z2gWHuFolpikdKSSvj5RcAhqQgeuXVwlyD9lASrFBYSnrn6oCcGeScgvwKJAFIRG4CW2hq8edoJczcJhh/64ed73lh+7B42XLDBQVH6A2JV6P/TzWLpOpU8MqcS/qlFyl0iIOHJuWq8glZEd5s2nHmoXCkqLafq0r3SR9hpeTiCrg9I8jO06bm1yiXLKn17FmGr/Ic3xYpaJZaKFbFT/wUB5OdzPWDGPQSWn88JcM/EA/i92mcDSKOY4/jSBnW7XXohjn3ozS+7Cj4GIFi+wNsUjtS6+EehuqpepVzZ87PX/xArojc+z2wU39MpF7JFQGtqakWzSEtLm7JMOih0u3SLYgpKZU09XOU8ODbC94eHJcAqNFXtW0hAWO7BrM+Oaw44ceFOnyDdBBDGIQSkrxXpB5LyaD80lJeiu7EOpyy8sEtg+PmeFzZcslNW5IBFAPY/8sUec0+1FNCt4EylgM7pVfCMy1EKeUOUu6KmATF5lQoYPWBnNotWhDVUfJzZJwbXhISWgtaAQTgBoXIz2OYqKDyGpBWrsay+rVH+xxve8bARiNafeqBqufh5HPHn8kIsZ+H7CU1oubas0O/RPhtAvBNy1b55HPOg9dBbRX2LChgJBM09N6LkbTXwJH/q6RtWqKioUXFIa2u7UnItFtGsCHv59zUCQiWnwtP60IoQNrptDQ3N6jatEz+bzymLIiAY4xM554DweOTlFuO19HwvBJ7YmFTYBiYIIBLsipt15LEPzonybRcf/PBZM7Wiij5QqLJYEqT3siD9AaIg6QGkIjYQDaXFeNbSoDbn4er028WCbLvjgXl7b2C3wPKLuF37JHhnNuuiV7wChHLBURvkYyFhdV0jXsr/xAFFTqKiFTnnHqN6eo6XMF5g3RUBoYvF0pP7UXkqK8UxFAJFxSZElJD0YrQ+7X9rt/LaJpjJd3KZpq0XrNX0Xp7PT5dtFZwM2vk9nsVMz/8+ma0/FCBU1f469LyqRqSW1ov/+fKt3ic4R7MeLrmNSnib+XP2PHvE117zyxWUFFeo0g8qMpVYD7A/xooQJloGvpfuFeGoE+Wh1AssBIXWgc8xPnlCSyUglhaXIDUlE63NreKvCdgSNGem5cDOO9KwPXQtjj70wnmXSOyUGGT3WXM17ZZjIMq94jhIBQHRslg9gLwLEko+quMCRMLQnM4JTG7YKRZDAXLXE4sO3cVPN12wTwLuvQLH7rvuSpH1dXo5X4SzAJmGbRfg2Woa21Smi4WGtAy/3PdUYyQqVvBLVu9lHMPOigODtAAcPedr7cXFUkuXUuGTCtDQ+e6JUsn55Sr4Z9B+RqwqLca98FxjilkvnHST72vq/u3xyB/OglBXX0qvzolRDMCrWzqRmF9heLZ3q5dYgBeFQDBLQjgolhLk0Xos2X8TK48/QFRsKqoq65RS61aEvbwKrqWH1yAxfGg/jc/xNbqrRUgIGl2tegJS14AGOTbx8wWEjrZ2dHeIpamuQkluLqrKK/Hq+VOJl8UNa29DcV4h7N2D4C1xjbcAfsrSB+edwvDLXVfsPGOupt1y8Ti6Vy/oXlUY3CtTQH4FknoBhBuBPhe49pq7CyBB2HbfBz8JICtOPVau1t4HPtgjloRjJASEPTyV75pvkrIgFyRAN+08onMrVNbqivy3tCJ7BSy6VLQsVqLUdLl4PRhk08366Yqdmv/O19DScG3fa94JiM4pN3xi/809JlO9fscla3XkOW0+Z6FKZHSXjY95Fza+97p9SPtDu1jPxEVJKegfDrao/BoFBFO/NL28zYvBno+jwHN2XsaW684wcwpGeXm1WBFRYlFq9vJdXbqrxVjhw6wIIXklVueFQPL0yRN0d3Whs10C9pZWtDYJHCLtLS3oamtDQ1kJqvJzUV1WgfbGRnS2NONZRxvePOtGa30dHFz94Z6Up+bKX5HzO23li6OPvBQg7WkRyrXqsR7vA6R/SOpj/ZUF4nZxu+95qC0ctj3wxY/mXlh3yR6rBJI9Asjue574WQLhs67S08t/R8W7LO4WR9jv+Scafr3WONDnml6pQKKrxXV5mf7lfVYBqw13RNhZaVkpDzW/nfc1C9+AU6LkzIyVVmvxZH+N89UfhaSreOScWBGe01UBa8tFK3VtWSlMy0JJq/1tq6P8YQHhFsT50uu/q3GAz5WZDvnzmCXhkWaXfyBrfTaes8SKY/ex7bYHfr7jidSsQpVFohVhcK25Wn0DdsOH05HjHSWvNaF7JPJGXKTXL5+LRXiGl8+e4MWTbjzv6sQTsQwdTY1ob6hHc2Upupob0C1QvH7SKVB0qWzSkxaxNkX5KE1JgKuLJxzCEhGQXYr7XhE4dNMGZ20kTjh7T5Q7UMHRKzgnHO8ExOQxg9TFa5uBdkocs1tcqZ1WIfjpgb8A4o0frjipnbX2CDC7BJidd9xxWtwlOwnQqXScEXgrJAMesdmG/6OnpRZqhYp3wnKU+8RaKloNLhTHTXZcc5sUMCyBZ8Zr7Yl7Kjbkc4Tk5wsP8JP8xqOPfFDxnm0Tiirr1cQt1obRjXMQeDmaz2warzHHXHgevOZdzz99AYg/JCDN3c9QbZhz/q6WV6elFXXflxeWS2MeswlWefPFv9wU6+GCn265qR1zr7tGoLa2UQXXtCLK1VJpX3G1BBJaBo46azD0AMGYAa8kqKQIGG9ePMPTTnGh2loFilY8FXnS1iLSjBddbQqIZ3K7paIEDflZaMhJRX1mAuokFmjNicOL6mw1jyM4PAJm1m5qgx2HkHhcvHQHF+z8seuyBcpDPUW5BQ49OP81QOQ2H1fP87UidXH+ykVrFzdrl8Qfu6xD8dPDAGy954Mfrrlg6fFHamxkF10sAyB0XezTKlUMwYA4Ma/3wB4bYzGXlDL1v9Mt22PmbFgrK10pMV0iFbhLDEjQlh+4odK73KmKgPx4ygzLtuzFA68oHJHYq6Tq3du5OUdlyLVtwkOxRrzWHLSkW8eEAkvrec35eHSFxHef2P5QgHCMo7K9G50mpez9teev3sAzR/NDlfWQP4p+L0dw2WvdCsrA2rNWRkBoRX6RHjQ2U5S2oQmNIs1NLWgXSLokVqC79FIswusXAoAOhAEGxgxdreI2KWlGt8ir7g6xCF1ywl0KhubSItRlpaIhOxkNWQkCQrza+owVtWq+Bic2GSqEdXH3DUCEhwfCxLK5RaXAzewOjt62w4Fb9sjzc9YA0YPz97lXBjAIEi2OsjwitdE+KgvWmp+IXVbB2GkThh8fCSD3ffHDdVcB5LFK/e68742f73rgtLhMVGKLuCKVnaIL1dzaf6YoSWJC/veqBMUuSBQ4V5W1M+WrB+NcyIFWhuv28trogKzdewaLN+6Cu5e4mBGpOCTBfnaxNoLftzH1e08skbW8n9931jZIxTWsCOa11l1CV3Gv255+WsD+LwWEHgnLQX4tddq3dYvP2SRWg/IhraCuTfUs/HP4J7E3o/XgaC8zMKwm3SRuxJZrzmqlxV33/dRMw9OOkagoq0JdtQTsEli3NDaho1UsQEcHnnd34YUIXSUFg7hHBOI1QZC4AeImPW9vEd0uQENmCuqTY1CXEIHmlEiVkqWSakorMQBTrSz5YFWtPn/DBJQOCboD/PxR7O+G0NRsBKTkINXiPvaevI6jdxyR6manuVeGIkUFhykg+vfIUcEhr1PxhpyHGoEXq1EVru010pqXINYjBLtsw7H1USC2PPDD2utuWHrSErseB2CnxCE/m3virLilPmUdotx1ajGFcy6RqBV3tL/W/eQZnMTSEIQTorTeSQXK+nDQkEcKF5QjQJvOPVYWRO1SJYDM/2Enlm7dh+mzl0hM8wwJ2cU4+tgXkWkFhk/v3Vwi09UAIpMDgVkVuOMcrOaS0I3mNacOUGIqP82K/FssCPF4KW7KC5HnYpKfiWWgdSAI3eIv0mfsNJFXPc7/r7bOF68RX6hZD4LBAJ0uAUd2D4hfS7+VPczGy47YeMURP5l54IhjNA7aRogVCYVbYCwqSytQUyGgVFaLVKG5tlYF0k/FVXotsQIDacYMnXVVaCrMRqNYhvq0aLSkR2mTmHSllSN7eGMvb+zpTWAxBcUASV5yFApiQtAWH4yQsAiEZ+Yh0cYCDlevYc/5e4iyt9SshykgRjgIhiZ8jBkunhNnIXZlxqgtF3isCnVXA450sXbahOJnAWSLALJZ4pDVV92w/KwtdlsEYidH2MWK3AjJhF95p3JP6V49jMpDUVm14V9/uwVlar06O6OwpBwVYxAQdlgUxggM1LmEEAsVdcsyeupCrPjpAAYNG4879x6rz6oSt/eauMBeCbkqEWDaSqoa1Ei+rUDmnVEhsedzHL0nLqFzpIJEX23FRTrMZ6JrH9v+sEH6u1r9k5cIztVMq34x2FOxN+ESmnS5DlkGYvttT2y66qQ23TnkEIW9j4NwWI4nbUOQGpeEgqwclBcUobG6Gh2NDehsakBDsViHvAw05iSjMSsOT0pS++/BRXoAyTIqsxLeF9Hfp15fZ5gNKC4XF5RLiQhEZ2a0WIlMZEaFICIjFzGuLiixe4QzJy/B5/5d4+fp30EIqPBVET5IdHgMH7OrsDx9HDf378O5HdtxZOMm/LJuPX5Z+4M67l29FofksePbtmHlpj1Ytf0IVu46hVUHLmPJvmtYfuSO5mI98sduEStR4kcxBbjql4wL7jHitrYj9x2uD1tWsRYkc/3dwpJK2KdWqEJDW7EsevUuO669hiwWiw+vecVi5ISZWLntIAYNH4+hIyaiukaLQVhd7RWXA6ekEjX4a9puyfusEkoVIGwFZTVqwhdjIH4Hz4OSJZ7Fx7bPCpAusR6dz1/DRS4C/xCabvZSrCDlXOqHHhFwyqzBpkt24F7p+yQwPSyu1V6LIBywCVduFuWegy+yElOQExmBsuhwVEUHoz4uWJV26Er+FhhGt0YXE0j4HlF25RYp6YHFCArfI65XMTflkV6/OytWLEox2vOTEB6fhNDAIJTaPUbWY3ME3LoiblIy2tMikez4GFYnj+Lopk1YO2cBFkydg4XT5mLxjPlYMmsBls5ehGVzFmP53CVGWSaydM4SLJm9GItFFs1apGThzEVYMGMh5ovMm74Ac6bOw/x5K7BeFPaqgz+OPvRQgJy19oV1XAFyCt89XsEJVg6i+FT+8qo6BBQ1K0AIBvc0VNdGrsthcZ/ochGQrcevY96aHzFFvnPg0HH46uvB2HfghOETtVZa2wSH+AKEZpWrlTPZPGMy1XJBQYZqYzb74ERVLcxF6nRAAgo/fv/2zwqQum6JVVra4SGuFVN/zMHr86fv+cTCOTZX5c43XrTFRd8UHHWOU5DstQjGEQGDoiARlyva+iE6UiKMi7SpgTmOO+iZIx0MBYem3BR9cpK6L4/zNTokWpDcEyjrcQQ/j8fm1BA8k9uMEfi8tthCkbIiYckZyLZ9hELr+3A5fgBnpOdfOn0u5kyahTmTZ2P+1LlYNEMDQgNhqREGHYilAooOxeJZGhgKipkaFDoYcwnHtAWYPW0+1m3YiWPXLTB7zgpxWWLx8/kHmDpxNiaOnY6JY6Zh8fwV+GnLTpw8dgb3zR/Bx9sPmRmZaGtrg0uyFpTXSaziV9ioOivOLaHog4UcEScgBGnMtIVYu/s4ho6ejG++G4Y///kbDBg4ChlZuYYrrDWWtiQX1cA6KgfxeRWISS/AJXGn4gt7XD7O4Tlu5S+QiGtmKLm3z6jGi490sz4rQGoFkOIqzeekz8u4g9kSphSzxeQfc4hUGay9D3xxzEWCuPA8cR8ClYulA3LYLgJrNu6G2b7d6EyNELdFn/9tmL2nANF7/R44NBdJF8MccHlMA6Unk8T3PxPlf8q4QMDrzk9AV24cuvJi1Wv4HSwlYWyiB+/d8jpXZxcc3rEL8yfNxLTx0zF9/AzMmjgL86fNE6VfpJRflyUGEHTRgOixEgsFCM1SLDACMVdgmCMyeyplnsCxQCUFdh25hBlT5uHHE7dw2iEUM2cswbRJc5VMpUycgykTZmPy+FmYMHYGRo+YgsHfj8WAb0dixMipmL1kA86cugDzgCRtRJ1r9YqwOpiWneUirOTdd90Ks5ZtwPRFazF01GT85S/f4P/+9A/89a/fYdPW3YYr3Ls9kXgkLr8S192j1S7AyRLQmzbvaG1fRFuxWtQJdprFH7ElNdtnAwjLTxok/sit0ArY2CPRenBRALeEAsQXVEtA7qnij8tiPQ46RIu1iMaN0FzlZumArFi/C3MmTMcPs+ehKSYAXeLq6ItFMxNEBVdukW459CCbUOgZKYMYF00gKL2sCUHRrYmIwZI8LUpWFougqPfI58b6OGH3xs2YKEozadQUTBo9VeCYiXmizLprpMSg+KYyXxSfr5srCj9nylzMVjIPsybPwUwlcw3HOZgxaQ6mG2TjtgM4fOUBFi9dr6zFnEXrcdEzDguWb1EwTBEoCIYuvN9XJo6bibGjpmLE0IkYP2Eudp0zV2XuBIPCjovxAee62Ig1GSfWY+nmvRgycpKKP/4kcPzv//xNyfdiRZJSMrQL3U9r6+jCNZ9E3PVLkEA+D4WV9crK8HGuxKJv+kNJLXu/m8V00IuXPQOLnw0gzF51SPyRXa4BQh+Xa8FyHnOW/Clm/qlYfcYKO8x9cCckC3vErfrFOgwn3RNhFikxim8atl22wswJ0jOPnYLFU2fD4/IZlfVRy+zQitDNojLTghAQo+UwZKCUcKE2ina/FyS620X3jJDRouhCV0tEB682Kwbb1qzDqCHjMXb4JIwbMQkTROFmiVIbXSEqP3t+9vii/DMnzVbC1xAEPq6Lsgois+R1c2cuxrxZS4xQzJDXL1u+ETsOncfeU9excu02zSpMmIUpk+bh6GNvLN9yAJPESlBoLSj9gdGfMIbZsOMILrpFKTAoHBOhBbksbtstRz8cPG+Ggdzqedg4fPv9CPzv//7dCMhf//otftzxi+FKv91qOl+o2Y05pTVqFiLdLw8J6H0Tc3HZOVwNSOqDhjGl/VuQF6zte/5ClS+Zts8GkHaBg5DkGgBhL0U/10IuRG5ZLXbe98Pm66445BSL8x4JOGwbhkOO4lIZ5Ix3MrbuP4vNP+7F6iWrsXjmAmyauwC1YV7anhxiRXqtIqIDIr18r3GM5rfXxH0LElbU0ppQCIupyGMd4n7NnjQDwwaOxYjB4zBSIBkjkEyX3ny6uFVTxYJMGTcDkw1xwASxKrxPMOaKa6RcJqPrpMUTdJ+UC2UQQrJi1Rb8sGk3Nu84jNXrtmPm1AUCDN2nOUqo3Nsl5li9/ZjAorlRShQ8miX5EDl89ZFyzU7ZBCgwdLkdnKkC//krf8K3Xw/HV18NwXdiLf7x1SAjHLoMHDwG+YUlhqvd0zikRqXnBKyiit6lR1yXmeMnVyRQf8SBSnHtHFNKkF/bjIrmDjR0PkFr9zO0P32mtsvor302gDx99QbNT1+hqFqLQVhtSivimFQMj8RCrD1ngwP2UTggrtVey1Ccdo7CQbtIIyQ7brti/MjJyrdfOmsBFk6eqazIrT0/S7Aers3BUFbE4GaJMrOnNwJigMN0NPy9kNA9o+igmEhOqCcGfTcKQweOUZAoUAyQjBVLwuPoYRNFJggc05SrpCv+WyIxxaw+MlOsiy4zJmsyXT5DFz2+2HjoClZs2f9eV+pD5OgNS3U89shLraaoyznHECxcuhHjxkzHcHHFBg0Yo0D5298H4n/+f3/tBcjf/j4AZy9eN1ztnlbQ+gxpBRVq2dIuQ1bLtLV3deO8e4zSCUpY0cdlsj6rIL2q6wVaxcS6SYBOM86UokdqqdpR6ueHAdgvQPxiE66gYAyy3yIQ+yyDFSAbzjzAOAFksvTI8yTwXTlvCZZMm4OlAkn0QzN0pkUaVzRUwbpuRRiDMPboB5D+ITEN3vuHpCkxFMMGjMTgAaMx5Psx6jhUIBku1oQybJBYlaETVCaJSv4+APpKf0DoUOhgTJHnV+86hQXLNv8mMCirN+zEhu2H1O2TVn54xKyiCN2r7Sdu9Hotg3wFigT5//jbQPy//58/9YJknLiPLB7VW2nbM9R3PkNoUg5ueUQZHn27XXaNMLpYUUXvLnDtr31WgFSKL8rmnlauXCwOSDE/vvWWO34ROPZJzKHgEOGRss8qBD/f88X6C7YYOWaWgmTquOkq67Nq/lIsmzEPm+YtRGWQm4pHuPWAymhJLMI4wmhFDC7WW4DokBjikrcgobulg6KyYrnozIjGzkXL8P23IzHw21GaiEUZZABmxJAJmCTKpCt7j4iyi4IzrtB6/dmYSldIiSFuYFwhj2tulEk2yiDTpi/BgnW7MG3aol7K+6ly4NI9daRLdtElEg8FDMLBUfWlayTW6fN6yoSxM1VwP1B+79//OhB/+fO3+NP//B3fSWwSGh6tAumC5m617TfbXc9ItTrNu9oDfwneDanexOKP2//wswKEA4V0s5IKtZ1Vmcm65peK3Y+DRYI0MCQG0QGhFaFF+VEAWnXKAgt+PodR4rqMHzUF00WRNEiWYfXcxTi1cT2ao/2V8mp7lRs286erxViEVkQgMMLBBa/fC4nmbhnHTExgYWYr5PwZAWOkgkQDZaTB7RqL8eJWTTVAQIWfJDHJRAFmgrgq40dTpmki9/m4Lnxu9IjJGC6AUZiSZbZpygTtsyZMWYApM5b2q7SfIms378Wq9TvV7QnjZ6vt1XRAztj6Y6pA3fc9pjJOzpfn+d03w/HNV8Px3bcjsOfASYRmFqPeUChZUV2P07aBxpUf+2t2YalqJiNLj4r+W9O8eqvueol2CbweRWQLINVqFY1dAsdeq1AjHEoEDlqUH8081dyHFccfYt7uq1i0fDNGi49PSKaJ4jFdumLeUqxduBzHtmxFlrud2ohTBe2MRzibT9wiKrsei/SCxBQUQqJAkdcZ08CaNVEWhbAYpMLdHmtnLhCffIQoyAg1rkAffdTwyQKCwEAgFBS9weB9ZpqUBeljHShUvEkCBeEYKq4ardKgwQLMSHmvfF5fJf1UmTNnBX7af9Z4f+7iDUY4OEd99db9vV7/LqHlGTNyKkaPnoHV2w5h6YY9AspIzJi2AFcu38B5czuEp/QeSOzb7CLSlQWxiCtUgfvHtM8OEJpfulq33KNVHMLJOYftIyRAj+6BQ4SB+rY73lguYCw/9gCLf7mBqGQuBmCJCXJhaEnGSm/LTNFciUk4Er16wTKsX7QcFmdPoiU5XFXGqnjE6GrpBYd9AOkFSW9r0gOKARaDdGTG4saPWnaHcAwbLEG6KMp4AWA8rYEuvC+A0C2hMvUCg7f7ESreJLEa48bNwkgBY/DAceo7vvtGrNV3ozFMem1+5sdkqkxl5vRF2PjzkV6PbTpwQcFB2XfVAvPmrer1fH/C3zBn7gosW/0jlq/bjpHSOQyRcx0l14X/Bf+TgXK+0yXuIiw52TlayXif9jg0TRWthmS/fypvf+2zA4TNMyEfZzyScMo+XC0IYJlUjuPuiUY49ggc2819FRxLj97HysN3kF1UgYjkXOwyc0N6eqb01JMkEJ6EMXIxmEbl+MIiE2uyb8NGZPg4aUE745E+VuS9kChQdGtiAMUUFoN4nzulFHfksElq0G2ccp0M1oJQiNAaMMbQFV8XKjctyQR5fpyANFZeO4YulnzGyJFTMEI+kwo2hFZE4hpaqa//MUwJ3Zlvvx4msIxSsYAOn+nnv0tmzVqGpSu39Hpskrz3rH2QsiAXncOweEXv5/sTwjFtqrh8Jo/xHMaOmqbOnb9ff3yigM6Ogv/RmpUb4OrsJsG8NjWCU6Gv+yaqQsvWzo9fefGzA4RFbCfcErD+oj3WnbNRK++x1udqQDou+Gdgv20kaDlWnHyMJYfvYfUxcxSUajU8l+2DYe0fr24/uP9Y+b8jmU6lyyVKNUWC93lT52GZwZpsWLwCTjev4ElRihawMxYxWhFRfAMQ/UHyFih9YRGJfWCG4UMnqN5yjFx8KsdYUXD65nSHdKXVYVCj1/I84R46eBy+/WYY/vaX7/Cn//2HBLlf4f/+92s58rZ2/0//qz1G+fOfvhH5Fn/5v+/w1z9/j6/+PkSB8s1XBGaYCph5HvweXTFNhfHEjGkLpTfvrdSUhat+Upkrs8BULP9hp1iYxW+95mOEQPBc3uUS0rLOm70E0VExKKmqUxvvxL9jYY9fa58NIJzqGZhViYsB2dhnEYzDtxyx9ZYHtt31xkmnKFX/c9xZLIhNGH6SoHy1BOWrjz9AXom2ajlXPtx61clYws3PW7VyvXI32IuOll5rnEDCgTkO1tGarJy/FD8sWoGze3ejMTPG4GaJiyS9vxES09TvO0ChaLD0BqbUz0W+W3OtdOmBZJq6P0IAphVglus7ccdU1keUnAr/t79+ryzBwAES3HPAUV5L4IYMGqsUnlaDyv+1wPCPvw0WGaTe/7e/fK/e/z//37/1wPN/36rj1/8YolKxH+qCTRZX7oyNP24HpWPp2u2YNmV+v6/7FOF/wc6CHQPPRe8oOK7CWI2W9/w9O3gk5CpL8intswCkTUynS2oFrobm4aJ3CuKyiuEalqLSu/sMwflJ1zg1L+SYXRiWHjbH0kN3kJorymlodLF+uubYK4grKioWv3eSsiQjhkyUuERcHUIiLhdTwXOnzMXyuYuxTuKSXevWIzvE02BFPhCSfkAxFQ5QTh8vQBAOCaoZWBOIoYPGK7eILpBS8n8MVT0+lZsKr8cRhOhdPT6FCjWRbpj0uISNLhdduq/l8+hq/VVA0dytESoW4nf8RUD5n//f38TKfKcgGzV8inLB+vt8yuZDl3DdJwHzl2zo9/nfKnSteH0GDxyrOophgycoYUfAjm3zT3vBlWk+tf2hAWGvkFnegEfxZbganAuH2Hyjn3neJlABwpL2w8xeOURj/SUHbLpkj333vGHlH4fCijrUN7Wis+sJAmMzcEF6ur49DV0tKo6CRACh+8LgfaIo39RxMzBbYhOWmDMu2bRkBcKs76uxjI+CxFRMAOHA5NHNWxSU7BF5HhoUI5XCUpmppFQMQsOenX74+6DoK6ZWgLfZ6/I7CAiB43cN+HaUeozg8TYfIyz/96evFSgDvh0hQGqWTqWNDZ+3cst+HL3vihkSl+iP/TOE581rwywfQRkq/xM7CP4f+/cdNlzJT2t/WEAqGtvgnlGFu3HlsIrOQ2F1z65SXKJn2w0XVcp+1CVeAbL9ng+WMVt18A7uOAYZXqnNkWfzjcmQ+CNO3TZtdXV10osOUReAfzgVaLQo69hRmrtFSGYJJEvE5SIkG8Sa2J4/pcZIPhkSgzCNXOBqjRUz5mLAN8OVK0RrQWWlAlCY1WF2R3cz+lOg9wnfYwrUpPGzVWdA14xulwbHaAUiFZCWiyPdLGnnY6o05C8DFCjffDVUPcfzWrxhN1b9dAiTTb7rny3Mbg2RjoKA0NLS+l+9ctNwJT+t/aEAoftTWNcK75xa2KTVICinGuX1b0/Gr6htwnaJPTjXnHAcEuux5oyVgmPnZWu18Fjf5hebCY+IVMO9nkaLQmUZPHCM8nfp5rA354DbOPbW4u9yvISTlljgqENyfc9ONd9DBe3MbOmQmFiI/qAwFQ4cNgZ7IMb8uhokpP9PK0LXgaDyOIQDh+Jm9KcwHyI6IKZw8fMIAmMSAtIDhwYGe2mmhikElPe/l9fx9X/92/cYKu8fMlR6dAMsfS3LP0v4HezEhtMdlmtEYGKiYw1X8tPavxwQ9u4f0168fIWShjZEciGG7CokVLSgvKkDL9+zxH1Sbpmq3j3jlYwjAghvL5G4Y8lBM5S8Y7G56LQCNcGmvzZ71mLl0zLQpc/OC0FXhrEBiwU5VsKR9zlT5miQLCAkK3Bm62Z0ZMf2sSL9DCS+R5ojfOF9+QyGixv1DQNkUbiRogSjDKASko9xqfoTZoWYDjaFhJ/91d8HK3dKtxymcBAMunaajFePDSIoYm3+/tfvVWkIA/wBEiPx/XwvYwPC8jFp448RXhtaUwo7ssULV360vvVt/xYLwsksz1++xNMXL9D97Dm6nj7H0+cv0ClHbt/cLbfbnjxDQ3sXSsWVYknyxyQhgpIL1CIMFwMyccQ5Fj9csMUisR6P3cMMr3i7FZXXwi0s2XCvd9u7+5DqVXlx6d7oPbbqfUWxWBc1RazIjImzVeC+ZNZCrFmwDD+IJTm5aQM6MqM/2Ypw1N7u5BFVzfutuDC69VCWTIS3f2vvTMCotKZuGh8bbBgfocuigdEXDnFnRFQMJK9RwsflebqlTCcTEi2WGd4LMr6WLhAzcqbf+6nC94+RWG3kMA0OWvj4+N5Lo35K+0MH6e9qrjE5OO4Shwu+6TjsGKWyVmuOmaP7ydvl0Hqj+/boHQCdO3MJozkOIheCRyoNe1je5wCdPn+CE5A4J4Oz+Bi4c6xk7YKluPDjZjWn5FMA4QDk/YP7MFIU6vtvhqlMGjNahJXnwvP4rSUiVC5+BsUUNrqUjCsIIVOqVH4FiAkctKq6DFNieExeM/C7kQLIVyqW0TJjQxQoBERBJqJuy2v5Pv17eB6a2yfnZnKe7xK+tsf11Y4njp82XL3f1j5LQOwiMtUMwQt+6djzKADcEMbBL9rw7Lubo9/bJdPcovnvfx2gfGndlaEF0bNHNOsaJHNVRe2sKfPUxCTO+eb88JXzlmLFnEU4sW4NmpPDPhoQyuOzJzBKlG6IKBwnTzH2GcfxEEIiCmE6qvypQgvC30XRfycVlLEXfzvvcwCO/r2yGH0A0eEwFb3WiwG8BgdLWSTo/3aksk46HHyd9lkGke8YJpaAc9pHyu8cJTKav1esDVPXBJdjHWPlyI5Cdzf5X9AqDRk0BieOnTJcwd/WPktALMMycS0kF5f8M9TSokv331Lzk3+t5ZdUoaCkZ+mYjvYOzBJFZ5aG4wu8QKauAE06g2T6vHzcCMnU+Wo2HwsduWgCVxdZPH0uts5fgOJA137jED7GUpX+oLG9cg6jh0pwPngsRsjF16t11aChKAhh+a0uil6uQWEPrvfctCgDvh1ufB2zXFRExhNGhRbpC4ep8D9iAM85HuxYBkpMwqOWOmYSYJRyvwjicLEiI0ZOw8ixszBqwlyMnjQfoyfOw2j53lFybqMEilGjpmO03B49ZiZGC9g8jpH7ww0DoaP5n4yZhvS0/mPKj2mfJSDWEVkwiyrClcBMbLrsgDP3XQ3P/Hrzi0hSR6Z/bWycxOxPlGB1qBogY4/X3wjyhHFy4QQSAsM5F5yXQUg41ZXzx7moAq3JgmlzsXzqLLWWFd0tU0h4Xy3oUJ75FiCul85grFx4WpERA0epxIBWwSu9qcDxe2SJ+Jv429gzUwiM/tzQQWNVr236ekJEl+jX4NCFVoLuGgP478USMhbRXSx+Bu9/z2wZLSUBZDnJrOUYO3c1xs1fg3FzV2Es789chrEzlspRhPdFpq35EcPF2hGksXTLWEYvndWGH7Z+8gi63j5LQJxj82AeV6YA2XjJDj7hmtL/WmPGLK+4Bt7BKcjNacEve85IzzZKLuxw5SIwq8MLyp5bd0NMhY9RWak4jBPUpCaJS3SXSy27M0OgmTANURZ3elsSEc4tYfEjS1ZMAfEXCzJh+ESMEUiGfz9SjeRPFCUmJHQ5aEVYwPhbrQiVXrkvIrQk+ueNku9mB9D383mfr2XiQBvB7h8OXeiKcTyHloSw0LIQDr6fUNKFozs1fPQMDBGLMWv3Efzo5IcVV+5hxo5DmLB2Oyau3oaJcpy77xS22njiVEENrrS/xqJjFzF5yQZMW7QWU2cvw9SpC5UV9PcLMFzdT2ufJSABaSV4lFyF0+4J2P84ADmFby/TrzcG540t3SgubUdWVgtys9sRHF4E84feyi9n3ZI+J0OrXeoZqCMMfdOjukyU99KisNCRI+GTxk5XATxBWcDFFCZMR4zt/V6AcGCRFqSvFUm6fxOTR03ChBETMVIA4dz5SWqxBloQppu1oJ3f2fc8PkZoNehGKhFF1a0I4wutgrb/ZIAOCjsG/i8cVe8PEP1xulTscAgK/0vGH0xf0zWaxM8T5R4/fQnGzluN6dsP4EhmKa52Apean+NcbScut75U9ylXDHK2qg0zth3AjLXbMH3JegXJlCkLsGzJGlVX96ntswQkLq8C1hn1uOCbilMuMaht6b1MP81uc1s3ispakZbVJGC0KcnMpLTCySlSep+56qLT39aDS73sgqPZdBUovNB0Gdg7cvSWASOVVc/GKHjUdNeZmCa3GcTT7WJ8snjaHGQGSExiAETFIZwXUpevQWMApMzVFnPGTMKUUZPF1RILJsK58yx3YRElIdRcPLpab1u2jxEV14iwepi/n+f//XcjVDDN7+jPcurC1xIiDtBxwM4ISy/RKgBoiTkA+9XfB6n/kB2RGuMhiPIdU2csxtQFqzFlxRZM3bwXu4PjjVD0hUOXfTHpmLJ+l4JEWZKZS9SyRX6+/oYr//HtswSkuLIOtlkNuB1ViJ9vuyO1rAHdL16rNY8q6zqRntOMtMwWEQFEP2a0IFXk8mVLdZG1HlSzDnrGRQssJcg0lF5oweUogWaYYWDsK5Wx+cv/cVXAr+XCD1VKwKwN/fgxI0TJBRSuT0VIOKV37fzFaC1I0rJbJtW8poDU+Lvhx7kLMGOsADBiPMYMHoUpAgityBhRxhHienHwkK4KIWEg3Z8Cf4jwt/MzKOzRCRzHX/SsHVPLfEyB38/7dSFIBIxQ8byo/DocuvDzmPbVQaH7RQujfgfhnL4I0xauxYw1P2HGj/uxVdytK22v+oVDlzXmtpi+cTdmrNyCafNWYeq0hVi/bqtBMz6+fZaAcPTUIrYA9tlNOGgdgrjUHMQVNCMsowGJGc1KkgQGSrJIhrhWKUnl2CYXQY2QCxz0h/WLzYvMnk0PKtWAlxwZWNKHpiLQWnz7tQYEiwhZ8cojgWIZhqppkvuDxNoMYyZq5CRxueaomYqXD+/XxkjeMU7SGB2Aqxs3Kbds2hixIoNGYNo4CZrFbeM8lfFyzgSEyjVcYgGe/68p8LuEik2rqQt/mz6iTivK383/Qn9eWUuxZAzw+R+wU+FnUHgOFALF5/laVR3NczVAwv+PxY783/Q4j1kuPjdSPn+8WICpouhU+Jmb92DZuVs4nlvRLxyUC41PMFvik5kbdomrtQFTZy3DZAnY01I/LaP1bwWErg5LRlgbxT3Oefu3Zh30Fp5VAqe8FphHF+GyRSBi0hsRnd6E8MwmRGY2I0YkPbcZJUXNCPSJwtxZS9WF5kXsW77Ni8wLS1B4QZmRMebv5T4Vk6leQsW4g7n/P4sF4UVnPRIvOMst+HoO9KkslCg1lxOdIgq/bNYClKeE95Sk6KDQoggkXTnxCD11HIsmi/UZL8o4eDimjZ2GaeNFISVgVwvHiRtHxR0qEPOcfgsk/A/0sQW6S3Ql1aIJEoMReFoDfeRdWVvD/0ZgVGfC9xlEL/3QxWhNVFBP0f5PLb7j5CyW7g9SbiyD+GFDJqqU7uQZSzB98Q/iPm3HLOnINlm74XxdV7+Q7E/IkXjkEGas26Es0FSxRKdOnjdoxse1fxkgT5+/RGPbE3RyC7XWLnQ2d6BLpLSqA2nFnUgVSSnqEGlDhgTM+fJ4RUMXmtqfquzSx7TOJ88Rk1Ghlh51zm/FDb8UBMVXIiqNkDSKi9WEspImVJQ04ubVeyobpHo3uXh94dCF2SLdhdF7P+NFltsKFDlyII2v01KaAzRLo0QbSGMamClgLh06f/p8zBQlXz1/GSwuntYWb9ArgPXSFBHOMck1N8OVjRvV4tWThomLJUH7jAlyrmJFxokSM7XM5XyopBq8hGTqJ0FCpTcqtED3dzWGMViUdphAT1BGKmuqxyj6+3ib02tpPQgP/0taFXYc/My+ogb7BGSeM+GmK8tORQNlGP7x14Hi3rFQVP67oZMwbsIcTJ2zAtOXb1IWYu6eE9jhHY6LTc/egmTlXRtM+1GC9tU/iqu1EtOnL1Qrzn9s+6cC8vTZC1Q3diG3ogMZJZ3IKnuCxoYneNWhSzeeCTDppd1IK+lCqkhKcReSBRZKogCTUNiOuHxxg0rbUCmf9T5Ynr94hdzyFoSm1Yk0wC4kGw4Si9CSWIRlCyB1KCpuRFV5E3IzS7Bp/c+aYht6dn1ut6mYKg6DcCo7FYO+uNYbcnDK4DLwswQYPefPmITKqstweZ4DiVzxUItBFmPu5NlYOXcxflmzRi1rqpb+4aQrLkhnWO2EUhfkicybV5WrNX3UOIFkDKaPn67K7RmsT5fz4wJwPE+6M/o5Mdimwpr+jl8Tvp4KSzj4G+n2qFT337WJWRwX4nwRwkIQCUF/n/MxouCS72VHxNhOh4RuF2u5WPSoQBFox0+eLwH8GsxYtVXcrr1YcOgcdvhF4mLjUyMgZypbMXnHUczYtFtztWYuhZPTh4+H6e2fAkhb51MUiQXILO1CdvlTBUamQTLKulFT342XAserzm60NndrYAhAhCKpuEMDo0jAKGhHbH4bovNaESGBdWhmIwJTa+VzmxV8pq2qsUNijDoECxjBafVGsQzOhEN2AxzFajjE5iE1vQC3rt8X10HcEVFaKhMvkHElEF34WB/h6zhwyLQv4w+6Croiskcd9L0WvDP2YJD+//l//mR0ySgsoDMFhGMiM8ZNU6UoG+cvQnN8kHF9Xoq+kBxvcx2uQot7yLlzA96njmLJ5GmYOmaKWul9svwGjouo85Rz53lS2dg70wrQ6n3sQCJ7df42CmHXUt2coDVGxVSEQ595SHiovJ8CY39CWOjS8jv43RRaE4LCOIh1YBxtnzBNgvhF6ySI34ZZPx3A/MMXsM0jBOdrO1Qgv/jiXUzduAfTV2zGtDnLsX79TwZt+fD2uwLS0f0cBZUdAkQ3sghG+RMlGQYw0kXSRFIFnIyyLmSWE4wuJAkcSbQYAkeCwBEnViO2UMAQ9yhSev9wwiEBd3BmAwLECngn18AroQK5ZY1qT7qkgnoECgxB6XKkyG2Kf0oNrLwSse/sXWw9dBErNuzEZOlluWQnVx1kaYjpspum8j5gWMGrFkYQpedccLWwm4BBaBhz0GfnvHBaEAKiLIg8Thi51wYHDrk3B2cjzhg3FWvmLcHmxctR4G7Ts9q7Em6vRtHutyeFqV2myhws4Xz2pMQhUzU3S6yIPrrOReBMlY1gEBDC8jGQ8FyVVRRhUoJuFiFhXECrokGvVflqKXAthiBEtKT8vt8KC100pn9pRThZjML58kZQxFqPFGs+ccZiTDOJT+h6rbllgSlbBA6JQ9S4iATrk+Q6FhYWGbT1w9rvAgiD69LaTunZe8DINEiGSEJBK1yl57+V3IBjyc04mNIG2+xWJBvgSBRJEEDiBI5YgSNGJEosR6QAEi6BdIjAEUQ4MurhS0BSauGeUAmbkFxct/LHVQsfnL1pi31Hr2GrmNUt2w9j/ZZfMEJ6QbpPXH6TIPQVQkK3Sq/G7REdlN7Wg8LejS4FXTJaDRWgG9wRKhMzWVQUZq2Y8tXdK6Ywp8l3cn1cAjJDguqpY6ZilrhJPyxcpgDJc7ZUbpZx3xCjGHakKk1Da0wAan2cUeBshWliQWZNks+hmzVmGsYJCP3VZVFR2bsTFPr+fZ/vT/geZR0NFvBvf5F4QAChddQsUk8at68lZWdBUCgEiIH+x1owXXiu/A5aE82902TWzHlqvge/i8WNo0bLfzB9CaYtWIvpyzZixootKlaZvmidsh5M93IQ0vzOA4PWflj7zYC0dz1DdplYjT5gpImV8IjKxwWXGOxwS8a2yCpsS27HjxlPsTXzGfaltCooEko6EC+WI65YrIa4VdFiOaIEqAixHM7h2bhh6YWTVx9j18ELSulXrP4Jixavkz9osfTsvRVfW59WE94fIi4Pl+pkANt3EWcKHyc8k+XiTaKSsScW5e+pc+Iotb5ggrgqcmSWigqipzrVc3IBqURMV7K3ZcaK2R767rQuXE+X5Ro8p1lT56ntCyaIizd19BTMnzIbGxevwKaFiyXOcFPTbHskVblWRilKUYtoc5ZhXYArJo0Yp6yQymYREEIg58Nz7tt7U9EYtPOcdWvya6DwtbQSBJy9NgGh0M3SxkM0pefnaBk8pnG1wJ5CaPi/aP+HVpBI60OwPsa6MPAnJASObh0B4fhJcVExoiKisGndZnWdh8lns5Bx/MS5mCRATJkuOjJ9EaZwJRXRCUK9asUGg+Z+WPtNgNQ0iaskIPQCQ6yBvU88frlkga1XbLHlYQC2uKdiS1g5Nsc1YUdCE+5lNCkQeuDoQIwRjjZEiOWwC0xVf46p22MKA8UUiP4AoIxmDZMoI2/rq5+biv46ft40sShTDaPerKMiMFzTli4Vs0+0OLytQ0NYeOHUQKII3Q+6UnS1TH31wQIqz18DUnpeOZ+JHAeZMAPLZy3A5qUrcWTDerRE+goIKQoEXbizFeuzdOFOto1B7kh4ZIbJIyeoqb7TxM1iKQsDXP2cTBVYFyqy6vUJtTzPLNL7FJVKTwVnfEHY9TiE1pGWgt/TX9aPn8mORk//mmbEaJFoVRiv8T/j6Dpfw9e/D1gqN4HjOTDuYaLgx807DJoIFOTm4tzJsxg/iotbaFXBqqpBOgP+Dn4+v4eucVdXt+Fdv94+CRCOVJRKIMSgW4eDrpR3aAb2H7qMTTtPYePBq2pLgfU3nLD+YSB2OMfjQXy5uE9iOUo7ES8gxQkgCTnVyCyoQGp2MRLiU5ESHYvM6EjkxIRh4RzxLd8Bhq7YptIfAAyIp0svyx6WrzHum2GQ/t5D6fvZXDWdsLAX5h+trTRCN0susnJDWNatDSQSEvaaaqDQUCquzp2fIecxQS7i9HHT1W60a+cvxVYBxP70MRVjmMLA/Uj6k6YQT9zZtxtTmeoV6zFj4iwFtCkgdGto9TSXqreysX5MpVbldXw9X9MfKFRYuk/8TXQbCTstgaomENeGv5eWlKD9mjXi5xNYKqppelfLDPaUv6sYRx7ToTGtCuB9fqdWPMoM11C1Yahp62hrg4OVDZbOXybnro3KqwUcCAz/F5G62lrDq3+9fTQgHMcrqm43WgxKivT+129YY6MESet/2Il1m37B2m3HsHbveRy86QDb0EzEF4nFEDASiloRl9eA6OxqpGbkoSI5Ek/Ev2a+Xy+t0CXAxVYA0ZSrP0vRV6mNSs/nRFjSQX9f7dgqz9O14WYz2o5LpqLtvkTpDxxaFuV2KZeLLozBrZKLyX06mL5lrEPLQXeEmS4qKy+qDjjPXe3eJBaECs1daVdIB0D3avPCpciX+EPthSgAcM1fo8hjpvefitSLBVk9YxamjxHffsREFahPFmvH71SKb1AGAkJLwZ68rwJTYVWWa5jWu7+rF+drtORDzyIOpuU2hIc9O3vq91mjXxNOPCOoPH8qNr9Td8uY6OBv4jlS2TVXS1smddaMBUhPf3uUnAPOGSmpOH/qvLp+Kk4S2fTDx5WdfDQgJbU9cNBqJOW34DDjg5VbsW75ZqyR4OjnXSdhZuGF4ORyJEpskV3Wgsq6NtRUVKO+MA9Pm2vxtKkGbRWlaCovRV1pCWrys9BcnIWO0gx0ie/dWZSMTulFb58++V4wqMw9Cq4pPPfhoyISCK6CqPblk8fnzVio9vKbIRZl3nRtnz9dTLct06EhTIxPVK8vSsaVFRUgonjDpNfjwCJlONOOAgqzY8odpLUwEf38CSn3FGR6d/mcJVhnWEvrwcF9aORWb5kxalfdJ7nx6mgqfIzbLnD7Bb+r59So+vTREzF+6BhMHj1VzpNxkxZjUJnYczJVynoqZfEE7v5cLkJBV0S9Xt7H99Ml0UFhD07odUB0F8toSUT4HN0aWiP1HX0g+1ThORB6ffyJ30uhm6VbEcYjzGz9svcQmpp6ln4ybazmLS0uQXpqOl686D088GvtowCpaWZ6ttsIR7q4WK6+CTjwy1mcO2+Ox/YBCEkqQ7K8Jklik0TGJ4U1KKpoRFJeLYrTU5WleFGbi6diNTryE9CaEYWGpFDUpUWjLjcVZelJyIsORW6gD6oDPVRAevfI4V5g6L28DgWV2qjsAgGPXGxalYSPFD+Zu8PKbcLCHV+5Wvs08f8njdHW21UbXwo4M2mt5DUEiyuVcEkfXWg9uLkO45kh349SW6CpLdFEKQgJ4xZTKEzB0OHgeXEb5mWGtX2ZvTq1eRNaEkJUloqBuAZBFNqTw9CRGqGg4Xx27rbLbeBaYwNx/Ie1WDJ1tio7GTdwOMZJnMXzJSCMjZS/L+dExVIWRHp3XZi+7deaiCISEPayfK8CRXp0vpa3mWzQA/UBAgnjK6a4lSWRI+MJvo8KPUnihV8bdP0U4bnw/AkifxvdMbp9f1VLog4TKzYFqSlpBm39fdoHA1Lf0oV0cZEIBsc1CEeakm6kiqQYxBSOBBHGGvESa8SK1GYl9apSfZc8rcxEeZQ/MsIikBUTi/qUeDw+c1opWb9gCBQceFNzLSgztSMXdJs0Wi60KBCViKKyR6JMs6fMwUyBYczQsQKRBM2EiD2xgERlU0cRBZk8x8B6jLx/8HcjxHqMxndfDZLPGocfl6/GPIGL8QgzXwzmp8nF1HePfRuQhVgyYz5+Wr4KdtcuiKXUFr5Wswk53sHdbsszFTB0qTrSo9AmHUibxCcEp8jVGj/Mmotl0+dg3sQZmDJSQB08RtVjMYtFt0plkETRmXbVgSAE9P0ZpFMY9PZSPhH2/rQ2Kvskbg0/g3BQ6QcPkJ5b4pCv/qYVLiorYiKMubjzFV+rJTQECrGm/Y0j/R6w6KKgkevDZAw7gGmT5/ym+R99268C8vr1GxRLQJ6Q32y0GjocBKMvHASDEq/g6FCBOOGIKe5AdH4TUtPzUZBfpLIORdnZIlkojQlGa3okmuKDUOnjiEove5XGbAj1RH10AMrSElBRkIdQ/yAc+eWIWl6HPT5BodLpcLB3Nu4bbhCuVUUXhGAQFF04+WiywEMZNmA4JrFwcOw0BY8urHOaPEbeKxdgzLAJmDluCvb9sB7W504hQxSVYxKtcYFoiwtClpcDnG5dg9npU7h28gRuyvHO+bO4f/E8LK9dhut9M4Q6WCBd4odGsQjaKHme2p+w3x1vdWDKM1TKtzMzGjVh3rA6fhgb5i3C8ulzVV3WdDnn8cM5HXcsuKcJYyI1ek+/XSwJfXtThaLLxMwT3SgC0dea8L7uduljIKwQZhJiwNesj/peANGtSI9wH0V+NzfwYbavrzVVrqdB+oPG9Bx+i/A883LevR3bx7b3AsIK29yKdiQWtBqtRn9wvGU1VJaqDxwSi0SJREpAHyESXtgm0oqwpEI8rchSloWu14u6PC1gl/v63Ajef16Tg5JIX1QlxSE5IgI2j6ywfvk65UKx55/K6lYJVFVWR4JWHpkp4mDcZFF+plV7ZKIKbgkJhQo25NvBcnu82uWWMnXsVOUGXTh4AN6PzVEurg0zSyr9qsYlUtBdkIj2nDi0ievTJnFCq0iLxArtBcl4UpqO55wdSCWnhdAVX8GQg+fyWLfEW22FqWjOT0ZDbgpqs1NQkZ6IopQEZCfEITUhEdHR8QgKDIdrYDSOXLXB6oUrsWH+IqyYOQ8LJkvAP26a/B4JxgmGxEV0dej2MMjl4GBfAEyFsNCy9BdcK1DE4tDtUoOdDNS/G4lvBJDvvx1hBINbw+nbw3HtLmbTaD11y6kLKwjoctKq9oXm9wSGbl5kxK+vYPOh7Z2AsPo2q7xdWQ0C8i6XimD0hYNgUGKMcHT0gUPAEAktaEFsYqZW1m0AgTPq1H590rs+k96zPS8ezVnRaJVelwNntWJZUi3vSk++AXdv3Iavqzse3bmPjSt/MCi7pvQEgDBMMpHJFIGF01d1MT4/YgKWTJuBSwd+QaDtQ1TEB6NTFL2rOAMdRaLIBWlyHglozoxHY0acCM9LXKD8VDnHFAEjRZQ9E80lecjKyUdyYSVSiypRXF6FnJJqpFQ0IbO2HWlyTCmskueqkV/Xjtz6DmTWtKFM4ruy6gZU1LeitKkTLv5xWPPTVWzddQ3nLj7Cuo3HMXLCViybOhPrxYKsmGECiPymMWI9mE1jqf23EsAyVuAYw4eOnJuKUVFFafleumlMQnDA8/tvhuO7vw80QkHLQfeLMvT70WqbaqbV9TjRVPQYshc4JtAwufFbgaHV3LVtNyrKPn43qf5av4BwU/XMMoFDACiv7lCVtn3hSH4LjD4ulQjBoEQa4TBYDQMcISLBec1ITstBYVYGGhmYCght4m5RePtJvpb2bBU/vMbfGXX+LkjycIdHUCK27TujgFgirtS185fh6eQCRys7nDhwDGsXr1Iz8KaMnoypSqaYyGRME1k1ez5O7/wZHg/uoDA2DI05yaL0SWhKi0NLukhKFJoTQ9EucQCtB8s+VIxAqyDyslKLHXq5RmIhuuV13RV56K4pw6v2JrzpbsfLrjY86ZTj027g5XPg1UvgzWstb95Pe/78ORavOoYpcw/i5Jn7CA9PwNljF7Bx/kL8MFdcLAFkvgAyXQFCF1CCcgGCMxdpRegCMYBlbKBcrT4ZrPeJDgeVVe/tGXSPk+9hOnvi8PG4v3MHbm/bht2Ll2Hh+KkYJXHZcLFgI+T7x8o14eAlM3YqaUIxxIsqS0h5BzQERv/OXsDo52U4x3cJ09vMMDIOOnv8DBrqPm5f9L7tLUCeGeDgAGBLUzdqqltUzdT74ejjUr0DDoLRC478FgRJbBMokATkNiE6IVMgiVDLbTKDUx0TiOpgd1T7OqLOzxlVfi4IC4qCa0o1XJKr4ZxchWsOIViwYI3RErBH3bpmk4LkyplLOHf0NE7sO4KDO3/BkR178PDiZdhcu44wm8cojgpGnYBAq9CeFauNM4gLxQBZh0CBQAh06QODiiH0eIJC62cQAtWWHo2m1Bi0FuXgzZMOvHrSCbx4JoC8kACvf0gY970U9zY6JhVBwXEoyS9EZXIMst1ssHHeQqybuxBLJQaZO0kAEddStyAMkqnAzO5oo9XaYCU31mFalsH7r4FiCocpILoCc8ows3fjho6D5e6dyLp9HVlm15F05Txc9u/FBYnRNs6aj6nixk4SoJgI4byXRRIfLpSOjHGinkRh7GiEZtqCt4ChW2YKy4dYFrqEzKrp92fJZ9pb28r/+Wl7hPQChHMtMsvawCrbjpZuvOjoQnZBDWLy25AiICSXifSFw5Cl+hg4gvuBg+KX3YAHMUU44JOMFf45mB5Ri00B2XDzCUZUSBQ84wrhnlYDt9QauKdWIyirCuHZlfBKKcexm7aYN2eZZh1YBi7WY9bYKdi2YhUeXziNdIGrW5T/LYXvq/T9iYob+oOhBwjj/A1OeDKKvjlnIV7K65/XFOBZYyW6GmrwWizJ6xfPhZEXwsgrdQG5SX5nZzfa2jrR2tqB6opKVGUlo7swRaV7m2MCsHnuPKyevUDcwTmYM3GmmlnIOEy3IDogHHE2ijzG0g7WihEWDvAx68Zg3FS5jIrXDxxUWiowx5M4AMsExgSJ3YKuX0SjdGS1wV4od7dHvoW5gib1+mXYHz2GE4fPYMv8JSqhwGwfd+biYnoUzodhIkVBYwCmLyw6mKaWpS8opr+BnQBnJPaNqzas3YzcnPfvhttfMwLCkUcO6KUUd6KiphNP5SJ1NoublVOBsOwmxBd1CBidHwSHijf6haP1LTgCBQzXxFKccgrHEutwTHbPwOSgMkyJrMOUqAY51uNydAk80msFDooGSFpxFUorq1AiSlRUXoH4vHLYxZbg9GVznNq1E/6P76IuLfJXLUAv5e8LQD8gKDGdzGQKQ2OPmM4INIphk86X8h1PStLRmZ+C+sRINOVl4/mTp3j69JmS9tY2NJfmoUNiIGaxKBwHYbbs3sE9KkBfyHGQCTNUEsIUEGZxOO1WBdYmoh6nSJzC+5yUxNVYGLNwNUI1kGgAxhQOKqYpHCpjKEpOpWaGcP/adXhOt1P+z+cVWejKS0RDpD9KnKyQY34LIRa2CLW0Q5oA4330EK5v/RG7lq5QFnCxfA4X1KMsFmB0WDTLosMi321qVQygvMv1IiDcKo7jJKaAaDIbt2/dNW7w+SHNCEiJuFLRuZrE5bWguKJF3KtGpGUWqzkWnJvBwkJVLvKJcPR1q+zCMrH33F3M3HYMk07ex8S7vpjklIwp/sWYElaNeRHVOB9fBc/0OiMghMNVJLFAA6S4rAz5GRxgjEdtegyelqSZuEf9gPEuEPpCYAShPxh6A6FgeAsIJh30LJyWgFCA8H3yWfw+ZreeiRvWLtahzMsJVVEhqM1MUlkwFeuIwmnHTHTnJqi0cmWgG9bNmqN65Jnjp2OKDoj4/ZqL9TYgOhh9hWlcbQaktjwoha6ZKqERBeMgKCdisZpAlchwQHWyWC6xBKqKWKzXqqkz0RAVoH6LEvnPn5XL+UrM1pIUhiIXWwS6+yPmprhit66KXEO2WJjMO9cRcP40zPftwd7V67B05gK14PdSg2XRXbEeq9K/69XXmnDchoWVXHOrr4XUZfWK9W/VcL2rGQFp7XiC6MxqeMdXwjepBj4innLbLbIArjGlasISy9E1MD4MjvCi/uGwD8/Chu0HMVb8WbWU5KodGLv7AsZfsMHkB4GY75KCo5ElcBYQTOHQrYdrUjmCo9NQqTJJMT3BM8UAR79gvCNW6GUR+gOhP+vQHxB6WrqvGF6j3m+AQ1kuKpScM8c5mlLC0JIRZTz3HsgJSZZ6TUu0P1qi/BH24CbmTpim3EiO43AhOQIyUgBhJotjF++DQwdDCaEyCAcGOUjIygBaIy6UPWrYBIwWGTlkHEYOHovRchw7dLzKFDILuHLKTBRY3kOXAEwLwvN9ThFInnGwU9zDJFdnhDh7oMDqPnLu3kT2nRvIvXcLBY/NUWL3GBWutihwtIT7xTM4ummLGkjlkki0Koxb6H4xVunrevUHCefpqLKUr4fJbx/bLyAUjtXcu22O579iTd4K0ju7nyK/vBExmZVwjy6CTVgRLAOz1UQllqHHCggfEnPocFAUHCJBeU04duURRkswPXzIWAyXP36E9E4jZ63E6LW7sPjsQ5z3TVUweGbU9bYcAkWgQJGVGI+mrDjN9dChUPIBYPQXM/QCQodAlJkKrVsBIwSmYgLA+4SvNbUcch48L6X4okQstWlON7iCPF/9/BUkvUHhpp5NYV5ojvCBxfFDKtZiKnv8iEkYKzGFXjj5PkDeBYcOiKrJEqGiseaM9WcspZ8plkNlpabPw2yW2I9jhnAS1s2YI0H6NZS52eFpcaoCQ4EiokPSEB+CUJ8glIb7SaziiVKBocj6AYptH6FMblfKe6u8HFHj64xaf1eUeNjB8tgh6QCmYK64cbo1YTZMxUDvgISKr36DWD+W2Az8avA7rYguG9ZsQn5OjkH7325vAWLa1AqErZ0ISy6CS1yFBMWNiCpsU5D0haNnnKN/OAJzG/HT3pMaGCYyQgK9FVt+wR3vOHgJFF4Z9T1wpFYhIDoDmYkJaM4WKHoBIWJUnn6gUGD0sRZvQWEKRDFeK6XmUjulJqKP0ZgovVH4HF9vEHXf8JwBLPX58l38blM4Ojm+kxauFEhZE/3cTQDpK8qKRPqp+SCNIZ64tGObytyNk96cgLA+jJWwdLN6AWICyfsAoYvWHyAs1GQ9Gqf2snxnwYwFqp5sucQOLHnZKzHFufU/wOncSZSLlaPbqOISEQVJaRriPTyQHRGCJ+I+dmREo1F+B2Go8REoCIafC+oD3FAf5IGGYA9YHz+sEi6TRnJcawKmjpuG+WJFCIluSfrGJCzr5+/jubOUZuiAEeo+y2e0lSJZi/Z2BcF0gd/6/iO87KeQ8b2A6K29oxuWIXnwTK5BSG4zogQCfQDQFI5Iebz/oLwZW3ceM0Ixcth4zJm3EnuOX4NlUCp8shrgnVmvxEsshm9sDtISk1Cf2ddS9PSmRsUxgaKXtTABo3eGqTcUvYBoLesjBkCMo/qG2yLGhd0M93vD0cdq8Dx4fnK+T0tSFRjdRcnGxEAvQPqK/jsNwlR0c5i3gqRe4pHjmzeLAml1YqPEgtCKUCmYvaKr0b8V4Wt6w9EfIGMMgLAIkhXNLKnnfoyc5jtvqraT1irDXvEsvFwzb7HER/OQZvdQrEmawMEEAyHJQK6vB3LjYhXkT1mUKTEKK5Nb44LQHOkrltEbTaFe6lgv8P8wWxSfxaSjCAnLhCZg1JAxqjOYLu6RaUyiWxFmrpjmZTEjFZ+3B3w1VI0FqbJ5+R84TqJPFOs7gLp90zZUlpYatF5rHwQIW2BiIeyjS+ErAXuYxBJRAoQRjl+xHv5Zddhz7CoOnbuDGzZ+cIkthF92I3yzG+ArcPhkCRxJJYiLT0VlqvyJpekfBgXFoGQ9UBjA6GstelkKKjWBMIWi3OS2ARij9AbCVHrgMQHjHVajJT0C7blxPeerw2Eqpr+tPyEkeQJJuI+ChDVrP0oPzkJM1osxDhnGLQQEECoFU7pq4Tq5rad8dWD6QqLcE4oCRNwUUSYG6iyCpBVhESen93JsgxmsBeJuLZPAes38ZdiweCU2LVmJ1XMWYt+Spaj0dtRcLrGQlCJfVzRXaDv3GqcSF6Wora7pOrbFB6sYi3syelw8pVaRnCVuHAd0WQHBlDJjnzEiakBSOlrl+plYEQ5mqhozg1vFAdJvJGBXdWPfaYtk6yX576ouoHXy9/AyaP1HANLY0o7HwbkSIFchUJQ7XKwDIdHhoPUI72U9NDj6jnf4U3IaNUAEnJD4LOQlyZ8kPSN7mx4wRN5jLTQlMwVDsxZGMIzWQodCFFhXeCMIBjDaTO/zee11/QFhKu8FwxiI56BDoGjJiFTnbjxfAyCm0gsUiv57+xEqFxWKkGQ6SFwnCsN6LFoRYzZLuVkmU4BFSVT1rWEehw6OsjQCDxWIMYwGiLhsomC0IoREtyKcHjB9Aq3IbMwjJNPmYpGAsmSGCI/T5qg0tNn2H9Eoyk5I6GKVigvVXl+rBmJ1ONSUYrEk3dmxamC4LSEY1YGu2CDWg5XKLOefYbAiLB0aJ57HqCHj1CZChITTDoYPHgNOiNLdLKXoVH4RVhRwJiR/MzuAD5n5qMlsXD51Fi8kgP9gQNjCU4tgG1UKLwmag8XVYsGhqWvVn/VQgHC8QwJ0BYjA4Z9WgcSEVNSkxaiVOtTKHQZzbGo13g2GDgVFA6OXG0VFpf/fy1qYQtBXDFCI4IPAMMDxjjhDKbuc75PiFOVOPZXfaDznt4S/pwcSXT4EliecfituCSGZNW6KyjKN4CrzouRqlqOItkWaqWul3SY8PNJqUHm01xi2UTM+x5l8tCQS4wgoLCvnUqecBsDKZxZ1zpwgcQlFlHn2+KmYK8f5E6dhyeQZCLh8VpXpE4iqIE+01FYbCz5N59o/yU3QqieSw2C252csmjJLPsMAiATqpoAwi0ZAWPfF+i/Wg3Fas76Mk57NonulSm0EEuVWjZ6uasp4NM6PEavI+wzke7lcclw6fzliQkM/DpCnz57DOiQLjvHl8JF4IZhrVilINOuhA9LfmAcHBIMl2M9OSlSVrxoYhuVsTOFQVuPXwDC1FjoYurUQEeV9TUV+LxialdClPxD6itGd0i0Gv7MfMPgbmnV3Sp2vQfTzf6fwN/ZA8hYo+v9hEP5P7YkhalLZqplzlPvBYJ1WhEquFF25UwRDA0FP5dJKMNtDN4RBLHtXU9dDjSuIsumDhhx7oM+vzYrsmWLAkfHFEossnbVIuVtcBG/F7IVYNmOuiiNCb15CZ3qUmvzWVF39FhxqinGeACJWJPLhLSyZMhMLJs00uFgCoVgQppM1QCYYABmr6q0IiKom/m6kKPoUdc6EgJ3DYLGOtIo9v5ULRozDdwLToIGj1Jx9Do6OF9hXLF2LE0dOwd7SFvFRMaivqVEJKraPAoStrLoRj8Py4SKuFuOHEIGAUJi6VyGmgIjliEjOQ3FyHLrFjaL/qeBgObgCpDccvayGQTGMrlS/FkMHQ7MWr5XC9wcEpTcUvwkM+W51LjwvXXnlvDvEp24Sq8FBsw8Ho6+8AxCKCSAUKhkzWtvF7+cuVCwUZI/PGII9J10l3UooZZH7psKelpBoc9i11U7Ys7JXZcEfYTFCIr4+fX6CQl+do91Mv3IEXN+LkZuWqt19Fy7HWjmukpjk2MaN8BNr0lRV3g8cieBKLfm+jlgzgwOgMxQcmvVgDEJAtOkKepyluZK0ktqaALRyqsyGFlB+J11MfUlYIxzy/IABIzBYXNFvvh2Gr74ejMePLNHZ2WnQ7P7bRwPCFpNdDsvIYrgkCySZDco60Goo66EDIpYjJjkXFSmxyhVQy9kwOJMgrcd6vB8OpSS60nwoGEY45L6pKEXnUbvdHwh9pceV+nUwmK5tTAlFF7NT6nwN592ffKg1MfwH7wOE/x2XCzq2/gdtTERExQrjZyq3gyst0n2gwuvL8DDlyd5TdzGY/uRt3e3QHteeUyueiGXh5+ig6JCo8pPpmjXhTMlFs7Sykb6gLJ05H0slRrm0by+6BAYjHHStMmPQEBOAvIRYcc+mYo7BcnDFyZkGC8JZk6wgHjt0nLIgdCU5cMm0tjZJjIBoMLAzUFm44VzyZyp+WLsFN67fxqpV6zFE3j9Mgn0CcuLkWYHj1zd2/SRAaH58k4r//+2diXcVRRbG8yep44YKKGsCgiAiOLgcFRj1uKAyIkYEFxx13BAdR8VxXM4BAREVRYiACUtIwk5AEZWd5CV5W0KCS5w797tVt151v+63hHBw5tjnfOdl6devqt/363ururqKPtj8o0SSFTtOcPuiXSIGIkr9jm/pGIOBk2AaZbZh5sOBtCrc3tAv3hrDmcXBEQ1GMGooBDkYfEWB4Ev2KwKGMyqXGeVPN2+WlAp/yxk8JI0mYUXtK4oARM+Pyl5QMo3r6Y2HZ5qh/dw2wFJvmKAORpa8HHm1FVIoCNAgpUKvD9IrpCaACH/TfNzl5Ky8lMuLJvmgmIhy04QpdAuD8udrJtGkq7kxzw36t+c9Ko8OAwz0XrXUfk7pY2aJvKdmPSJRYzxDMo7bHpi1xY8eeOwZKSTGnQEOrK6FZ/Cll43LjyUg7rnzfnr9H2/Spk3cpunMrSx2990P0MWXXEnXMsB7Shxmgq1PgGD7tbeXvth+iJY2HqUlWw/T53taaeO2/XR0O57haDJXCcAhgCgcNq0qF44oMJIKRpw8s1vzF5KDogww0Ahv27ZeXqXcztwhRYGhitofsufBwQHpObJlUCHHX7PgWRl6gqcoJ8jEFJPEvDCz3mUuJB8cA09ODhi82p/R02Maxnj+HsAgsjCYDI35fIaGXzFua1zlOBpfOV7Gb2EE8sa3Fko39ZE1KyjLDXfdOtNpeubRudLgRz2wSJB59Nl0MRtdQ1ePHEe3crth9sxqevn5BbTyo5W0j03/0+nT9ki5LZVMSip1AadUzzzzQlmTxmHrMyDYMDx+7Y5DtPyrJjq4dRN1c2NLoobNMfPhQEpl4WAwSoZD7mEwGLFwBGHImd38HgWEKgyG6ZEqDAbSQnTbJtF1y39TMztp+V09VHw8Hw4ovK/IHCcSDFsOFc4h7iUcWfUhTRhWJcNP8MgxTKp3m8NRpC8SeFiIMIg0WFVX0jFMKcTtFtxfQJewiK/yuNJj3ZJcz5cRzI6777s/+ZC6s9HrdXR3ddL+PXtoU20d1Xy5VlS3/mva0bSdjh4+TKd7euye8VtjQxPdd+9MGjhwBF3CjfK58+bb/5S3nREgpzsz1N7cRF36sFFROHLtjYI9VTAODMpG7XVRQ+FAWmVejbnV4J7R9fcQDA4KSPfTaGG7aqPAkDFRFowerldCo4Zfbld+WwdVGAgfEn8/p9yx8uAIgSHiciFS4w70E9OmmpydG7Zjca8CV3QGRaY8LSGKlC1EEk+jOMXRKDOahWlW8QpIhnLuPwTdtLjZh5EUnG411DdYJ/XfdpqjyKOPzKOLuEE+aHAlXYF7J5x6trdHz5lVbOsTIL+c7qHUd3spy7kkuugCcDgwbG9VRGO8MBwmagTgCAMixvZNbl+dLAQ+EAEoIC+NEjBgXA+M4woGl/mImWU9vdcMLJSyq4GtIuFQBQCxitqvUORwYPhwmHOKC1B6Sw1tXbRQRvliDBNyd8z6jnXaEUUk1YoyeT9K2in4mWEZxlCYwZPDpSE9FN3JaD+w0Ms2GLOwMCwfLVthXVX+hofMspkMZVJpaku00YnjLbR//wGaP/8FGjJ0jLQ5LvjTFfTKK29QkgHp5kZ596lT9MvPpU8eVxYgv/3WS6lDByi1a6P0QMhUmQcYDAtHbHujCBxiMDGOwvG9hcMDJCA2N7+KyfXnMCBO3t8Viog0yhjTGNGZT8DYLXeD27avlycS/TL7KguQqH1KgiMIBs4rzi/KiHYI5ux9/t675Vl1NNgxyhfzeuFZDpn2tB9SrTghBUPqhScV0d2K7mPpZrZdzbgrj6UZZBgIyiPAcuQZYdoT1bMeo/ff+YC2N26jzkzWOi64YVbEtkQ7HT50jA5++z39cPAQnTzRRolEB4PSST09p2UBV2zoSNq9u5kWL15G6VSGWk4yQLxvMpkVQE51dbt9C20lA5JtOUbtO7mdgWkwNWr0FQ4fEDUIzOrBIYCoAIr3M0wuigXEk+6D97pokQPDmdEDQ0zHdUBdsvvqqWOX6aFy5g2pIBxFVQoYWjYLhwPDwIGy4jvAA1VHVi2l+268ma4fzVdzzveHDRwpbQFMxwND9icggALdwIMRKdC9iugweLTMqYVXmcmRP3fUCG+WRUBqYRUxKBCA0b8B5rum30vvvP2ezKG2b99Bqq1toM2bd9APPxyjzmzhexeFNjzr396RkYVjOzuLN9iLAtLDDam2PQ0ycZnOD+tSKkjAYAVuAPIXBzj0SmevfLFwaORIcFoFQCS9YjOrqeVnmNu85gMSI7xf3udBYa/gakaTRnH57JUYdRDQuV7tO2upi+vozBuhsw+HB4bC64Eh5WWQcf4xRSl6h/YueYemT7xB1j/EcJDhbFykMxguIjcA2dhRhi9V6NUCAJiVHUNWdDkFAYKBwf+j3heWg8aTSc/MJNW4rzG68joGo9Hd2e6vLZPtpnS6OGixgPzWy6Qd2EupHbV28mSkVMH2Ri5q9AEOGEKN0qrRA2I4BBQ2tVzxrcH1dwtLHiT2dweSQuG1LcSM1nzGeGw4lFeihYEC9eriC0Fix9fyTIMzb4QEDqhsQGLA0HOk5bNlFAEMB7EHBs6/BVrKzukvHqravfhfNPW6yTSharxMqIfZITFOC8NPkAbhRmCpRlZhf9x1xwQQuGMtQ1SGBIeo9FU4zuWXYpkFXdrACENlVn+x1rqy/7Z0pouSqdx9krgtEpDORAsltjEY+7ZKF2JhOAAGC18cm81140JxcEBiLDaL5OXWxDCzmNoIBhf5gHiQOOnfo6BgM6oJTbTI5e3GYHboA9cL9cMUqCm+EmsZAyb2fj9bcOSDYSEuBIaFQ8R1ACSIJPuXvkt3TppC4yvHcYN9rMzfi3FaGOUKM8pkDWzy8Dy9YcH86MbFRA8Y0IjoIXPwniEUEKIFpibSlXPDwgjkZDJlndk/G9oeibY0dXcXn7whAEgvN4ISzTsovbNOxse4lEob4/gCBAwfDoBRAhw+INYcxmBsGgXElwwpsXfPA5CEZP/v3mdN6MynplOjwWBcdjGVhQIXAETJJOqt3bdh2TK7cqtKBsTs747jH9uenwAcfjsjDww+/z4YuGhpXSD+ztBoBySHPl1MD916m1nsk9skMs8wRxD0LmFGE4x2RfsB0SAKFKRkgGkAw4GGN1IpRIzwfuUKx8DKW1FgIIpAmAO4+pF51p39t3UkM5TJFB9mgs0B0tXeSq2NG2Rsvr8eRXTUKA2OyEY5ZE2SZzA/mkRBIjJ/z+1n3+sbT83GZRGTcTldCvXd9gAU3c318mRbhttY2D9QTl96fJTZV0FA7P/tvu4YesxiYEjUCEaMQLTA92JnnpSFdvB9Idrzd4cLHIaPo2erZc0Ken7GfdwewWTc3E7AXL4MCbph0YYwSxhw2nSZeTwV5gUsSKcwNRD2ARxoY5xp1MD7rxxUySBERwwI06biM++Yfg91dCStQ/tnO92DqZV+tr8V3wSQNixe07S+vJRK4QAYPhxoUNov3MEBRZgt0mBhSMLyzecbTo2mUHDZ1Fgov0xhynUSKPgiIOtuAAxuY3WymQJlVUWU2ZVbpRBomXzZfdx7/ePZzzBl9uBwYOTKHwWGQCFg2O8KUAgYBg58l6gjerYwHB5a8vTjJHP5cqqFtU4wngkjX2FGnaoUyxrI04gMxqUXDpbogq7a/ooaAA6L3oShQMTA5+OzrxkziZYvW9Gvyxj0das4sX2zrEHh4AiBYVIqgKFwWDDwRQocCkYQjkD0iDFb0GRq/Dh5ZvNM5gxWMIUCFGwYjhaAAukH8vQULgrfNUWXN6bMgXJDPhC2jCr3Hv84Vrl5pGzZLdQODJxvnPcoMLxoEYZCMgDUE7IDAjELikJS99ZCmjSKIwSnWpho+iqMgOV0C9N1Slpz/hUCBnqoMFwccPjrBPZVWLdEwUCEAAwX8SuebsQz44AUyzK89uqbgUGG53qrQNegpFQWDB8OP6UKRI1y4YB8g/jmYfmmyjMXpO+zxwpAAWN5V1tnJK6PmMdGC6RRgAKPdiL1SDZ8JRMoBMtdPOpBUeUNK1Bu72fMQOjAkHoo2IAjAgx8F3lg5EMhQPB3KUJ0tMLFAM97o2dLIdm37D2aNnEyjWDTIooM5DYGZm2/+PzLpV1iGvDoZq2S+xhRhi9VSKkAG1IqeS6eQZBn4yH8zEL6hmljd+3aY235+9kqcML9G35hMIJRIw4OlmeyooCUKvteHM+YyRpKrrZxYOABHIBhUowgGLWUZjCSTeukLtHljymzmt4qFgqV/54TRgIHhPpIPRQOgGHqIWB4cBgw/GgRAYUDYrNESBWGlQMQRBGkWvJ4roXk+OrlVD1tujyddxmnPZecN8DBkXvoyDxkJb1WQ6NnAikkpFS6djyOGXzk1wgR6i/T7qFE4sxmYT9bW4VJoSwQASjiwCgUOUIG86VGi1JoX3csC0QuBTFQ+IYyqZTX8A6lUgIGGwRLLLdt/IKS28x6gA5yV5eI8ofL6QMQJ8AQ+tsvEACx47twf0XrUwoY2ujOgeFBEYIhIL4wqLJNG2SSh44NnzlIoEWPVdPIiwbI46tItXww8CrGZsHUeNXGerGuYeyDhXbwHjmedxwVesQemT2XekoYnXuutgoDgoVBFYIi30xhU/nyDFaC5Gqq79Xj2s/MA0LNhHsXvpmQekg6BTiMafyokaqvoSOrl1Jmd51XP69e+rm2HIEylguIE+7Wmzv2eXDYegUgLweMKCg8GERcd5VeJDBrSGrTlxJJ2mpW0ol1qyh5oJkSR4/QXbffKVMGoWdrsB064htbja4mB0C4uRe+2YgIgzvgiEbm/QCN0zj7Pnkv/4z7Hy+9uPB30RAvtFUoACoTITwg8qBQKRBhGdMHTObJ7edFBwECpoFxHQw2ooX7/FVspgAcbCSNHFj0sp2NkNjwKR1e+QHVL5xP2ebNctzgRcDWVetkyxYosw+ID0nU3wBEi5UCwv9Hm0Pnq8VnYt4vFzX8ujg4UB8DvN/g1hQqEgofBgeFr1rT7cvnpbWBI+rxI4F1SXDzbGPdJqrmKzqe0DOQmCgSJYUG6Rca1wAF90zkJqTcW+H3IgqxXFrFAjx4evHDJcvtJ/++twpn1KKyplaDF5RGBpX9O44DkwgQxqi5qOAZJmwaMY41j/5uzdTFxkmjp4avju2cQrTVcp5t56/FMxKHP18i+0anjnpRsHX0yh8LSEBBMHpbDvAr5MHBx8JctVpnU18P+DgwoiJGGIw8GBiCsDiCQu1og+zjz8wUvyuNiQzWrvmKJl9/O0eC4Wx2c9VXyUQIMD8gYdMrLGZZ6CtzYAyeQoOGTqUhVXfTiDEzaPjV/DpqKr28YBEdP3aS2x1tMhDxg8Wr6aln36V7Zi6gm6bOp4k3zqG5T71pS3NutwqYIGDisyE2n4NCgcgziJokv+vSRQb+wjN8FdRXLMuWhQlgEDYBpsDBGhpokGI6y0TdKvkMB2AUJD4g7gLgARIHiRc1AEYADoATSqkkauDzI8HgOvcFDIUAsiAgSqiyfH4SW2oo9R3X4af8x1F7f+2lZjboipUb6NV/fkRPP/c+zX/2PXrm7/+mCRNn0MChnHYNuY2mT59N8596TkbdAgq0QyD0cuF3RAbc9b7wvCscHAaQ22jY6Jk09oYnRaMnPkaV42bTqAlzaNCwO2j4mJl0+VXTqPLaaho+9mEaPfkJGnPzczR8yt/ohbc+saU8t5sAEiUDzRmCoxHDgWHNYY3heptCjU6YAcbHpGNpNn260QimENPw/jCSMxPew8ZRSJKIJFu+NJ/FhoQpXUeEgyQKEJYte9Q5EfmAaNRotZKoATg0amDiZq+tYcHIjxoKBkvPgbYvikKhMOSU5mjaWs/n7PBB+k+BZx4ef3oRVV33GI2aOJeuZgMPHzuLf59DI8fPpvtnvkCbNjUF2ghYN3HVZ6vppilTDSSDzNRBgERW10VDXwHhvw247Hq6qnIGVU14VMAYwUDcMm0+vbRwCX2xupbWra+njz5eRw9Vv0ajr6+mEZOfpBG3vkhVD7xPW3b231LOZ7JVBK6KYTNYlQWLpmIODttTgysnjOF6mnLGzuKLhwnE/BjqstUYSIdReBK4IGl7ADI+FpvKAPI1Jbesofata40RYcgwJGFAYtohRqFzoWBISqURwwp/z4saXG/+rPh0youQcoHIB0Og8MGwUOSA4ChqldpaQ4lG274oYTt1qodmznmDRk55msZMXUBjpy+kB+cuop27Ci9VhqHnW7Y00OxZc6WxDUgwiBHpFaIJunPxeunFVTSyaiq9uWg5NTTuoXQ6+kEobICv+ZsfaHXdLlq6ni8q/PvvYQsCovJN4akoJAqGSvNuXD3ZHEidYAakRh18lcsyEDKZnJiXjSsK/+wpbDSBrV4MBfN0bP6SOhpqDEgARKWQ6LEFEJYFJC6KOKHufF7QG6XtjRwYJmpIQ9yPGoCDP0vLK2OmwukUwPDSqdiIkRcpLBRYgRfdt/VrKdHEjfTWk/ZrLX3DA0RvL9tAD764knZ9Y6bfKWdLJpP08YpPadZf53BDfRxddP5AuviCQTR0cBUtXPA6ZWOeDvxf2SrkyhcGBPLACAISA0keHFCuYQqTdLEZ2pvWUSebWlIuEQxrpWC4v3n7wGwAhI9j0jO+8rKpYCKYpH0jN8r5CgoDSnQBJAVugBZsrKtQL9QbkcFvkKtsW0N6qHj/XNTgzwjDHBc1FAyFQ6AIghEFBVLJFLe1EDFOJVrs13luN0SWQz8eov379svkCf8PW1mAQJGA+HAIGEbSMBdIDChOMKYYVAEISv+n+8FwgANGw9VXwGADYcK0dH0NteLmF19FYTwDiJUfSXxABBLvM8KQKCioG+ot58SDQyJGsIcqqq1hwLCRzo8aUelURMTIB2O9CHVu4TZGpzen1B/b2dniAYFCcEQCEhc5AnCo1IxWAkBIEfuI6dhwMBkMBeOgtwrr9Z2oWUkJTq1gOmm78FXaQRKOIgDEiyIGEvMZ5vNsOVFurgsigwIiN/v4XCkYqHvuvoaFu2DUiE+ngm2MGDD4YoAbfcfq1lDq6I/26/tjO7sb0X8BFP8MQI6bgW4AAAAASUVORK5CYII= - - - PCBA Test, Wite PID/Production Date - - - - 3 - 3 - T3 - Test - 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 - - - PCBA Current leak test - - - - 4 - 4 - A1 - Assem - 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 - - - Mouse Assembly - - - - 5 - 5 - T4 - Test - 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 - - - Mouse Functional Test - - - - 6 - 6 - T5 - Test - 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 - - - Mouse battery record - - - - 7 - 7 - QA - QA - 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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - - - Quality Assurance - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Shipping(出货记录)/Shipping(出货记录).xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Shipping(出货记录)/Shipping(出货记录).xml deleted file mode 100644 index ec0951d..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Shipping(出货记录)/Shipping(出货记录).xml +++ /dev/null @@ -1,25 +0,0 @@ - - - -1 - 2 - Shipping(出货记录) - P_Shipping(出货记录)_20230413_144105.png - 虚拟机型:出货记录 -所有机型的出货都记录在本机型下 - 2023/10/13 14:39:53 - 所有机型的出货都记录在本机型下 - 0 - - - -1 - 1 - Y1 - Package - - - - 装箱记录,记录出货外箱号 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Shipping/Shipping.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Shipping/Shipping.xml deleted file mode 100644 index 62ccaba..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Shipping/Shipping.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - 4 - 2 - Shipping - P_Shipping(出货记录)_20230413_144105.png - 虚拟机型:出货记录 -所有机型的出货都记录在本机型下 - 2023/10/13 14:39:53 - 所有机型的出货都记录在本机型下 - 0 - - - 26 - 1 - Y1 - Package - - - - 装箱记录,记录出货外箱号 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1-P1/T1-P1.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1-P1/T1-P1.xml deleted file mode 100644 index 449fe66..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1-P1/T1-P1.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 15 - 2 - T1-P1 - P_T1-P1_20210925_175933.png - 客户型号T1_DOM_SC92F_MB_V1_00 - 2022/8/30 10:29:22 - - 0 - - - 46 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 47 - 2 - T1 - Test - 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 - - - 成品测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1-P2-DDM-HMB/T1-P2-DDM-HMB.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1-P2-DDM-HMB/T1-P2-DDM-HMB.xml deleted file mode 100644 index b7b3691..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1-P2-DDM-HMB/T1-P2-DDM-HMB.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 22 - 2 - T1-P2-DDM-HMB - P_T1-P2-DDM-HMB_20210925_180343.png - T1-P2外贸定制高电平触发版本门牌,宝来威客供系统机 - 2022/8/30 10:29:22 - - 1 - - - 70 - 1 - Q1 - Test - iVBORw0KGgoAAAANSUhEUgAAAHgAAABaCAYAAABzAJLvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAC50SURBVHhe7Z0HVFVZnu7PvQQx5xwQtcyYc8YMShaRHBUQUDBgAAQEkRwUAybACEgQlBxMYCnmUFaVFborh66q7p7pflXVVcX3vv/lMlPTb95ab+bNTKvFXutb++R77v7t77//+9wjKm2lrbSVttJW2kpbaSttpa20lbbSVtpKW2krbaWttJW20lbaSltpK22lrbSVvy9dLSd20zE3Wq0yHXpIZWZ43MBy3GDtrrbySpaICHU7G+Nh/Zzn+A2wn1Pcw2Lit4rJ4GbFZAiUxYZQLR78td6K4S4RPE57Rlt52Uv/DVM76Foaze/jOG//YPt5j3pYGP80fN0iTHUyxRj7xei6aiKUJYZQlg1tqRcNaVYvHVpqsHrsEO0lVIrdWH0lQmmD/rKUzi7Te6otB9urVg89qzIb/KnazOiXMa5LMMF9JcY4LUUnM2N0WTUevawmQXf5MChLtYBbtXgI3Tzka90Vw46pVg5uGOM+5tP21kPK25z9jyoRC3X114wYq7Yw2qJv9UZtV7sJ3ysrB0JZOQiK6WDWDMErDNHJahw6206AnulwKMsJtVW/hrvCiNsoDWjuWzoY7e1GVc0MW2mm/bS28j9RDN0WGuiuGbpQZWmU0MtxyrMuayf8NNB1DjpZj0VXm/GESrACVwOYoFYSWKtMtTIjSKlXshawpnSzwDcTjeB2cfdQqJYYfqtnOsJDxnDtx7eV//ICRdVx3fi+altDB13bEaf7ukz/crTv8uY3vJdg0kZTtLMYDmbD6Ld2OmxDfZGQmYFj+Wcxws2EsAhxNaGJVmnr1YTXuo3ntuzjNtm/inAF8kpqBbctIfzFRs3q5Yal3WzGGGrvqK38/xY7OzsdfYeRo9W2RsF6Nm/UdXYw/ueRvkvRy3EGxvuuxGC3eehuNwk9rCcRqg8Sjx5AbWU1so+dwL49e1GSV4R7TfdhEeZDgIRmQVm+QWmXfy1zwhRHt4IV94rE1cu5voRazOVlQ/+gt2qEp9yb9jbbyn+kDFozq72u3ch5KmujBJXl0GeK+ZC/qS2HYbDHfBh6LcIoP1P0cZqJIc5zYbbdDWEJ0SjIy8e1mjqU5BcgP+cs7t1spG7h7YdPUHe9Dq4xm1tcaTMSit0oajSUNaytfgXbXAtZ3GzN40Tm3C+h2pRaQS3lPhONm39RLTcq67rKeFj/Das76LqMnt3JZ7Bll/Ujhmu/Rlv5demyZmwPnbXDrVQ2Q0+qrA0/VSw5N7Xg2GnOsdOc4ZVSrTZCX+eZWLrVEWlZh3HzxjVcPHcevp7e2LZpC8qKS1Bz5Qou519EdUUZErLSMSfAGrpmhGlGWBaUQHXgutMYKI5jodizXsPtAt6aMEXSAdZyu+yz5bFyngA25b4VVCvkhUZQmQz7i2r5iK/0zYc2Lwie29zJbeSnzLR1tV/rN1w4nrZ3nThQvXakt8rWsFSxGfSdYj2wWbFittsqAWwhgI0wwdcMQUnhOH0mB3nZZ3AsNR3nT2WjqaEBlZcvozD3AkoKLiLhSDLMd7qhi+0khmSCMacsCMyStZXWuc7joLiKCFjkTJAOWqCtYO0F/lio1/K41YS6gPcyg/e0UMI0YYtMuLyAnU/C9lIjdHWdWOZ1wGeu9hv+BgunMnquIyeo1xrtUtkOvaVYD/lRsWYDiawI8v+QbDeCoccCPH14D5dyc3FgfxIuZp/GjeoaPL5zB2VFBcg6fwpescEY7DKXxxOgzd/JlsBEdoTmRGDulAflyUy7VbLuwv0O46DvNg3dveejt+s89PdbghHR1pgU7wLd2XTthAFQZvO+loxER/OJ6GjBjiSAlwwDnfyXdmajAqdumKqn/ca/jaLrMWamyskoUbV28FuK7aCfFBu6wZoANWJjWbLhRFZsKGvKhs6wpdbQJXZ0D0Ooe8p2PH10F8/u3cWHbz/Hkyf3EHcmDdOCLKFrSzitAO0Ja51WsvzrdXGupzGU9RNb5C2aoKlV3pPRY/Ni9PJciD6eC9Bv62KMO+aI1YUhGL53ORbkumHCcRf0tJuJ9jNGooftLEaJKeixZhrzgmVQr2B0WMb7XfFGs8psVG0X+ym/nbFY13NEnuLA8GZLsDaDqF8BtiHYXwO1J1AHNpYjnSeh04XShlGbJH8kFGTAKskH7T0n043cbsXQK8nPSp63lhBdCM2N+zTisiuBSjj24D4fLvvRcX7c5zsZKp8p6BS0ED0CmJX7mmBQ8Aq8kWKL5ZcCsOrSVgwMX4Ll570wO9MVY0JWYsBRWwzMcYF6Lu91Je9xFWU2CmrTURjmY4pu9jM16xqZj/qzrrXxxt+EmwcFzzJWOTEc22kh27K2oXNtCXctHbtOoBKUE+VCubKB3AnWkwC9CWY9tYFwfOk2P0LbKJAmoYPDVOjO4vlTeU3RIi67cd/6aTx+Co/nsmgjlwOmtsh/KjptX4y+IWboQag9Ni/C5BQXDD/hiHmX/LEwLwADQxdjcY4bTM/4Y9JeG0w9vwH9L7hBlWMF5Ygpx11+jjk7jSXvyYL3tpr3ajkWvb1MYLRxFVTW3GbBe7cZ36xaM6G6nfOsEdqmeH2Lwfoxx5R1hCqQ19C5dmwkR4IVmG50qzvlwYby0kIVoH4E6k9AAXRcoIigNk1Bu6B5cImPRE5uAeKS07HEwRbqmewsiygfwg2aDiV4BpQtdJTUQTNgsH0hBoRbYlCQGXoFmMAw1hImecEYdmodTCu2YPFZP/SPXIYlp92w6Kw/hifbY0TBBgwo8IDOuTVQcsyhZFEpy5lQsRPasKNZ8x45B1fWctmW90zpu8zAyK026OrGfMCO928/CSrnqX/SdZ0RIDmItjlevzJ4+5wBKlfD7xQHQhbQTgTsTsDeBLueYNfTERsoXwL2Y8P5s3E2EepmKohgRcF04JapmLjVHqXl13Gj8TEa3nyC5IMZ6DCDYXMxryudYSuhbpsFnR0L0GOvFfrsMEfvzSvQK9wUs8/5w6xsN4xOrYVNVQhmH3HDuDhzWJz3x5LcLTDK8kS3kvXQLXSCkr8OurnrCNcSyqlV1Gooe00Il1DX8V7W8D7XUusI2FG2sbbnfXN5kP9yDN1qwcjEbeu4z3V6s9p1RmUX1zmv79jcbsPwFMWFEFzoNHfKm4B9CNiHgAWsLwFv5LI/lwPYUJvZMEFUMKFtEXCEvHUahhDW+MmT4efrC3c3d0yYOgEdJzEqmBhCHTgNPaNWYVCEDQZsWYVeIaYYdtwZy6vCMDtvI6bne8K1OhTDoy0wL8MJFnmBmHI+EIOK/dDp8nqoLrlB0cJVcu2hiHuzCSprNXROroZB2CI6l2615/04Umu4vFacSjmICFTkzAzbezbG7LJDR4/ZhCzgebzTlO90HSb7LHyd3NwxeIqx3sbhcar1Q75WvAnCm+7dwMTIj6EugCFaI8INZGNt0iqIzghmQ21lo4Qw7LZqxwyoN89GD8M+6Nm7Czp1ao/ps6ei97RRMLCejoHB5ugXtAKDk20wtywIa6/txRAmR8uqN2FpYQBGhpvBPMcXq0tCYEjgBuW+UF0h1FIXKMXOUIpY5xPsBTso522gnLZCu2xL9DtsgQmx5ujPpEzjXHtxK2sNVN6vJkvnNskBPNgRqb5bVmJkmB36Bixhpxa38ztqOsTEZpWtcUU7x2nDtE306ha1zyin+duMf7CMXkwwhLBr8o9KEMFyWQmie7fQrcH84sFsqC1sINE2KoQNtZMNtZtQQzmWhs2CEq5VyEwYDOsJg87t0JGAbewsMHTueBhF2cL4og/sbkZhcfFmjDzrAOf63Vhx3BvGUWYYyWnPorId6HfZHx1qNkJV7gqljCpxIFw6tpD1RXEu4eZYo885e0w5ug7z99ti8qbF6CQPPOTZtIy3EpI1QCkPdkIB68X7FXlPxdhIB3TntEtx5/dyI1yRIyVTOXnwYsXvbDXuWz0b4w2v9DPtsftMHE0P2P5kd8Llp20Fm+6EXQkboxs+4aGyg1/w34gNtYMNJVB3cXwLJdhwJksRHE8jGOKi5kGJnAe92OXok+qAoRaz0a6THtoZ6GHWHCY2i4xhenEb+h62xJLqQLiV7cTwLYsJ1wuLioJhRDd3rN0Eg6uboFR6Q6nwgnKFji1lOC6iYwvsoLpoD51T1hh83hmLMl0wM9Ichm7TOcdlYmjKyCO/Nq0lICfeqyPl3uJUxZNaz3vntEuTvXN56j5GBc6tFU85jmAFtLN0DH7XNRyGzAlZZDWuWWU57tV1MxChrqg4PKqkMnlEZmamZk7YNXmOibLH+BclnF8+jD0/lPVuNkyoiGD3CFQqks6NomMJt3fqGgw45IYeiXbQ2b0EfZwWoFP3Tljn4ISYvfvg7ecHQ8tZGBCxGmMjzDD1tBfmV2zHiJqt6HgjGEr9Bih1VH1AC9wyd8J11DqXOmKGKYXesMz0wsRdy9FZIKwiWHkAY83hRB5lyoMSB0pcupGdzosdcQM7oWTuAteX61IT8LBQK/TeYdYC2YNwBbCrhHF2EHkcassoJj90mFGcYhHyN3q2xutfm9+b9eJmFSh72RiRbIA9hBwuNRsogg3WCnbvHNbzuT4fs48FouMezkHDVtDlS6HjNBNOruvx+PlnePv9P6Dp0QuEREdhwIZ5mFK9BQMbtqJv41YY3KBjr/q0AK72pLhcxrrUFepiR7TPWIUFhb5YleQCw83zoWPOECxP0+QJmsiNQLwIx4v358/72kSw3gTqK8uMKr7siBsEMOXHexfI4mJq0O7VGLPPCXo+PNZD62RC7ug9HWNC12DaHkd0cef31Dwv5+dYjmtW24x/PcbmHofMxqjiZ3yvxLBRotgokSI2UhQbTOBGEu4eNmA4k5rdJtCPMId5VihUuwiYDuuyYSkOncjB7Qcv0Nj0NpIP5GCh+Sr0sDDGMIZh3RuboXczCPoCuG59i6o8oVPuhQ6Fbhh0zB7mBZthEeeMbhwzVeLStZQ8PZMnZxvY6fwFGu8riPeybQGTQNaBnN9u41TJl/foR9jBvD8/AvThfW9k7SeweY6vOHoSDAJnYniENbN2OxhF2uCNvfYYvccG+jJuO4xFf87JR2+3hMpGwrbMr8dxmW62n+SlvOq/NxscWJSqxLNRYtk40awFbgQbLpxgQzkdCWX2GbqUrl3GbcswLt0HbyQxtO6gg70XwG2LL1IPpCP/Yja69uqNdr06o8scIxhX+6MzAetc24Su1wm4xhvtqtejy3knLCwOZEfxxZxwS+i7SUZLl8rjUPnBwYcu8yeYTYQUxPvgPFo6l7KVNTuVspudy5dQNxL0diZQAYQt61t5r5t5z+JgASyd4l8eibLewOv+WhIR5NGp/OjhNA4dPKfhjTBrdBM3yy9elkw+7YybVXYTytq5zRyqba5Xr4zOcempkzrvK2U/G4wJlBJG7WZI3iWu1QIOZ8PuWYEecQ5Ynr0bHcJXM0SzoYOXYK6bJSwcrJCREUnA3aDfoxM6jR+AKUVe6H19MzpwvB1RG4jBp11gU74NqzI8MJQw1C5sQCc2pIc4lY0tjzIDCSWYnWw7ge2UDkaw8tlR/LwIDg0CcTs7m0AO4H6RrMu0yYdgtvD4bTzGT5xMyP68nkiurYH9a+CToN4wFfo8TyWhmx1N5TIeI3aYY+A2M6jW8L40LyZw+7oJ3+g5TfN8Zcfm9okm+zSODRO3SMOyDmWjhS+G3l5zDD/ojVkntrH2hX7sGij7qD0WbMxlmO5vj4ikaBReysIo45HQ62yATiP7Y3qWE0aX+mBari/sCoOwJN4RnTYRnjwKlceg8kxbHoFuYuPL48xWqLv52XsILYpANWKSFM56Lz9PQAvMYDp3JyOKAPVfgA5hVggpOoDE8lMYEsVkLYSdMoDANxKuPPsOJGyBLJGBgHsws99TkI5rT+rw+N07yL1RANvUYOhosu0x6BEwBxOj7KHnxfPsCFkSsnXGv6gcJ5UYeM5+dd4F63fSo7fu0cX+qsRZHynh4mA6N4INGEEXRC7BsDQXzDgehC77OSeVBo5b21IzS1ZCV2qcNMhnFXYnRODwsSRMnzMZuh300X7cQHjnhcD+TCBGh5lCLc+zN9ARAa1A2XBbqRA6bRfBSqdiZ1Ii6czoVfwMQo02Z83PEcDMyJVQ7mMOoBtjg64MpQOjnTEg3h0TknxxtC4Pd99pRNndGly+XwmVP79HCK+3mdeWMbwVMDV450o0PrmGzz55hi++egdf/eEdfPnVc3z02SNE5KVBJSGbkHU8jTE+ag0GbuXnriPgNYw464zFzX9QO0/zeOnHZr3kuY4mx5f8wey0RbOSzgaIo4v2sWFi2TAxdNC+Zeifxrnoic1sWDooxooNzkaPJuBoy5blyFXQc5sDq/WOiEncAzsHAiBg1bh+0JEERlwq2sLGlUecO/kZu9no4Rw397R2JrotimFYwMbI9XntGIKNFolruV3jYnaosJUYlbQBBQ+qcLqxCMVNZSi4X4EnHz6AecZOuGVHYVwqM/WNc9F520oMjuc8eAs7jyZM837o3vPX8/DJV8/w1z9+gi8+eY53Pr2LH/7M5S/fwiefPcHk3ezMMmxIpPEYh77BizA+2oG5As/XvG3CfQ7jf1E5TbzcZeNC+YVKpR+xfLTOton7ekZOjtKNmDpD3pRpaeV/YNFLmXbbO9sDKy5s/Fv786Y3O+XZe+mkLW1U4hj2Etjgcey5sSuw+mwo+ifYE6bWVfsIOoYQBESUOdpxvFrosBrzVy7CtHlToduRDp7FsCZj4A5JkujS3azDCDaCUKN5/X28/j4CixEJWBGB7iNQub7Ums5ESVgWyAzTy3JCcf5+Gaqf1OPq8+us6+CYEwOb7Eh022vLz5wDXQ4bS0/swOaCNJxpLEafOCeGf4Z9Jl0GG2fgq6/fxbd/eg9/++sX+Jig77/bgOsPavBP3/0Ov//8MYKy9/3rT6ReFBMxA99pmLLPEb23sOOvo8PXcT9rlYPxX9TOk+8oPuO/7xs8DTGHfLEgdv7PusETd2ib+R9XRl+wHzk2z3nltMue41v/KUjf7HXjVClLflCSCTeFjZpkinZJ1nAviIVa4yhKnBzPxoxk48daw/igH3YkhiFg52YEbPPHAKM+6LyGoVjGVZliSdiPYgPHEGysdBx2lHheJ47n75drEGYsa4EaK3BF1gQsUcISOnut4XkpDfE3LiCXbj19pxQ7K04g914ZbPL2o1uUDaPEHAyNdYZpVhhO3sxHaMlhzOd0rmMYr+HLrDqI9xGyCO2ZlH39DcPyt+/g60+f41ThScQey0Hk4ROovVmHF5/ch/fRMIIlRPmpVLS+RSovY4wMt8DkvRzjXbjfniHbkR1AgNszWXQdjQF0e+/tM5sNQqanaBr5ZSwGR1elKwcI9yCVwcZLtcb4rGAsydne4jRNCCWEJIYyAlbvX4MZSZ4w2eMIj/RAxJzdi4VH/ehcNmqUQGWvTyDQRAJM5LkJPDdBW8ez1sgaOnGcox4KwOTMLeiT4sGxdg22VB9H0bN6PPnsMTwLM/Dwo/uIqD0N4ww/tI+wgGrrUnSPd4bTuRhUPqrGpXuVdHkEOuxgZPBn5NjJ8L+Nw4BA9mcUYYZdWH8Bj6oT8fHZqfjg2DjkHjuCxCPnse/waWSczUYfdw4f3oSmebGB8pH8wRh6HL8nxdpj2n5ndgBCd+MxraCduL5W6tHount+2ksRov9vZVihcx+dw2bfKEfo0sNUBkGm2cC1JAF90l3pLgIhDCWVX1RCdyw7QTDDLxtBf9s8GO23RfuthCtzaHFoMkGm8PgUXitZxOM1NZVEJa6BbrIjDt+7hC/+/D5+/+27eEQnHbhVgKefPYRH4WG888UzFDypQWD5Yaj38Jqhy9E7zhERNSdR/KAShxsLsShrJ7rtYAekizTjdRBByZx4KwFvX4TOzmPg7tsLjw50xQ/n9IELikbfZvdCwUF/bI1JhJEJI82kvpwDD29x70Zm1cz0B4atwFJ2qi47eC155UgkzvamBLQ8PpWw7TAWum6TH3QJXPly/97c+bRdsJJp1awcI5hMZs5HHdD9mDc2lqdDJc5NJNgkB0Kj9hPgTjZM8FQYEmTvUCZp8jpPBMNxIgGm8vxUHp/O0JbO4w9QaVqlyHXWIfbNPFx95wbe5hj4u6/exud/fB9X372JA7cLceh+KfzKDkM32gYqDguTM4MReOUQ8u9fQUZDPjZfPoiOexjSmWEruxktAunUzYS7m9MohubODiPhtmkAHqTo4m/nCbWAym+Bi1wqT8H3ZwxwzLsnuo/tDmVkDygT+7T8sCEQAydideamluw/gMBlJiCS15ZaHS6vM8mTN3k/zUnm0xP+2M5vvtdL+3vzrFvB7XWz7F4op+nYbCpnPZTjHlhKFy/I5RiV3AJGOcB9aUxiBNzuuRiQZoc+Enq3cvyVpCmFx2TwmEPMZo96sXaHcoR1BtfTXVrOTXVCzvMqfPPX3+PWi0b89W9f4Kfmb1DwVh30Uz0ZMWyh3meHMZlBiGvI5Thchsrn1+BenIyu+3gfmidYHOc5d1V2cXkTAXtPRWf3CXANGoA7CWr8KGCLqELqIiWQpRYRsID+22kFZcEqjJjUCcqY3lCMe0GRX7D8J2B5ZgD0QthpgglWXn5o1WZCDiRgf3G1JGR0srzI78ZtruOadTdNu9Qv2ublnDf3L9hgpWQ7/KKc2wjljC8hb4TOSV9sqT+JnicDCJeQDnlDP3sbhuVs4TgdgHHZ/hhy2B2d93O8FR31YcfgsXL8cV7nOK+TyW0yRh/ldEa2ZfphYkEcnnz9DF/90wd48vF9NL7fiHVlh6BmAjcxJwzpd4pQ8qwO5x5Xw7k0Az3SfaDaww4UzpAsgLcScAiHiaCZ6OI8Cq5eXXE3WYW/iVMvUaVUCVVMCWRRq5MFsnZbM0E/3avAZGEHKON6QllOwJsmoUvYYizid+gu07ltMuXjlKm1lrdc5G2XTVo3uxO0AJYfNQLGQb158jeddy121jbry1MkszbI21iunCeQC/5QCnZCyd+JEaVJ2FSfhe4EOy83EuYVB2F8cS+6Z7igW4YjYQfAoyYdEy+EslPwnJNboGRto1hnM1HL2QHlHKPAmV0tdXYIlFMh6Hk6FLYVmfCpy8GK0qNYdCmDn3MGdzken31YiU1Xz6Jb5laGfQ+6nhFF3LuX0WIPG33nQnRj2Fy/sTsepBKswLuilcBtlUAW4K2QRbJeRsl+cTmBvxmhQH8aQ7VMl7YTZMg06HGat/CYL0anO0Ilb7Xs5Nw6ROb2lLwcsY2ODtA6WZ5z+3B9Ex0dNKnZYOe80oUv4z+lGVe3d6K6cPcPSmkUlJK9UC5xjpgXDpv6U3CpO4HRBfHQPb2H8OO5PRrKaYEVCL1TwQi+dR6jS9IIkeee5778WB4Xx1quweW8GHYc7fKF/VByE6DKTYRJ+THsaLiIqg9uIedJNTwJdtA5HnecHeJUOJRj7CCHNhMyI0iiIwzCTLEh0hCPTuriJ4FUTVVRlVQ5JfBEl6lWyK2gRbLc2hEI/OccBUc36kIlv0PLS4Y7BCKTtd1Todo1DWMOOsLkhB909jBiaF6KkA5AmAJZAGvGZnmwMpXunfpdp1CT9VMzN7y872X3KN93RClmw5YQyGWCKE2mUqEUp0ApTCQcbs8n4CJuL+K67LuUhIHMeMPul0CnmJALknis7Kc4p1VKMnjcIV6PKqEuHea+Q9CjNt+5hBLCdb6eh25FB9g5eO4FXvc8P+MsQWexwxxndDjJqBDtgq3pxvj5KuHcoOqpWqpGq1bQrbBFAlNgt4IWMXRLeP7rMQW/S1Ewc3U3zdir7JCHNQKYtbwEsXsadCNmw+HcLvRKMOU2gpTXmcTlmjGZ9WbmH8Ezm/V3LKgw3G/58v8KNf/60f665fHfKlVs7OqDUKqoci6XsRbIxQRawPoyIRGqUp7ZUl/OQOiDEvSpOEaI6S37rxzhedwvunKU27hewu2XWF/ievER6JZkol/ZCaiK2QmK+BkFPDeXHeMCQZ9LYGhnFMhmNDnB8B/vi4LsQUADIT2gblGN1HVKQIub/16tsFtBM5z/mK3gu0MKvkhXkLtNBT2nES1gw+hccakA3jEDQzhnt7uwA4Zp8mOLuJeSV5wkZG/lsSEzod41/y9dI1cGv9Su/fvS51p6qFJJiAK3KgNKJSU1py8CUrlECOJKAagBnAkDKvrxFXSsPsV1QhYJ0CvcXyrnEWgp1zW1AOd+jr0aFXO/gC+UTsTr5tP1F/kZAlkkkM/GQDc9AE8vdAXqCOo29Zh6pq1bHS37Wl39a8gMyT+fVfBPRxV8laHgszQFHyQrWO3apSVxCiWwCHkaNwMGUQthnhUM06wg6EXJPJv7JDQLfIG7i8eFzm3Wj1x63TDJYbS22V6d4nQ7vUuHugMfKfVsdFEtwVRTlQKIIfaKQKarxaV0rE7FCax5swBr7l3icQRceaIF7L+IEKUzaIBr68vcroFNlUjN9WIJ4dxXyGsX8TPEyaLTBEzIfZnEfVVs0AJPXCuQxckPKXH1NUogt4KW4yoYjjnWfn9Kwbd07ZcHFXycquD9JAV1kSp09R1O5xKcvI8WPQejD62DaV4IhqRxTh/J+b78ULJLnpKJuwk2bA7UEQv/0nn/6u0r0wPbaZvs1SsTG496KLUHm5UaNnQdAQhgUYXA4TZKXXwAo2qy4N1UBPf7l9Gh7hx0qrOgqs3RhGWduvPoUHuW8LRjr9QigawJ2ZQ4WWBLLXBFvK4mXOcRbj6HhLPMBc4mYEZ2EP5aqm5xpYzDArWJEgff1a4LeJEApmt/4nz3nzMVfEO4nzMkf8Qx9wXhPtmvwDe4a0tWHDULXRJXwOriNsy/EAh1qvxAQph75QcTApZn7BHyKHYB9PYtuzUobe14bTO9uiXiaoRulxsH65V6wrzGxq8jhFrWdLGq/AjG1Z6A/c2zcGrMw6j6HOjWnIEB1fNmAfQFMJ3c50Ye1BLCSwhLk2TR8VKXEaxGvJ44vFxAUxLCJZxzyqQZAgoZpsXNF+jg83FwOGmDnyX7lWRKAApQGYfFwc8pcfNNih2gmXPeH08q+FNrSCbcDwn37XgF9/epcPPIKIyKmgF1zDxMy/GCS9le9D61FkoyQSbNaQGseVeNkPfOgypmwfft400jF2a5GWib6NUvxreOTlFfPfiDUiehmiBqCKHqCHrWHEPio1KMqDsOlWTLxelQc3xWS2jWjL88rvoE9K/nQr/mJKHJmE1QklFf4bXKCFIjHiu1JGat0oRwbUeQrLqI5xDwWEaAK1WeLVMgGVMl/EpIFshvUk8pcTE7wC/nGJJPtMCVkPwJ4b7H8fZhrIK7Kb1Res4CJqkrMDhtFXzLojDrYiB0D66Aks6QnETHxhNq7CxClnoedONMHvZMs56ubZbXq/RsOHxCMw5fJ7RaSkCXp8GjKQ9mN08TRCraVZ6EiuNwx3q6mPNYNeEqJQQvY3Yhp1WFnO6UMmmTKVU5wUkHqBSg0iF4vSrWArfyONelAwhgSsK6xsmp8L9dgEd3IvDTFYZoyYoFsrhYkqtWyBxvfznTAve7Iy1wf8/x9q0EBU379XHt5CzsPGWPQfvnwe60B/yu7NK8tK+kEKrGuawT6F6BGz8HqoRFP7RPWRnLDLmDtjlev2Lz4NQb+teP/PO/Jlxs9CtJ6MkpVOTDfPQuo8uKk6C6dBCqCxFQ5YZxyhMHdRXHYDpducwsuIiQL3FeK9ArtIArpKNQMoUSsCJxu9RVlIRwjZsJmAldF0690m4ewJPKZfipnJAJU+NiSahkzGVobr7IuS3D8ncccz9nWH6fIfkBXdt0aDiyLqzDtEQTTE5fgfDynVh40h5qebt0H7PieALdT8VyXQAnzoVO6uL3uh1du0DbDK93GfHm8X1KPcFcZ4PXMGRWEdqVWMyuTsPmexeguhjKMZI6zbnq2W2sN3HuugFKjh+ULC9OecLoQs5lLxNwOYFxDNc4uFzA0r1VBCsurtYC1uzjMdIJJKRL5n4pAd0OrkJGXSS+uetIsDqasVYzJZJQzaTrRyZUAvdTOvftRMJN74m6i/bwPr4O/ffPhHv+egQWBaJXCkNxxDhmzROYKU/iOMtpUgzHW7pWSZz3s8HB5ScMs9y6ab/+618CX5zp0unmkU+UOiZL1YRbI+NuKHSKQrG56TRmVnH9XDCUDBcoma5QTrDO8W5RNgEXRzIb3k1oPLec47G4WCBq3CpwtdIA1oKukDDO/RrHU8XsIMmz0T99Ic7diMaf7lozRKtaXCwZNcfmP8qTKY63T5L1cP/8YmQWB2BU8hLMOWaFXWXbMOn4aqijxzJposLGMDsm5AgCln/twbCsk7zw8x7HLKx/k3/8dEzTCRelLrlZqWWorUlguN1FhWJg8U4kPM1Dt4IQKMc9oRx2bHkz5Ng6guZytgfdS7iFdLg8PKkk4GrCqybgagKUsCzubZVAle0yfjPMK5WEy8ROubid7qLTEiZhWMZiXG5KxB9vzUezNkz/kMuQnMYk6vAgVJX5wjLLEUOSFyKodBOc873QKYFz3djRBEpFCmBqz3g6l9vjZv7SPn3Z+ZHnNvTSft3fXslHvk7XhgPXlBoCroxmEsRwXLwVyhl3WF9LhedtwjjLkCwOPkK44t4sN4ZubpNfpgRwFZOsCqqaYbqK4DRza8IWkDUCVqATsiwLVNlXyTG+UubEgVAOcpxM45iZYIzJx1bhSkMk/lT3hibh+uxUZzQVW2H3RV8MSZyPVWccEFq+HaMzV0C1j26NGkmwrMNGtTh370QCnwqdpHmfdztu6RiB36Br/75Mvn90mvrq/h+VynDOi2M5NtKZhNy+KAQxT3MxpWY/wXLsPUTnnqJzs+noIjpdHFzG4zlmK9UEJtOuGgKuIUSRgK4l5Cqts2tkv4jbNc/EqVx2lEPzWyAncexMNMacU5aovx2NLxvtUFYfgkWHLDAibSl2MxzbXfRE+zgJvwQbRdeGE64oknBjGZITZvzSLn1x7vjz6/pqv15bkdLzzeTjShUBV0fQxVsYpjn2FmzCtOpYJL9bhI6lTKguBDHR2shxmbpE5xbsoHMT6US6t0YA08G1lICWrLyWtTxIEaACulrgc5vUEtLlvBJ+5gVGheMyX2WoTibkhDGYf9oObgV+MExaAOfzHgi5FETIJkygCDWKbpWQHCHhmGBj6Np4ujZl7hddjpk5tP2h8X+nLH43e6D+jdg/KrVMnOqY+FQRdNkuTo22Y8uj8/B+cJaZL7ed55gp2fMVzoHLOU2qpXtrBS6hSUYuukqgAlu2CeQahmKp5VcsjcO5T9xbRcjM2jXXOssE7jBdfIhZb9pEqFKnYGa2LWJ4P+bcpx9D8OEClUDFrRHGhE0nxzO0J8/8pd3hxflDCp36a79OW/n3ysA7aTuVOkKs3UNxPK6OIoxY9K9PwYkPKzDpFl1YQRjy0kAJ91XEcb+4l6DqCa9O6+KrhKmBLTVVK/u0UOVYca/ArWLnKOfYX8EhoHAzhwFrOnkR+p00wZb6MARdjcCAzJUMvYQYp30KJVOfaCp+OpTUmVBnLPiyy6nVjm2u/X8oq+9ldujQmPCecpXOvM5GryNMGX8rImHVlIXU96+g/TWCKWe2fZmhuZpw6wRuBnQJdUpTNpY8uIDxTfLkiy6W590yBROHiwSwhHCBKyG9SrJvXquSkEtDoVe2B1bXopH64CCWl26E7pFFUA4QrMCN5zidugRKyjw6fC7H7PnNeidXlA64YN/2X/f8R8rIh0fWKjfjmpUGgr3Bhr9K1cdBvy4RcS8uw/P5Ra4TbBkBc/6rZoI1sSkHuz8ox166fP3zYmx/vwyJv6/CyDs5Lc7VOFvgEqyAFudWi4MJuJpz7eoEjL2WjKh3ihB49zB6yt/TOkaYmWasLRiCOfamEPYhbju6GOrjy7/qfNratc21/4kScfWqbo97ybeUG3TvdYbgqxQByzzZuPEozn5ag9F3OOWpS4Mhw++2F8WEWQGTh+egL0/Erh2GLmun50VI+7gafW4yrF8l5FY3X5UxmJBFlYnoVJsMz6cXEPfeJcy8fQQ6JZx3F/pzmsap2BFzAubc++gqhm5Tzr9XNhvkWBf3L93Q+l/0tJX/TJn3zvEJOrcT/pfSwPB5k7pGt15lXZ8AL8JII9CA94qQ8mEZnB7loouAFYjXCe8G6xuEfPMowj68ggge0+6Gdv9VAUxx3NZhaF/UdArJvy+D++Oz6CwPWirZqS5yDl5IyBc4P87itOwM3XzaFuocm8975rk4Anh5/znJq1T6PcrIUBrZ6A2EeyOJkCVcJ0GfoXTlgxzYPT2PwXc4t62VcZgh9zrBXRe4rAlYlvu9eQKH6Hindwp4Ph17g2I9sIHOf68EMe+XYtytE1BVMkKUM3Er49hfzOnXJc6xLxF0AefeF5yb2+U7Fw667DNQe2tt5b+iLP/4eA+92ykfa+DeJGQBfJ0uljG5jqoW8IR7nZJx9CohC8BGuriBoLWa+egsMj+rwfR7p9G+4RDWPc9D6ieVsHhyDh2ucQyu53UE8BVm5VeYuV/mNK2SurIN6mKfT7qW+Nm1PY36byo9Hh21URqTmHAR7A1CkKRLA5oS0FcJ5xYBcxqlSbwE8k2CvUnQDXQyAaso9xeFOPJ5HTI+r0fY7y5jcBOdL3Bred1aXkOmWzKnrpasnZCrwn5pX7bjrFHtrranUf+dxQ75Onp3Ul4oDYR581fSZNfMsjkmKzcI6E3CvSZiZvwvgGU8JuSb6dBpPIAR905i1MMs6DWwEzTQ8Qz1Grg1jBC1lHSW+ljo1ER83LU2wqotQ/4fKO3fPTJQ3ZTyrdIQSyh0WSOh3pKagBvF0QKFtbi4gRJQGidTEq5vCHABKrUcw1rAcizXHCuAr7FuSIHqRtLPBtfiskZeTfrt/vLzP1X8PjrXvcO7hzcoz9M+UO7TpW+2wiXoW1IzlErdyH2SZd8itLsEekecK2Mxw6+E4DoBTglQycRv8DhZr2ct4/ctHtuYQlcnfdSnIcnitfnTgy9zCfwwx3LEW/FfDHkaDZ1ndOpjArlDmG8S6m2t7ogI/U3CbSQ4ScIE9h2Cu09wDwjuHt16h8u3qZu8hiRo1yjNuM39TQegup32Y4dbKenGNw931358W/nvLFm/u9ptzoO4L3LeSsOzLy5iz3uZzaonhPOQoJvoXg1YJkOiJkK/y+13CayJx9wiPM28Wdyuhd/E/fcJ/QHdLNDvErZGKdBpSnu734PMhS/1n0l43UrYJ+feWHVv38+fflaEn39oQv0XJej4dmqz8k7iL8qzuD8rD/Y1K/cI+h7hNhH2XRHX7wpsEUE3CVhCv024EsYlvIv7pUMwEqhux37f/k587NTPMl/fNxpf1pLxVX6nkQ+jv8x5NxMVH57GqnczflG9SK7R+eTgos6fHuzZ7p0kf0L+SblPYA8IVnSfAAX4PdZ3tcsybkv9QMRlWX8QD/278U/63E+drf24tvKPKN0eRy/QfbD7VPsne4/pv4hfreTn/5u/BKf/OOGIcjeS0MIILZzaC+UR566P6dhHdO5j6pGEdcKWbQzvqodxf+nwJCm8zbWvQJn88fEROo+j/6w8iiBIgn7A+qGIoB9y/XEURWc/JuBnidB7ltjQ5520CdrT28qrUHq8n5yoPI5sVp4QqogZt/KY9WOCfkLAD/fQtVF/7vpW0raxz/L1tae1lVelzJLn1E8jP1Ee7KSLtxMq6yd7WuC+FdOs91ZMRa+34t/QHt5WXsVi9EGas/IopFl5SsBPQ+ja7VA/Dvuu67vxGxai7f/8feVLBKDu/O6+q8pbu6A8D/1Z52n4uR4v4gZpd7eV16GM/zR1tt57kc87vbffTvnN/KSnKP8bo32lDUgxvk0AAAAASUVORK5CYII= - - - 扫码目检 - - - - 71 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 72 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - 73 - 4 - T2 - Test - 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 - - - 成品测试 - - - - 74 - 5 - T3 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_Card_485/T1_Card_485.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_Card_485/T1_Card_485.xml deleted file mode 100644 index addd9ea..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_Card_485/T1_Card_485.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 25 - 2 - T1_Card_485 - P_T1_Card_485_20210925_180430.png - 酒店客供系统,T1玻璃触摸系列,插卡取电,弱点485,带身份识别不带边框 - 2022/8/30 10:29:22 - - 2 - - - 80 - 1 - Q1 - AOI - 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 - - - 扫码目检 - - - - 81 - 2 - T1 - QA - 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 - - - 成品检测 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TC_3801_MB/T1_TC_3801_MB.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TC_3801_MB/T1_TC_3801_MB.xml deleted file mode 100644 index 84880bf..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TC_3801_MB/T1_TC_3801_MB.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - -1 - 3 - T1_TC_3801_MB - P_T1_TC_3801_MB_20220425_092621.png - 温控器 - 2022/10/25 9:26:03 - - 0 - - - -1 - 1 - Q1 - AOI - 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 - - - 扫码目检 - - - - -1 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TSW3_MB/T1_TSW3_MB.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TSW3_MB/T1_TSW3_MB.xml deleted file mode 100644 index 2bdfe34..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TSW3_MB/T1_TSW3_MB.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - -1 - 3 - T1_TSW3_MB - P_T1_TSW3_MB_20220425_092344.png - T1玻璃触摸系列,3键开关,弱电485 - 2022/10/25 9:22:57 - - 0 - - - -1 - 1 - Q1 - AOI - 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 - - - 扫码目检 - - - - -1 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TSW6_MB/T1_TSW6_MB.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TSW6_MB/T1_TSW6_MB.xml deleted file mode 100644 index ea25637..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_TSW6_MB/T1_TSW6_MB.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - 21 - 2 - T1_TSW6_MB - P_T1_TSW6_MB_20210925_180321.png - T1玻璃触摸系列,6键开关,弱电485 - 2022/8/30 10:29:22 - - 1 - - - 65 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 66 - 2 - T1 - Test - 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 - - - PCBA测试 - - - - 67 - 3 - A1 - Assem - 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 - - - 成品组装 - - - - 68 - 4 - T2 - Test - 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 - - - 成品测试 - - - - 69 - 5 - T3 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_V16_MB/T1_V16_MB.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_V16_MB/T1_V16_MB.xml deleted file mode 100644 index 35c7bf9..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/T1_V16_MB/T1_V16_MB.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - -1 - 3 - T1_V16_MB - P_T1_V16_MB_20211223_115120.png - T1_V16_MB 电路模组 - 2022/6/23 11:50:50 - - 0 - - - -1 - 1 - Q1 - AOI - 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 - - - 扫码目检 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/TSIR1/TSIR1.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/TSIR1/TSIR1.xml deleted file mode 100644 index e64e8bf..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/TSIR1/TSIR1.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 27 - 3 - TSIR1 - P_TSIR1_20210925_180511.png - 红外转发模块 - 2022/3/23 16:36:43 - - 2 - - - 87 - 1 - Q1 - Test - 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 - - - 扫码目检 - - - - 88 - 2 - T1 - Test - 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 - - - 成品入库 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Test-Demo/Test-Demo.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Test-Demo/Test-Demo.xml deleted file mode 100644 index 6035bab..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/Test-Demo/Test-Demo.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - 3 - Test-Demo - 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 - UTS测试使用,请勿修改 - UTS测试使用,请勿修改 - 9.35 - - - 12 - 1 - T1 - Test - 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 - - - Test Station - - - - 13 - 2 - A1 - Assem - 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 - - - Assem Station - - - - 14 - 3 - QA - QA - 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 - - - QA Station - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/TestDemo/TestDemo.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/TestDemo/TestDemo.xml deleted file mode 100644 index 06d8c3a..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/TestDemo/TestDemo.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - 4 - 10 - TestDemo - P_Test-Demo2_20220105_110357.png - uts测试使用 - 2022/1/5 11:02:19 - UTS测试使用,请勿修改 - 0 - - - -1 - 1 - Q1 - AOI - - - - Q1 - - - - -1 - 2 - T1 - Test - - - - T1 - - - - 15 - 3 - A1 - Assem - - - - A1 - - - - -1 - 4 - P1 - Package - - - - P1 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/UIC-189/UIC-189.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/UIC-189/UIC-189.xml deleted file mode 100644 index a33fd47..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/UIC-189/UIC-189.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - 1 - -1 - UIC-189 - P_UIC-189_20240315_162837.png - UIC-189 便携式电流美容仪 - 2024/9/15 16:27:47 - - 0 - - - 1 - 1 - T1 - Test - - - - PCBA 功能测试 - TP_1_1_REV_16_20240512145126.uts - - - 2 - 2 - A1 - Test - - - - 成品组装(PCBA SN+成品SN) - - - - 3 - 3 - T2 - Test - - - - 成品功能测试 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/VC_2006/VC_2006.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/VC_2006/VC_2006.xml deleted file mode 100644 index def0474..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/VC_2006/VC_2006.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - 3 - 2 - VC_2006 - P_VC_2006_20210925_175554.png - VC_2006测试工程 - 2022/8/30 10:29:22 - - 100 - - - 5 - 1 - T01 - Test - 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 - - - VC2006测试站1 - TP_VC_2006_T01_REV_09_20200923114331.uts - - - 6 - 2 - T02 - Test - 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 - - - VC2006测试站2 - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaMotor/ZimaMotor.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaMotor/ZimaMotor.xml deleted file mode 100644 index 4a91637..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaMotor/ZimaMotor.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 5 - 2 - ZimaMotor - P_ZimaMotor_20230713_134813.png - ZimaPro 行走马达 - 2024/1/13 13:48:02 - ZimaPro 行走马达线外测试, 不进入站控系统 - 0 - - - 28 - 1 - T1 - Test - - - - ZimaPro 行走马达线外测试 - TP_5_28_REV_02_20230713140553.uts - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaMotor/ZimaMotor_BLV_MOMO_七月-13-140855-2023_Conflict.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaMotor/ZimaMotor_BLV_MOMO_七月-13-140855-2023_Conflict.xml deleted file mode 100644 index 4a91637..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaMotor/ZimaMotor_BLV_MOMO_七月-13-140855-2023_Conflict.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - 5 - 2 - ZimaMotor - P_ZimaMotor_20230713_134813.png - ZimaPro 行走马达 - 2024/1/13 13:48:02 - ZimaPro 行走马达线外测试, 不进入站控系统 - 0 - - - 28 - 1 - T1 - Test - - - - ZimaPro 行走马达线外测试 - TP_5_28_REV_02_20230713140553.uts - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaPro/ZimaPro.xml b/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaPro/ZimaPro.xml deleted file mode 100644 index 3d73a14..0000000 --- a/AUTS_Studio/bin/Debug/Temp/ProjectDesign/ZimaPro/ZimaPro.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - 3 - 2 - ZimaPro - P_ZimaPro_20230413_145148.png - ZimaPro 水下清扫机器人 - 2023/6/21 11:57:49 - ZimaPro 水下清扫机器人 - 0 - - - 15 - 1 - T1 - Test - - - - 主板 PCBA FCT - TP_3_15_REV_31_20230422152035.uts - - - 16 - 2 - T2 - Test - - - - 漂浮平台 PCBA FCT - TP_3_16_REV_26_20230327165831.uts - - - 17 - 3 - T3 - Test - - - - 电机仓功能半成品测试 - TP_3_17_REV_17_20230513180254.uts - - - 18 - 4 - T4 - Test - - - - 电机仓防水半成品测试 - TP_3_18_REV_06_20230401195236.uts - - - 22 - 5 - A1 - Assem - - - - 电池包与漂浮平台绑定,SN铭牌打印 - TP_3_22_REV_15_20230406162610.uts - - - 19 - 6 - T5 - Test - - - - 漂浮平台半成品测试 - TP_3_19_REV_25_20230427163328.uts - - - 20 - 7 - T6 - Test - - - - 平台防水半成品测试 - TP_3_20_REV_07_20230401195331.uts - - - 27 - 8 - T8 - Test - - - - 浮力线气密性测试 - - - - 21 - 9 - T7 - Test - - - - 成品功能测试 - TP_3_21_REV_21_20230427220119.uts - - - 23 - 10 - A2 - Assem - - - - 机身贴纸打印 - TP_3_23_REV_08_20230406162338.uts - - - 24 - 11 - A3 - Assem - - - - 外观检测 - TP_3_24_REV_11_20230406160817.uts - - - 25 - 12 - P1 - Package - - - - 装箱,绑定外箱码和机身码 - TP_3_25_REV_06_20230406165242.uts - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Debug/x64/SQLite.Interop.dll b/AUTS_Studio/bin/Debug/x64/SQLite.Interop.dll deleted file mode 100644 index 1a86bfd..0000000 Binary files a/AUTS_Studio/bin/Debug/x64/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Debug/x86/SQLite.Interop.dll b/AUTS_Studio/bin/Debug/x86/SQLite.Interop.dll deleted file mode 100644 index 1e4490d..0000000 Binary files a/AUTS_Studio/bin/Debug/x86/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/AUTS_Studio.exe b/AUTS_Studio/bin/Release/AUTS_Studio.exe deleted file mode 100644 index 8152dff..0000000 Binary files a/AUTS_Studio/bin/Release/AUTS_Studio.exe and /dev/null differ diff --git a/AUTS_Studio/bin/Release/AUTS_Studio.exe.config b/AUTS_Studio/bin/Release/AUTS_Studio.exe.config deleted file mode 100644 index c03251a..0000000 --- a/AUTS_Studio/bin/Release/AUTS_Studio.exe.config +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Release/AUTS_Studio.pdb b/AUTS_Studio/bin/Release/AUTS_Studio.pdb deleted file mode 100644 index 4a059b4..0000000 Binary files a/AUTS_Studio/bin/Release/AUTS_Studio.pdb and /dev/null differ diff --git a/AUTS_Studio/bin/Release/BouncyCastle.Crypto.dll b/AUTS_Studio/bin/Release/BouncyCastle.Crypto.dll deleted file mode 100644 index 05036dd..0000000 Binary files a/AUTS_Studio/bin/Release/BouncyCastle.Crypto.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/FlexCell.dll b/AUTS_Studio/bin/Release/FlexCell.dll deleted file mode 100644 index 395f35d..0000000 Binary files a/AUTS_Studio/bin/Release/FlexCell.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/FluentFTP.dll b/AUTS_Studio/bin/Release/FluentFTP.dll deleted file mode 100644 index 14597be..0000000 Binary files a/AUTS_Studio/bin/Release/FluentFTP.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/FluentFTP.xml b/AUTS_Studio/bin/Release/FluentFTP.xml deleted file mode 100644 index 417da95..0000000 --- a/AUTS_Studio/bin/Release/FluentFTP.xml +++ /dev/null @@ -1,6755 +0,0 @@ - - - - FluentFTP - - - - - A connection to a single FTP server. Interacts with any FTP/FTPS server and provides a high-level and low-level API to work with files and folders. - - Debugging problems with FTP is much easier when you enable logging. See the FAQ on our Github project page for more info. - - - - - Automatic FTP and FTPS connection negotiation. - This method tries every possible combination of the FTP connection properties, and returns the list of successful connection profiles. - You can configure it to stop after finding the first successful profile, or to collect all successful profiles. - You can then generate code for the profile using the FtpProfile.ToCode method. - If no successful profiles are found, a blank list is returned. - - Find all successful profiles (false) or stop after finding the first successful profile (true)? - - - - - Connect to the given server profile. - - - - - Connect to the given server profile. - - - - - Load the given connection profile and configure the FTP client instance accordingly. - - Connection profile. Not modified. - - - - Automatic FTP and FTPS connection negotiation. - This method tries every possible combination of the FTP connection properties, and connects to the first successful profile. - Returns the FtpProfile if the connection succeeded, or null if it failed. - - - - - Automatic FTP and FTPS connection negotiation. - This method tries every possible combination of the FTP connection properties, and connects to the first successful profile. - Returns the FtpProfile if the connection succeeded, or null if it failed. - - - - - Creates a new instance of an FTP Client. - - - - - Creates a new instance of an FTP Client, with the given host. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, port and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, username and password. - - - - - Creates a new instance of an FTP Client, with the given host, username, password and account - - - - - Creates a new instance of an FTP Client, with the given host, port, username and password. - - - - - Creates a new instance of an FTP Client, with the given host, port, username, password and account - - - - - Creates a new instance of an FTP Client, with the given host. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, port and credentials. - - - - - Creates a new instance of an FTP Client, with the given host, port and credentials. - - - - - Check if the host parameter is valid - - - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - - - Disconnects from the server, releases resources held by this - object. - - - - - Finalizer - - - - - Clones the control connection for opening multiple data streams - - A new control connection with the same property settings as this one - - - - - Connect to the server - - Thrown if this object has been disposed. - - - - - Connect to the server - - Thrown if this object has been disposed. - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - Connect to the FTP server. Overridden in proxy classes. - - - - - Called during Connect(). Typically extended by FTP proxies. - - - - - Called during . Typically extended by FTP proxies. - - - - - Populates the capabilities flags based on capabilities - supported by this server. This method is overridable - so that new features can be supported - - The reply object from the FEAT command. The InfoMessages property will - contain a list of the features the server supported delimited by a new line '\n' character. - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - On authentication failures - - To handle authentication failures without retries, catch FtpAuthenticationException. - - - - - Performs a login on the server. This method is overridable so - that the login procedure can be changed to support, for example, - a FTP proxy. - - On authentication failures - - To handle authentication failures without retries, catch FtpAuthenticationException. - - - - - Disconnects from the server - - - - - Disconnects from the server asynchronously - - - - - Catches the socket stream ssl validation event and fires the event handlers - attached to this object for validating SSL certificates - - The stream that fired the event - The event args used to validate the certificate - - - - Fires the SSL validation event - - Event Args - - - - Compare the specified local file with the remote file on the FTP server using various kinds of quick equality checks. - In Auto mode, the file size and checksum are compared. - Comparing the checksum of a file is a quick way to check if the contents of the files are exactly equal without downloading a copy of the file. - You can use the option flags to compare any combination of: file size, checksum, date modified. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - Types of equality checks to perform. Use Auto to compare file size and checksum. - - - - - Compare the specified local file with the remote file on the FTP server using various kinds of quick equality checks. - In Auto mode, the file size and checksum are compared. - Comparing the checksum of a file is a quick way to check if the contents of the files are exactly equal without downloading a copy of the file. - You can use the option flags to compare any combination of: file size, checksum, date modified. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - Types of equality checks to perform. Use Auto to compare file size and checksum. - The token that can be used to cancel the entire process - - - - - Downloads the specified files into a local single directory. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - Same speed as . - - The full or relative path to the directory that files will be downloaded into. - The full or relative paths to the files on the server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - Provide a callback to track upload progress. - The count of how many files were downloaded successfully. When existing files are skipped, they are not counted. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Downloads the specified files into a local single directory. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - Same speed as . - - The full or relative path to the directory that files will be downloaded. - The full or relative paths to the files on the server - Overwrite if you want the local file to be overwritten if it already exists. Append will also create a new file if it dosen't exists - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track upload progress. - The count of how many files were downloaded successfully. When existing files are skipped, they are not counted. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Downloads the specified file onto the local file system. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - FtpStatus flag indicating if the file was downloaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Downloads the specified file onto the local file system asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - Overwrite if you want the local file to be overwritten if it already exists. Append will also create a new file if it dosen't exists - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide an implementation of IProgress to track download progress. - The token that can be used to cancel the entire process - FtpStatus flag indicating if the file was downloaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Downloads the specified file into the specified stream. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The stream that the file will be written to. Provide a new MemoryStream if you only want to read the file into memory. - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - Provide a callback to track download progress. - If true then the file was downloaded, false otherwise. - - - - Downloads the specified file and return the raw byte array. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The variable that will receive the bytes. - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - Provide a callback to track download progress. - If true then the file was downloaded, false otherwise. - - - - Downloads the specified file into the specified stream asynchronously . - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The stream that the file will be written to. Provide a new MemoryStream if you only want to read the file into memory. - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track download progress. - If true then the file was downloaded, false otherwise. - - - - Downloads the specified file and return the raw byte array. - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the server - The size of the existing file in bytes, or 0 if unknown. The download restarts from this byte index. - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track download progress. - A byte array containing the contents of the downloaded file if successful, otherwise null. - - - - Downloads the specified file into the specified stream asynchronously . - High-level API that takes care of various edge cases internally. - Supports very large files since it downloads data in chunks. - - The full or relative path to the file on the server - The token that can be used to cancel the entire process - A byte array containing the contents of the downloaded file if successful, otherwise null. - - - - Download a file from the server and write the data into the given stream. - Reads data in chunks. Retries if server disconnects midway. - - - - - Calculate transfer chunk size taking rate control into account - - - - - Download a file from the server and write the data into the given stream asynchronously. - Reads data in chunks. Retries if server disconnects midway. - - - - - Deletes a file on the server - - The full or relative path to the file - - - - - Deletes a file from the server asynchronously - - The full or relative path to the file - The token that can be used to cancel the entire process - - - - Checks if a file exists on the server. - - The full or relative path to the file - True if the file exists - - - - - Checks if a file exists on the server asynchronously. - - The full or relative path to the file - The token that can be used to cancel the entire process - True if the file exists, false otherwise - - - - Renames an object on the remote file system. - Low level method that should NOT be used in most cases. Prefer MoveFile() and MoveDirectory(). - Throws exceptions if the file does not exist, or if the destination file already exists. - - The full or relative path to the object - The new full or relative path including the new name of the object - - - - - Renames an object on the remote file system asynchronously. - Low level method that should NOT be used in most cases. Prefer MoveFile() and MoveDirectory(). - Throws exceptions if the file does not exist, or if the destination file already exists. - - The full or relative path to the object - The new full or relative path including the new name of the object - The token that can be used to cancel the entire process - - - - Moves a file on the remote file system from one directory to another. - Always checks if the source file exists. Checks if the dest file exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest file exists? And if it does should we overwrite/skip the operation? - Whether the file was moved - - - - Moves a file asynchronously on the remote file system from one directory to another. - Always checks if the source file exists. Checks if the dest file exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest file exists? And if it does should we overwrite/skip the operation? - The token that can be used to cancel the entire process - Whether the file was moved - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - The token that can be used to cancel the entire process - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The permissions in CHMOD format - The token that can be used to cancel the entire process - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - The token that can be used to cancel the entire process - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - - - - Modify the permissions of the given file/folder. - Only works on *NIX systems, and not on Windows/IIS servers. - Only works if the FTP server supports the SITE CHMOD command - (requires the CHMOD extension to be installed and enabled). - Throws FtpCommandException if there is an issue. - - The full or relative path to the item - The owner permissions - The group permissions - The other permissions - The token that can be used to cancel the entire process - - - - Retrieve the permissions of the given file/folder as an FtpListItem object with all "Permission" properties set. - Throws FtpCommandException if there is an issue. - Returns null if the server did not specify a permission value. - Use `GetChmod` if you required the integer value instead. - - The full or relative path to the item - - - - Retrieve the permissions of the given file/folder as an FtpListItem object with all "Permission" properties set. - Throws FtpCommandException if there is an issue. - Returns null if the server did not specify a permission value. - Use `GetChmod` if you required the integer value instead. - - The full or relative path to the item - The token that can be used to cancel the entire process - - - - Retrieve the permissions of the given file/folder as an integer in the CHMOD format. - Throws FtpCommandException if there is an issue. - Returns 0 if the server did not specify a permission value. - Use `GetFilePermissions` if you required the permissions in the FtpPermission format. - - The full or relative path to the item - - - - Retrieve the permissions of the given file/folder as an integer in the CHMOD format. - Throws FtpCommandException if there is an issue. - Returns 0 if the server did not specify a permission value. - Use `GetFilePermissions` if you required the permissions in the FtpPermission format. - - The full or relative path to the item - The token that can be used to cancel the entire process - - - - Recursively dereferences a symbolic link. See the - MaximumDereferenceCount property for controlling - how deep this method will recurse before giving up. - - The symbolic link - FtpListItem, null if the link can't be dereferenced - - - - - Recursively dereferences a symbolic link - - The symbolic link - The maximum depth of recursion that can be performed before giving up. - FtpListItem, null if the link can't be dereferenced - - - - - Dereference a FtpListItem object - - The item to dereference - Maximum recursive calls - Counter - FtpListItem, null if the link can't be dereferenced - - - - - Dereference a FtpListItem object - - The item to dereference - Maximum recursive calls - Counter - The token that can be used to cancel the entire process - FtpListItem, null if the link can't be dereferenced - - - - Dereference a object asynchronously - - The item to dereference - Maximum recursive calls - The token that can be used to cancel the entire process - FtpListItem, null if the link can't be dereferenced - - - - Dereference a object asynchronously - - The item to dereference - The token that can be used to cancel the entire process - FtpListItem, null if the link can't be dereferenced - - - - Gets the size of a remote file, in bytes. - - The full or relative path of the file - -1 if the command fails, otherwise the file size - - - - - Gets the file size of an object, without locking - - - - - Asynchronously gets the size of a remote file, in bytes. - - The full or relative path of the file - The token that can be used to cancel the entire process - The size of the file, -1 if there was a problem. - - - - Gets the file size of an object, without locking - - - - - Gets the modified time of a remote file. - - The full path to the file - The modified time, or if there was a problem - - - - - Gets the modified time of a remote file asynchronously - - The full path to the file - The token that can be used to cancel the entire process - The modified time, or if there was a problem - - - - Changes the modified time of a remote file - - The full path to the file - The new modified date/time value - - - - Gets the modified time of a remote file asynchronously - - The full path to the file - The new modified date/time value - The token that can be used to cancel the entire process - - - - Uploads the given file paths to a single folder on the server. - All files are placed directly into the given folder regardless of their path on the local filesystem. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - Faster than uploading single files with since it performs a single "file exists" check rather than one check per file. - - The full or relative paths to the files on the local file system. Files can be from multiple folders. - The full or relative path to the directory that files will be uploaded on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance, - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - Provide a callback to track upload progress. - The count of how many files were uploaded successfully. Affected when files are skipped when they already exist. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Uploads the given file paths to a single folder on the server. - All files are placed directly into the given folder regardless of their path on the local filesystem. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - Faster than uploading single files with since it performs a single "file exists" check rather than one check per file. - - Files to be uploaded - The full or relative path to the directory that files will be uploaded on the server - What to do if the file already exists? Skip, overwrite or append? Set this to FtpExists.None for fastest performance but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - Provide a callback to track upload progress. - The count of how many files were downloaded successfully. When existing files are skipped, they are not counted. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Uploads the given file paths to a single folder on the server asynchronously. - All files are placed directly into the given folder regardless of their path on the local filesystem. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - Faster than uploading single files with since it performs a single "file exists" check rather than one check per file. - - The full or relative paths to the files on the local file system. Files can be from multiple folders. - The full or relative path to the directory that files will be uploaded on the server - What to do if the file already exists? Skip, overwrite or append? Set this to FtpExists.None for fastest performance but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Used to determine how errors are handled - The token that can be used to cancel the entire process - Provide an implementation of IProgress to track upload progress. - The count of how many files were uploaded successfully. Affected when files are skipped when they already exist. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - - - Uploads the specified file directly onto the server. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - - - - - Uploads the specified file directly onto the server asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full or relative path to the file on the local file system - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - The token that can be used to cancel the entire process. - Provide an implementation of IProgress to track upload progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted the existsMode will automatically be set to . - - - - - Uploads the specified stream as a file onto the server. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a stream - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Provide a callback to track upload progress. - - - - Uploads the specified byte array as a file onto the server. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a byte array - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - Provide a callback to track upload progress. - - - - Uploads the specified stream as a file onto the server asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a stream - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance, - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - The token that can be used to cancel the entire process. - Provide an implementation of IProgress to track upload progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - - - Uploads the specified byte array as a file onto the server asynchronously. - High-level API that takes care of various edge cases internally. - Supports very large files since it uploads data in chunks. - - The full data of the file, as a byte array - The full or relative path to the file on the server - What to do if the file already exists? Skip, overwrite or append? Set this to for fastest performance, - but only if you are SURE that the files do not exist on the server. - Create the remote directory if it does not exist. Slows down upload due to additional checks required. - The token that can be used to cancel the entire process. - Provide an implementation of IProgress to track upload progress. - FtpStatus flag indicating if the file was uploaded, skipped or failed to transfer. - - - - Upload the given stream to the server as a new file. Overwrites the file if it exists. - Writes data in chunks. Retries if server disconnects midway. - - - - - Upload the given stream to the server as a new file asynchronously. Overwrites the file if it exists. - Writes data in chunks. Retries if server disconnects midway. - - - - - Sends progress to the user, either a value between 0-100 indicating percentage complete, or -1 for indeterminate. - - - - - Sends progress to the user, either a value between 0-100 indicating percentage complete, or -1 for indeterminate. - - - - - Downloads the specified directory onto the local file system. - In Mirror mode, we will download missing files, and delete any extra files from disk that are not present on the server. This is very useful when creating an exact local backup of an FTP directory. - In Update mode, we will only download missing files and preserve any extra files on disk. This is useful when you want to simply download missing files from an FTP directory. - Only downloads the files and folders matching all the rules provided, if any. - All exceptions during downloading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk to download into. It is created if it does not exist. - The full path of the remote FTP folder that you want to download. If it does not exist, an empty result list is returned. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track download progress. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Downloads the specified directory onto the local file system. - In Mirror mode, we will download missing files, and delete any extra files from disk that are not present on the server. This is very useful when creating an exact local backup of an FTP directory. - In Update mode, we will only download missing files and preserve any extra files on disk. This is useful when you want to simply download missing files from an FTP directory. - Only downloads the files and folders matching all the rules provided, if any. - All exceptions during downloading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk to download into. It is created if it does not exist. - The full path of the remote FTP folder that you want to download. If it does not exist, an empty result list is returned. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide an implementation of IProgress to track upload progress. - The token that can be used to cancel the entire process - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Get a list of all the files and folders that need to be downloaded - - - - - Download all the listed files and folders from the main directory - - - - - Download all the listed files and folders from the main directory - - - - - Delete the extra local files if in mirror mode - - - - - Check if the local file can be deleted, based on the DownloadDirectoryDeleteExcluded property - - - - - Deletes the specified directory and all its contents. - - The full or relative path of the directory to delete - - - - - Deletes the specified directory and all its contents. - - The full or relative path of the directory to delete - Useful to delete hidden files or dot-files. - - - - - Deletes the specified directory and all its contents. - - The full or relative path of the directory to delete - If the directory is not empty, remove its contents - Useful to delete hidden files or dot-files. - - - - - Checks whether will be called recursively or not. - - - - - - - Asynchronously removes a directory and all its contents. - - The full or relative path of the directory to delete - The token that can be used to cancel the entire process - - - - Asynchronously removes a directory and all its contents. - - The full or relative path of the directory to delete - Useful to delete hidden files or dot-files. - The token that can be used to cancel the entire process - - - - Asynchronously removes a directory. Used by and - . - - The full or relative path of the directory to delete - Delete the contents before deleting the folder - Useful to delete hidden files or dot-files. - The token that can be used to cancel the entire process - - - - - Tests if the specified directory exists on the server. This - method works by trying to change the working directory to - the path specified. If it succeeds, the directory is changed - back to the old working directory and true is returned. False - is returned otherwise and since the CWD failed it is assumed - the working directory is still the same. - - The path of the directory - True if it exists, false otherwise. - - - - - Tests if the specified directory exists on the server asynchronously. This - method works by trying to change the working directory to - the path specified. If it succeeds, the directory is changed - back to the old working directory and true is returned. False - is returned otherwise and since the CWD failed it is assumed - the working directory is still the same. - - The full or relative path of the directory to check for - The token that can be used to cancel the entire process - True if the directory exists. False otherwise. - - - - Creates a directory on the server. If the preceding - directories do not exist, then they are created. - - The full or relative path to the new remote directory - - - - - Creates a directory on the server - - The full or relative path to the new remote directory - Try to force all non-existent pieces of the path to be created - - True if directory was created, false if it was skipped - - - - Creates a remote directory asynchronously - - The full or relative path to the new remote directory - Try to create the whole path if the preceding directories do not exist - The token that can be used to cancel the entire process - True if directory was created, false if it was skipped - - - - Creates a remote directory asynchronously. If the preceding - directories do not exist, then they are created. - - The full or relative path to the new remote directory - The token that can be used to cancel the entire process - - - - Moves a directory on the remote file system from one directory to another. - Always checks if the source directory exists. Checks if the dest directory exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest directory exists? And if it does should we overwrite/skip the operation? - Whether the directory was moved - - - - Moves a directory asynchronously on the remote file system from one directory to another. - Always checks if the source directory exists. Checks if the dest directory exists based on the `existsMode` parameter. - Only throws exceptions for critical errors. - - The full or relative path to the object - The new full or relative path including the new name of the object - Should we check if the dest directory exists? And if it does should we overwrite/skip the operation? - The token that can be used to cancel the entire process - Whether the directory was moved - - - - Sets the work directory on the server - - The path of the directory to change to - - - - - Sets the working directory on the server asynchronously - - The directory to change to - The token that can be used to cancel the entire process - - - - Gets the current working directory - - The current working directory, ./ if the response couldn't be parsed. - - - - - Gets the current working directory asynchronously - - The current working directory, ./ if the response couldn't be parsed. - - - - Uploads the specified directory onto the server. - In Mirror mode, we will upload missing files, and delete any extra files from the server that are not present on disk. This is very useful when publishing an exact copy of a local folder onto an FTP server. - In Update mode, we will only upload missing files and preserve any extra files on the server. This is useful when you want to simply upload missing files to a server. - Only uploads the files and folders matching all the rules provided, if any. - All exceptions during uploading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk that you want to upload. If it does not exist, an empty result list is returned. - The full path of the remote FTP folder to upload into. It is created if it does not exist. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the upload or restart the upload? - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track upload progress. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Uploads the specified directory onto the server. - In Mirror mode, we will upload missing files, and delete any extra files from the server that are not present on disk. This is very useful when publishing an exact copy of a local folder onto an FTP server. - In Update mode, we will only upload missing files and preserve any extra files on the server. This is useful when you want to simply upload missing files to a server. - Only uploads the files and folders matching all the rules provided, if any. - All exceptions during uploading are caught, and the exception is stored in the related FtpResult object. - - The full path of the local folder on disk that you want to upload. If it does not exist, an empty result list is returned. - The full path of the remote FTP folder to upload into. It is created if it does not exist. - Mirror or Update mode, as explained above - If the file exists on disk, should we skip it, resume the upload or restart the upload? - Sets if checksum verification is required for a successful upload and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide an implementation of IProgress to track upload progress. - The token that can be used to cancel the entire process - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Get a list of all the sub directories that need to be created within the main directory - - - - - Create all the sub directories within the main directory - - - - - Create all the sub directories within the main directory - - - - - Get a list of all the files that need to be uploaded within the main directory - - - - - Upload all the files within the main directory - - - - - Check if the file is cleared to be uploaded, taking its existance/filesize and existsMode options into account. - - - - - Upload all the files within the main directory - - - - - Delete the extra remote files if in mirror mode and the directory was pre-existing - - - - - Delete the extra remote files if in mirror mode and the directory was pre-existing - - - - - Check if the remote file can be deleted, based on the UploadDirectoryDeleteExcluded property - - - - - Opens a FXP PASV connection between the source FTP Server and the destination FTP Server - - FtpClient instance of the destination FTP Server - A data stream ready to be used - - - - Opens a FXP PASV connection between the source FTP Server and the destination FTP Server - - Valid FTP connection to the destination FTP Server - A data stream ready to be used - - - - Disposes and disconnects this FTP client if it was auto-created for an internal operation. - - - - - Transfer the specified file from the source FTP Server to the destination FTP Server using the FXP protocol. - High-level API that takes care of various edge cases internally. - - The full or relative path to the file on the source FTP Server - Valid FTP connection to the destination FTP Server - The full or relative path to destination file on the remote FTP Server - Indicates if the folder should be created on the remote FTP Server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - Returns a FtpStatus indicating if the file was transfered. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Transfer the specified file from the source FTP Server to the destination FTP Server asynchronously using the FXP protocol. - High-level API that takes care of various edge cases internally. - - The full or relative path to the file on the source FTP Server - Valid FTP connection to the destination FTP Server - The full or relative path to destination file on the remote FTP Server - Indicates if the folder should be created on the remote FTP Server - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Provide a callback to track download progress. - The token that can be used to cancel the entire process - Returns a FtpStatus indicating if the file was transfered. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically be set to true for subsequent attempts. - - - - - Transfers a file from the source FTP Server to the destination FTP Server via the FXP protocol - - - - - Transfers a file from the source FTP Server to the destination FTP Server via the FXP protocol asynchronously. - - - - - Transfer the specified directory from the source FTP Server onto the remote FTP Server using the FXP protocol. - You will need to create a valid connection to your remote FTP Server before calling this method. - In Update mode, we will only transfer missing files and preserve any extra files on the remote FTP Server. This is useful when you want to simply transfer missing files from an FTP directory. - Currently Mirror mode is not implemented. - Only transfers the files and folders matching all the rules provided, if any. - All exceptions during transfer are caught, and the exception is stored in the related FtpResult object. - - The full or relative path to the folder on the source FTP Server. If it does not exist, an empty result list is returned. - Valid FTP connection to the destination FTP Server - The full or relative path to destination folder on the remote FTP Server - Only Update mode is currently implemented - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track download progress. - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Transfer the specified directory from the source FTP Server onto the remote FTP Server asynchronously using the FXP protocol. - You will need to create a valid connection to your remote FTP Server before calling this method. - In Update mode, we will only transfer missing files and preserve any extra files on the remote FTP Server. This is useful when you want to simply transfer missing files from an FTP directory. - Currently Mirror mode is not implemented. - Only transfers the files and folders matching all the rules provided, if any. - All exceptions during transfer are caught, and the exception is stored in the related FtpResult object. - - The full or relative path to the folder on the source FTP Server. If it does not exist, an empty result list is returned. - Valid FTP connection to the destination FTP Server - The full or relative path to destination folder on the remote FTP Server - Only Update mode is currently implemented - If the file exists on disk, should we skip it, resume the download or restart the download? - Sets if checksum verification is required for a successful download and what to do if it fails verification (See Remarks) - Only files and folders that pass all these rules are downloaded, and the files that don't pass are skipped. In the Mirror mode, the files that fail the rules are also deleted from the local folder. - Provide a callback to track download progress. - The token that can be used to cancel the entire process - - If verification is enabled (All options other than ) the hash will be checked against the server. If the server does not support - any hash algorithm, then verification is ignored. If only is set then the return of this method depends on both a successful - upload & verification. Additionally, if any verify option is set and a retry is attempted then overwrite will automatically switch to true for subsequent attempts. - If is set and is not set, then individual verification errors will not cause an exception - to propagate from this method. - - - Returns a listing of all the remote files, indicating if they were downloaded, skipped or overwritten. - Returns a blank list if nothing was transfered. Never returns null. - - - - - Get the first checksum algorithm mutually supported by both servers. - - - - - Gets the currently selected hash algorithm for the HASH command. - - - This feature is experimental. See this link for details: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - The flag or if there was a problem. - - - - - Gets the currently selected hash algorithm for the HASH command asynchronously. - - The token that can be used to cancel the entire process - The flag or if there was a problem. - - - - Sets the hash algorithm on the server to use for the HASH command. - - - If you specify an algorithm not listed in - a will be thrown - so be sure to query that list of Flags before - selecting a hash algorithm. Support for the - HASH command is experimental. Please see - the following link for more details: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - Hash Algorithm - Thrown if the selected algorithm is not available on the server - - - - - Sets the hash algorithm on the server to be used with the HASH command asynchronously. - - Hash algorithm to use - The token that can be used to cancel the entire process - Thrown if the selected algorithm is not available on the server - - - - Gets the hash of an object on the server using the currently selected hash algorithm. - - - Supported algorithms, if any, are available in the - property. You should confirm that it's not equal - to before calling this method - otherwise the server trigger a - due to a lack of support for the HASH command. You can - set the algorithm using the method and - you can query the server for the current hash algorithm - using the method. - - Full or relative path of the object to compute the hash for. - The hash of the file. - - Thrown if the property is , - the remote path does not exist, or the command cannot be executed. - - Path argument is null - Thrown when an unknown hash algorithm type is returned by the server - - - - - Parses the recieved hash value into the FtpHash object - - - - - Gets the hash of an object on the server using the currently selected hash algorithm asynchronously. - - - Supported algorithms, if any, are available in the - property. You should confirm that it's not equal - to before calling this method - otherwise the server trigger a - due to a lack of support for the HASH command. You can - set the algorithm using the method and - you can query the server for the current hash algorithm - using the method. - - The file you want the server to compute the hash for - The token that can be used to cancel the entire process - - Thrown if the property is , - the remote path does not exist, or the command cannot be executed. - - Path argument is null - Thrown when an unknown hash algorithm type is returned by the server - The hash of the file. - - - - Retrieves a checksum of the given file using the specified checksum algorithum, or using the first available algorithm that the server supports. - - - The algorithm used goes in this order: - 1. HASH command; server preferred algorithm. See - 2. MD5 / XMD5 / MMD5 commands - 3. XSHA1 command - 4. XSHA256 command - 5. XSHA512 command - 6. XCRC command - - Full or relative path of the file to checksum - Specify an algorithm that you prefer, or NONE to use the first available algorithm. If the preferred algorithm is not supported, a blank hash is returned. - object containing the value and algorithm. Use the property to - determine if this command was successful. s can be thrown from - the underlying calls. - - The command fails - - - - Retrieves a checksum of the given file using the specified checksum algorithum, or using the first available algorithm that the server supports. - - - The algorithm used goes in this order: - 1. HASH command; server preferred algorithm. See - 2. MD5 / XMD5 / MMD5 commands - 3. XSHA1 command - 4. XSHA256 command - 5. XSHA512 command - 6. XCRC command - - Full or relative path of the file to checksum - The token that can be used to cancel the entire process - Specify an algorithm that you prefer, or NONE to use the first available algorithm. If the preferred algorithm is not supported, a blank hash is returned. - object containing the value and algorithm. Use the property to - determine if this command was successful. s can be thrown from - the underlying calls. - - The command fails - - - - Gets the MD5 hash of the specified file using MD5. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the MD5 hash. - The command fails - - - - Gets the MD5 hash of the specified file using MD5 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the MD5 hash. - The command fails - - - - Get the CRC value of the specified file. This is a non-standard extension of the protocol - and may throw a FtpCommandException if the server does not support it. - - The path of the file you'd like the server to compute the CRC value for. - The response from the server, typically the XCRC value. FtpCommandException thrown on error - The command fails - - - - Gets the CRC hash of the specified file using XCRC asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the CRC hash. - The command fails - - - - Gets the MD5 hash of the specified file using XMD5. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the MD5 hash. - The command fails - - - - Gets the MD5 hash of the specified file using XMD5 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the MD5 hash. - The command fails - - - - Gets the SHA-1 hash of the specified file using XSHA1. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the SHA-1 hash. - The command fails - - - - Gets the SHA-1 hash of the specified file using XSHA1 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the SHA-1 hash. - The command fails - - - - Gets the SHA-256 hash of the specified file using XSHA256. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the SHA-256 hash. - The command fails - - - - Gets the SHA-256 hash of the specified file using XSHA256 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the SHA-256 hash. - The command fails - - - - Gets the SHA-512 hash of the specified file using XSHA512. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - Server response, presumably the SHA-512 hash. - The command fails - - - - Gets the SHA-512 hash of the specified file using XSHA512 asynchronously. This is a non-standard extension - to the protocol and may or may not work. A FtpCommandException will be - thrown if the command fails. - - Full or relative path to remote file - The token that can be used to cancel the entire process - Server response, presumably the SHA-512 hash. - The command fails - - - - Returns information about a file system object. Returns null if the server response can't - be parsed or the server returns a failure completion code. The error for a failure - is logged with FtpTrace. No exception is thrown on error because that would negate - the usefulness of this method for checking for the existence of an object. - - The path of the file or folder - Get the accurate modified date using another MDTM command - A FtpListItem object - - - - Return information about a remote file system object asynchronously. - - - You should check the property for the - flag before calling this method. Failing to do so will result in an InvalidOperationException - being thrown when the server does not support machine listings. Returns null if the server response can't - be parsed or the server returns a failure completion code. The error for a failure - is logged with FtpTrace. No exception is thrown on error because that would negate - the usefulness of this method for checking for the existence of an object. - Path of the item to retrieve information about - Get the accurate modified date using another MDTM command - The token that can be used to cancel the entire process - Thrown if the server does not support this Capability - A if the command succeeded, or null if there was a problem. - - - - Gets a file listing from the server from the current working directory. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - An array of FtpListItem objects - - - - - Gets a file listing from the server. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path of the directory to list - An array of FtpListItem objects - - - - - Gets a file listing from the server. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path of the directory to list - Options that dictate how a list is performed and what information is gathered. - An array of FtpListItem objects - - - - - Get the records of a file listing and retry if temporary failure. - - - - - Gets a file listing from the server asynchronously. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path to list - Options that dictate how the list operation is performed - The token that can be used to cancel the entire process - An array of items retrieved in the listing - - - - Get the records of a file listing and retry if temporary failure. - - - - - Gets a file listing from the server asynchronously. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - The path to list - The token that can be used to cancel the entire process - An array of items retrieved in the listing - - - - Gets a file listing from the server asynchronously. Each object returned - contains information about the file that was able to be retrieved. - - - If a property is equal to then it means the - date in question was not able to be retrieved. If the property - is equal to 0, then it means the size of the object could also not - be retrieved. - - An array of items retrieved in the listing - - - - Recursive method of GetListing, to recurse through directories on servers that do not natively support recursion. - Automatically called by GetListing where required. - Uses flat recursion instead of head recursion. - - The path of the directory to list - Options that dictate how a list is performed and what information is gathered. - An array of FtpListItem objects - - - - Recursive method of GetListingAsync, to recurse through directories on servers that do not natively support recursion. - Automatically called by GetListingAsync where required. - Uses flat recursion instead of head recursion. - - The path of the directory to list - Options that dictate how a list is performed and what information is gathered. - An array of FtpListItem objects - - - - Returns a file/directory listing using the NLST command. - - A string array of file and directory names if any were returned. - - - - Returns a file/directory listing using the NLST command. - - The path of the directory to list - A string array of file and directory names if any were returned. - - - - - Returns a file/directory listing using the NLST command asynchronously - - The path of the directory to list - The token that can be used to cancel the entire process - An array of file and directory names if any were returned. - - - - Returns a file/directory listing using the NLST command asynchronously - - An array of file and directory names if any were returned. - - - - Used to improve performance of OpenPassiveDataStream. - Enhanced-passive mode is tried once, and if not supported, is not tried again. - - - - - Used to improve performance of GetFileSize. - SIZE command is tried, and if the server cannot send it in ASCII mode, we switch to binary each time you call GetFileSize. - However most servers will support ASCII, so we can get the file size without switching to binary, improving performance. - - - - - Used to improve performance of GetListing. - You can set this to true by setting the RecursiveList property. - - - - - Used to automatically dispose cloned connections after FXP transfer has ended. - - - - - These flags must be reset every time we connect, to allow for users to connect to - different FTP servers with the same client object. - - - - - These flags must be copied when we quickly clone the connection. - - - - - Used for internally synchronizing access to this - object from multiple threads - - - - - For usage by FTP proxies only - - - - - A list of asynchronous methods that are in progress - - - - - Control connection socket stream - - - - - Gets a value indicating if this object has already been disposed. - - - - - Gets the base stream for talking to the server via - the control connection. - - - - - Flags specifying which versions of the internet protocol to - support when making a connection. All addresses returned during - name resolution are tried until a successful connection is made. - You can fine tune which versions of the internet protocol to use - by adding or removing flags here. I.e., setting this property - to FtpIpVersion.IPv4 will cause the connection process to - ignore IPv6 addresses. The default value is ANY version. - - - - - Gets or sets the length of time in milliseconds - that must pass since the last socket activity - before calling - on the socket to test for connectivity. - Setting this interval too low will - have a negative impact on performance. Setting this - interval to 0 disables Polling all together. - The default value is 15 seconds. - - - - - Gets or sets a value indicating whether a test should be performed to - see if there is stale (unrequested data) sitting on the socket. In some - cases the control connection may time out but before the server closes - the connection it might send a 4xx response that was unexpected and - can cause synchronization errors with transactions. To avoid this - problem the method checks to see if there is any data - available on the socket before executing a command. On Azure hosting - platforms this check can cause an exception to be thrown. In order - to work around the exception you can set this property to false - which will skip the test entirely however doing so eliminates the - best effort attempt of detecting such scenarios. See this thread - for more details about the Azure problem: - https://netftp.codeplex.com/discussions/535879 - - - - - Gets a value indicating if the connection is alive - - - - - When this value is set to true (default) the control connection - is cloned and a new connection the server is established for the - data channel operation. This is a thread safe approach to make - asynchronous operations on a single control connection transparent - to the developer. - - - - - Gets or sets the length of time in milliseconds after last command - (NOOP or other) that a NOOP command is sent by . - This is called during downloading/uploading if - is false. Setting this - interval to 0 disables all together. - The default value is 0 (disabled). - - - - - When this value is set to true (default) the control connection - will set which features are available by executing the FEAT command - when the connect method is called. - - - - - Gets a value indicating if this control connection is a clone. This property - is used with data streams to determine if the connection should be closed - when the stream is closed. Servers typically only allow 1 data connection - per control connection. If you try to open multiple data connections this - object will be cloned for 2 or more resulting in N new connections to the - server. - - - - - Gets or sets the text encoding being used when talking with the server. The default - value is however upon connection, the client checks - for UTF8 support and if it's there this property is switched over to - . Manually setting this value overrides automatic detection - based on the FEAT list; if you change this value it's always used - regardless of what the server advertises, if anything. - - - - - The server to connect to - - - - - The port to connect to. If this value is set to 0 (Default) the port used - will be determined by the type of SSL used or if no SSL is to be used it - will automatically connect to port 21. - - - - - Credentials used for authentication - - - - - Gets or sets a value that controls the maximum depth - of recursion that will follow symbolic - links before giving up. You can also specify the value - to be used as one of the overloaded parameters to the - method. The default value is 20. Specifying - -1 here means indefinitely try to resolve a link. This is - not recommended for obvious reasons (stack overflow). - - - - - Client certificates to be used in SSL authentication process - - - - - Delegate used for resolving local address, used for active data connections - This can be used in case you're behind a router, but port forwarding is configured to forward the - ports from your router to your internal IP. In that case, we need to send the router's IP instead of our internal IP. - See example: FtpClient.GetPublicIP -> This uses Ipify api to find external IP - - - - - Ports used for Active Data Connection - - - - - Data connection type, default is AutoPassive which tries - a connection with EPSV first and if it fails then tries - PASV before giving up. If you know exactly which kind of - connection you need you can slightly increase performance - by defining a specific type of passive or active data - connection here. - - - - - Disconnect from the server without sending QUIT. This helps - work around IOExceptions caused by buggy connection resets - when closing the control connection. - - - - - Gets or sets the length of time in milliseconds to wait for a connection - attempt to succeed before giving up. Default is 15000 (15 seconds). - - - - - Gets or sets the length of time wait in milliseconds for data to be - read from the underlying stream. The default value is 15000 (15 seconds). - - - - - Gets or sets the length of time in milliseconds for a data connection - to be established before giving up. Default is 15000 (15 seconds). - - - - - Gets or sets the length of time in milliseconds the data channel - should wait for the server to send data. Default value is - 15000 (15 seconds). - - - - - Gets or sets a value indicating if should be set on - the underlying stream's socket. If the connection is alive, the option is - adjusted in real-time. The value is stored and the KeepAlive option is set - accordingly upon any new connections. The value set here is also applied to - all future data streams. It has no affect on cloned control connections or - data connections already in progress. The default value is false. - - - - - Gets the server capabilities represented by an array of capability flags - - - - - Get the hash types supported by the server, if any. This - is a recent extension to the protocol that is not fully - standardized and is not guaranteed to work. See here for - more details: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - - - - Type of SSL to use, or none. Default is none. Explicit is TLS, Implicit is SSL. - - - - - Indicates if data channel transfers should be encrypted. Only valid if - property is not equal to . - - - - - Indicates if the encryption should be disabled immediately after connecting using a CCC command. - This is useful when you have a FTP firewall that requires plaintext FTP, but your server mandates FTPS connections. - - - - - Encryption protocols to use. Only valid if EncryptionMode property is not equal to . - Default value is .NET Framework defaults from the class. - - - - - Whether to use SSL Buffering to speed up data transfer during FTP operations - - - - - Checks if FTPS/SSL encryption is currently active. - Useful to see if your server supports FTPS, when using FtpEncryptionMode.Auto. - - - - - Event is fired to validate SSL certificates. If this event is - not handled and there are errors validating the certificate - the connection will be aborted. - Not fired if ValidateAnyCertificate is set to true. - - - - - - Accept any SSL certificate received from the server and skip performing - the validation using the ValidateCertificate callback. - Useful for Powershell users. - - - - - Indicates if the certificate revocation list is checked during authentication. - Useful when you need to maintain the certificate chain validation, - but skip the certificate revocation check. - - - - - Gets the type of system/server that we're connected to. Typically begins with "WINDOWS" or "UNIX". - - - - - Gets the type of the FTP server software that we're connected to. - - - - - Gets the type of the FTP server handler. - This is automatically set based on the detected FTP server, if it is detected. - You can manually set this property to implement handling for a custom FTP server. - - - - - Gets the operating system of the FTP server that we're connected to. - - - - Gets the connection type - - - Gets the last reply received from the server - - - - Controls if the file listings are downloaded in Binary or ASCII mode. - - - - - File listing parser to be used. - Automatically calculated based on the type of the server, unless changed. - - - - - Culture used to parse file listings - - - - - Custom file listing parser to be used. - - - - - Callback format to implement your custom FTP listing line parser. - - The line from the listing - The server capabilities - The FTP client - Return an FtpListItem object if the line can be parsed, else return null - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - The timezone of the FTP server. If the server is in Tokyo with UTC+9 then set this to 9. - If the server returns timestamps in UTC then keep this 0. - - - - - Server timestamps are converted into the given timezone. - ServerTime will return the original timestamp. - LocalTime will convert the timestamp into your local machine's timezone. - UTC will convert the timestamp into UTC format (GMT+0). - You need to set TimeZone and LocalTimeZone (.NET core only) for these to work. - - - - - If true, increases performance of GetListing by reading multiple lines - of the file listing at once. If false then GetListing will read file - listings line-by-line. If GetListing is having issues with your server, - set it to false. - - The number of bytes read is based upon . - - - - - Bytes to read during GetListing. Only honored if is true. - - - - - Gets or sets the number of bytes transferred in a single chunk (a single FTP command). - Used by / and / - to transfer large files in multiple chunks. - - - - - Gets or sets the size of the file buffer when reading and writing files on the local file system. - Used by / and / - and all the other file and directory transfer methods. - - - - - Files within this size are read and written in a single call to the disk, thereby greatly increasing transfer performance. Measured in bytes. - Reduce this if you notice large memory consumption by FluentFTP. Set this to 0 to disable quick transfer. - - - - - Gets or sets the retry attempts allowed when a verification failure occurs during download or upload. - This value must be set to 1 or more. - - - - - Rate limit for uploads in kbyte/s. Set this to 0 for unlimited speed. - Honored by high-level API such as Upload(), Download(), UploadFile(), DownloadFile().. - - - - - Rate limit for downloads in kbytes/s. Set this to 0 for unlimited speed. - Honored by high-level API such as Upload(), Download(), UploadFile(), DownloadFile().. - - - - - Controls if zero-byte files should be downloaded or skipped. - If false, then no file is created/overwritten into the filesystem. - - - - - Controls if the high-level API uploads files in Binary or ASCII mode. - - - - - Controls if the high-level API downloads files in Binary or ASCII mode. - - - - - Controls if the UploadDirectory API deletes the excluded files when uploading in Mirror mode. - If true, then any files that are excluded will be deleted from the FTP server if they are - excluded from the local system. This is done to keep the server in sync with the local system. - But if it is false, the excluded files are not touched on the server, and simply ignored. - - - - - Controls if the DownloadDirectory API deletes the excluded files when downloading in Mirror mode. - If true, then any files that are excluded will be deleted from the local filesystem if they are - excluded from the FTP server. This is done to keep the local filesystem in sync with the FTP server. - But if it is false, the excluded files are not touched on the local filesystem, and simply ignored. - - - - - Controls if the FXP server-to-server file transfer API uses Binary or ASCII mode. - - - - - Controls how often the progress reports are sent during an FXP file transfer. - The default value is 1000 (1 second). - - - - - Controls if the HOST command is sent immediately after the handshake. - Useful when you are using shared hosting and you need to inform the - FTP server which domain you want to connect to. - - - - - Controls which domain is sent with the HOST command. - If this is null, then the Host parameter of the FTP client is sent. - - - - - Connects to the specified URI. If the path specified by the URI ends with a - / then the working directory is changed to the path specified. - - The URI to parse - Indicates if a ssl certificate should be validated when using FTPS schemes - FtpClient object - - - - Connects to the specified URI. If the path specified by the URI ends with a - / then the working directory is changed to the path specified. - - The URI to parse - FtpClient object - - - - Calculate you public internet IP using the ipify service. Returns null if cannot be calculated. - - Public IP Address - - - - When last command was sent (NOOP or other), for having - respect the . - - - - - Executes a command - - The command to execute - The servers reply to the command - - - - - Performs an asynchronous execution of the specified command - - The command to execute - The token that can be used to cancel the entire process - The servers reply to the command - - - - Sends the NOOP command according to (effectively a no-op if 0). - Please call as needed to read the "OK" command sent by the server and prevent stale data on the socket. - Note that response is not guaranteed by all FTP servers when sent during file transfers. - - true if NOOP command was sent - - - - Sends the NOOP command according to (effectively a no-op if 0). - Please call as needed to read the "OK" command sent by the server and prevent stale data on the socket. - Note that response is not guaranteed by all FTP servers when sent during file transfers. - - - true if NOOP command was sent - - - - Retrieves a reply from the server. Do not execute this method - unless you are sure that a reply has been sent, i.e., you - executed a command. Doing so will cause the code to hang - indefinitely waiting for a server reply that is never coming. - - FtpReply representing the response from the server - - - - - Decodes the given FTP response string into a FtpReply, seperating the FTP return code and message. - Returns true if the string was decoded correctly or false if it is not a standard format FTP response. - - - - - Retrieves a reply from the server. Do not execute this method - unless you are sure that a reply has been sent, i.e., you - executed a command. Doing so will cause the code to hang - indefinitely waiting for a server reply that is never coming. - - FtpReply representing the response from the server - - - - - Opens the specified type of passive data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - A data stream ready to be used - - - - Opens the specified type of passive data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - A data stream ready to be used - - - - Parse the host and port number from an EPSV response - - - - - Parse the host and port number from an PASV or PASVEX response - - - - - Returns the ip address to be sent to the server for the active connection - - - - - - - Opens the specified type of active data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - A data stream ready to be used - - - - Opens the specified type of active data stream - - Type of passive data stream to open - The command to execute that requires a data stream - Restart location in bytes for file transfer - The token that can be used to cancel the entire process - A data stream ready to be used - - - - Opens a data stream. - - The command to execute that requires a data stream - Restart location in bytes for file transfer - The data stream. - - - - Opens a data stream. - - The command to execute that requires a data stream - Restart location in bytes for file transfer - The token that can be used to cancel the entire process - The data stream. - - - - Disconnects a data stream - - The data stream to close - - - - Open a local port on the given ActivePort or a random port. - - - - - - Opens the specified file for reading - - The full or relative path of the file - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - Resume location - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - Resume location - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - Resume location - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for reading the file on the server - - - - - Opens the specified file for reading - - The full or relative path of the file - ASCII/Binary - Resume location - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for reading the file on the server - - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - ASCII/Binary - Resume location - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - The token that can be used to cancel the entire process - A stream for reading the file on the server - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - ASCII/Binary - Resume location - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - ASCII/Binary - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - Resume location - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for reading asynchronously - - The full or relative path of the file - The token that can be used to cancel the entire process - The token that can be used to cancel the entire process - A readable stream of the remote file - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - A stream for writing to the file on the server - - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - ASCII/Binary - A stream for writing to the file on the server - - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for writing to the file on the server - - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - Full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. asynchronously - - Full or relative path of the file - ASCII/Binary - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file for writing. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. asynchronously - - Full or relative path of the file - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file for appending. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - The full or relative path to the file to be opened - A stream for writing to the file on the server - - - - - Opens the specified file for appending. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - The full or relative path to the file to be opened - ASCII/Binary - A stream for writing to the file on the server - - - - - Opens the specified file for appending. Please call GetReply() after you have successfully transfered the file to read the "OK" command sent by the server and prevent stale data on the socket. - - The full or relative path to the file to be opened - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - A stream for writing to the file on the server - - - - - Opens the specified file to be appended asynchronously - - Full or relative path of the file - ASCII/Binary - Only set this to false if you are SURE that the file does not exist. If true, it reads the file size and saves it into the stream length. - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file to be appended asynchronously - - Full or relative path of the file - ASCII/Binary - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Opens the specified file to be appended asynchronously - - Full or relative path of the file - The token that can be used to cancel the entire process - A stream for writing to the file on the server - - - - Sets the data type of information sent over the data stream - - ASCII/Binary - - - Internal method that handles actually setting the data type. - Thrown when a FTP Command error condition occurs. - Thrown when a FTP error condition occurs. - ASCII/Binary. - This method doesn't do any locking to prevent recursive lock scenarios. Callers must do their own locking. - - - - Sets the data type of information sent over the data stream asynchronously - - ASCII/Binary - The token that can be used to cancel the entire process - - - - Sets the data type of information sent over the data stream asynchronously - - ASCII/Binary - The token that can be used to cancel the entire process - - - - If reverse is false, converts the date provided by the FTP server into the timezone required locally. - If reverse is true, converts the local timezone date into the date required by the FTP server. - - Affected by properties: TimeConversion, TimeZone, LocalTimeZone. - - - - - Performs a bitwise and to check if the specified - flag is set on the property. - - The to check for - True if the feature was found, false otherwise - - - - Retrieves the delegate for the specified IAsyncResult and removes - it from the m_asyncmethods collection if the operation is successful - - Type of delegate to retrieve - The IAsyncResult to retrieve the delegate for - The delegate that generated the specified IAsyncResult - - - - Ensure a relative path is absolute by appending the working dir - - - - - Ensure a relative path is absolute by appending the working dir - - - - - Disables UTF8 support and changes the Encoding property - back to ASCII. If the server returns an error when trying - to turn UTF8 off a FtpCommandException will be thrown. - - - - - Data shouldn't be on the socket, if it is it probably means we've been disconnected. - Read and discard whatever is there and optionally close the connection. - Returns the stale data as text, if any, or null if none was found. - - close the connection? - even read encrypted data? - trace data to logs? - - - - Data shouldn't be on the socket, if it is it probably means we've been disconnected. - Read and discard whatever is there and optionally close the connection. - Returns the stale data as text, if any, or null if none was found. - - close the connection? - even read encrypted data? - trace data to logs? - The token that can be used to cancel the entire process - - - - Checks if this FTP/FTPS connection is made through a proxy. - - - - - Returns true if the file passes all the rules - - - - - Add a custom listener here to get events every time a message is logged. - - - - - Log a function call with relevant arguments - - The name of the API function - The args passed to the function - - - - Log a message - - The type of tracing event - The message to write - - - - Log a message, adding an automatic prefix to the message based on the `eventType` - - The type of tracing event - The message to write - - - - Interface for the FtpClient class. - For detailed documentation of the methods, please see the FtpClient class or check the Wiki on the FluentFTP Github project. - - - - - Server features - - - - - This server said it doesn't support anything! - - - - - Supports the MLST command - - - - - Supports the SIZE command - - - - - Supports the MDTM command - - - - - Supports download/upload stream resumes - - - - - Supports UTF8 - - - - - PRET Command used in distributed ftp server software DrFTPD - - - - - Server supports the MFMT command for setting the - modified date of an object on the server - - - - - Server supports the MFCT command for setting the - created date of an object on the server - - - - - Server supports the MFF command for setting certain facts - about file system objects. It typically allows you to modify - the last modification time, creation time, UNIX group/owner/mode of a file. - - - - - Server supports the STAT command - - - - - Support for the HASH command - - - - - Support for the MD5 command - - - - - Support for the XMD5 command - - - - - Support for the XCRC command - - - - - Support for the XSHA1 command - - - - - Support for the XSHA256 command - - - - - Support for the XSHA512 command - - - - - Support for the EPSV file-transfer command - - - - - Support for the CPSV command - - - - - Support for the NOOP command - - - - - Support for the CLNT command - - - - - Support for the SSCN command - - - - - Support for the SITE MKDIR (make directory) server-specific command for ProFTPd - - - - - Support for the SITE RMDIR (remove directory) server-specific command for ProFTPd - - - - - Support for the SITE UTIME server-specific command for ProFTPd - - - - - Support for the SITE SYMLINK server-specific command for ProFTPd - - - - - Support for the AVBL (get available space) server-specific command for Serv-U - - - - - Support for the THMB (get image thumbnail) server-specific command for Serv-U - - - - - Support for the RMDA (remove directory) server-specific command for Serv-U - - - - - Support for the DSIZ (get directory size) server-specific command for Serv-U - - - - - Support for the HOST (get host) server-specific command for Serv-U - - - - - Support for the CCC (Clear Command Channel) command, which makes a secure FTP channel revert back to plain text. - - - - - Support for the MODE Z (compression enabled) command, which says that the server supports ZLIB compression for all transfers - - - - - Support for the LANG (language negotiation) command. - - - - - Support for the MMD5 (multiple MD5 hash) command. - - - - - Flags that control how file comparison is performed. If you are unsure what to use, set it to Auto. - - - - - Compares the file size and the checksum of the file (using the first supported hash algorithm). - The local and remote file sizes and checksums should exactly match for the file to be considered equal. - - - - - Compares the file size. - Both file sizes should exactly match for the file to be considered equal. - - - - - Compares the date modified of the file. - Both dates should exactly match for the file to be considered equal. - - - - - Compares the checksum or hash of the file using the first supported hash algorithm. - Both checksums should exactly match for the file to be considered equal. - - - - - The result of a file comparison operation. - - - - - Success. Local and remote files are exactly equal. - - - - - Failure. Local and remote files do not match. - - - - - Failure. Either the local or remote file does not exist. - - - - - Failure. Checksum verification is enabled and your server does not support any hash algorithm. - - - - - Data connection type - - - - - This type of data connection attempts to use the EPSV command - and if the server does not support EPSV it falls back to the - PASV command before giving up unless you are connected via IPv6 - in which case the PASV command is not supported. - - - - - Passive data connection. EPSV is a better - option if it's supported. Passive connections - connect to the IP address dictated by the server - which may or may not be accessible by the client - for example a server behind a NAT device may - give an IP address on its local network that - is inaccessible to the client. Please note that IPv6 - does not support this type data connection. If you - ask for PASV and are connected via IPv6 EPSV will - automatically be used in its place. - - - - - Same as PASV except the host supplied by the server is ignored - and the data connection is made to the same address that the control - connection is connected to. This is useful in scenarios where the - server supplies a private/non-routable network address in the - PASV response. It's functionally identical to EPSV except some - servers may not implement the EPSV command. Please note that IPv6 - does not support this type data connection. If you - ask for PASV and are connected via IPv6 EPSV will - automatically be used in its place. - - - - - Extended passive data connection, recommended. Works - the same as a PASV connection except the server - does not dictate an IP address to connect to, instead - the passive connection goes to the same address used - in the control connection. This type of data connection - supports IPv4 and IPv6. - - - - - This type of data connection attempts to use the EPRT command - and if the server does not support EPRT it falls back to the - PORT command before giving up unless you are connected via IPv6 - in which case the PORT command is not supported. - - - - - Active data connection, not recommended unless - you have a specific reason for using this type. - Creates a listening socket on the client which - requires firewall exceptions on the client system - as well as client network when connecting to a - server outside of the client's network. In addition - the IP address of the interface used to connect to the - server is the address the server is told to connect to - which, if behind a NAT device, may be inaccessible to - the server. This type of data connection is not supported - by IPv6. If you specify PORT and are connected via IPv6 - EPRT will automatically be used instead. - - - - - Extended active data connection, not recommended - unless you have a specific reason for using this - type. Creates a listening socket on the client - which requires firewall exceptions on the client - as well as client network when connecting to a - server outside of the client's network. The server - connects to the IP address it sees the client coming - from. This type of data connection supports IPv4 and IPv6. - - - - - Type of data transfer to do - - - - - ASCII transfer - - - - - Binary transfer - - - - - Controls how timestamps returned by the server are converted. - - - - - Returns the server timestamps in Server Time. No timezone conversion is performed. - - - - - Returns the server timestamps in Local Time. - Ensure that the TimeZone property is correctly set to the server's timezone. - If you are on .NET Core/.NET Standard, you need to set the LocalTimeZone property for this to work. - - - - - Returns the server timestamps in UTC (Coordinated Universal Time). - Ensure that the TimeZone property is correctly set to the server's timezone. - - - - - Defines the type of encryption to use - - - - - Plain text. - - - - - FTPS encryption is used from the start of the connection, port 990. - - - - - Connection starts in plain text and FTPS encryption is enabled - with the AUTH command immediately after the server greeting. - - - - - FTPS encryption is used if supported by the server, otherwise it falls back to plaintext FTP communication. - - - - - Defines how multi-file processes should handle a processing error. - - & Cannot Be Combined - - - - No action is taken upon errors. The method absorbs the error and continues. - - - - - If any files have completed successfully (or failed after a partial download/upload) then should be deleted. - This will simulate an all-or-nothing transaction downloading or uploading multiple files. If this option is not - combined with or then the method will - continue to process all items whether if they are successful or not and then delete everything if a failure was - encountered at any point. - - - - - The method should stop processing any additional files and immediately return upon encountering an error. - Cannot be combined with - - - - - The method should stop processing any additional files and immediately throw the current error. - Cannot be combined with - - - - - Type of file system of object - - - - - The default subtype. - - - - - A sub directory within the listed directory. - (Only set when machine listing is available and type is 'dir') - - - - - The self directory. - (Only set when machine listing is available and type is 'cdir') - - - - - The parent directory. - (Only set when machine listing is available and type is 'pdir') - - - - - Type of file system of object - - - - - A file - - - - - A directory - - - - - A symbolic link - - - - - Determines how we handle downloading and uploading folders - - - - - Dangerous but useful method! - Uploads/downloads all the missing files to update the server/local filesystem. - Deletes the extra files to ensure that the target is an exact mirror of the source. - - - - - Safe method! - Uploads/downloads all the missing files to update the server/local filesystem. - - - - - Different types of hashing algorithms for computing checksums. - - - - - HASH command is not supported - - - - - SHA-1 - - - - - SHA-256 - - - - - SHA-512 - - - - - MD5 - - - - - CRC - - - - - IP Versions to allow when connecting - to a server. - - - - - Internet Protocol Version 4 - - - - - Internet Protocol Version 6 - - - - - Allow any supported version - - - - - Flags that can control how a file listing is performed. If you are unsure what to use, set it to Auto. - - - - - Tries machine listings (MDTM command) if supported, - and if not then falls back to OS-specific listings (LIST command) - - - - - Load the modify date using MDTM when it could not - be parsed from the server listing. This only pertains - to servers that do not implement the MLSD command. - - - - - Load the file size using the SIZE command when it - could not be parsed from the server listing. This - only pertains to servers that do not support the - MLSD command. - - - - - Combines the Modify and Size flags - - - - - Show hidden/dot files. This only pertains to servers - that do not support the MLSD command. This option - makes use the non standard -a parameter to LIST to - tell the server to show hidden files. Since it's a - non-standard option it may not always work. MLSD listings - have no such option and whether or not a hidden file is - shown is at the discretion of the server. - - - - - Force the use of OS-specific listings (LIST command) even if - machine listings (MLSD command) are supported by the server - - - - - Use the NLST command instead of LIST for a reliable file listing - - - - - Force the use of the NLST command (the slowest mode) even if machine listings - and OS-specific listings are supported by the server - - - - - Try to dereference symbolic links, and stored the linked file/directory in FtpListItem.LinkObject - - - - - Sets the ForceList flag and uses `LS' instead of `LIST' as the - command for getting a directory listing. This option overrides - ForceNameList and ignores the AllFiles flag. - - - - - Gets files within subdirectories as well. Adds the -r option to the LIST command. - Some servers may not support this feature. - - - - - Do not retrieve path when no path is supplied to GetListing(), - instead just execute LIST with no path argument. - - - - - Include two extra items into the listing, for the current directory (".") - and the parent directory (".."). Meaningless unless you want these two - items for some reason. - - - - - Force the use of STAT command for getting file listings - - - - - Determines how we handle partially downloaded files - - - - - Restart the download of a file if it is partially downloaded. - Overwrites the file if it exists on disk. - - - - - Resume the download of a file if it is partially downloaded. - Appends to the file if it exists, by checking the length and adding the missing data. - If the file doesn't exist on disk, a new file is created. - - - - - Blindly skip downloading the file if it exists on disk, without any more checks. - This is only included to be compatible with legacy behaviour. - - - - - Defines the operating system of the FTP server. - - - - - Unknown operating system - - - - - Definitely Windows or Windows Server - - - - - Definitely Unix or AIX-based server - - - - - Definitely VMS or OpenVMS server - - - - - Definitely IBM OS/400 server - - - - - Definitely IBM z/OS server - - - - - Definitely SUN OS/Solaris server - - - - - If the value is exactly equal to X - - - - - If the value is anything except for X - - - - - If the value is less than X - - - - - If the value is less than or equal to X - - - - - If the value is more than X - - - - - If the value is more than or equal to X - - - - - If the value is between the range of X and Y - - - - - If the value is outside the range of X and Y - - - - - The type of response the server responded with - - - - - Use the custom parser that you have set on the FtpClient object (ListingCustomParser property) - - - - - Automatically detect the file listing parser to use based on the FTP server (SYST command). - - - - - Machine listing parser, works on any FTP server supporting the MLST/MLSD commands. - - - - - File listing parser for Windows/IIS. - - - - - File listing parser for Unix. - - - - - Alternate parser for Unix. Use this if the default one does not work. - - - - - File listing parser for Vax/VMS/OpenVMS. - - - - - File listing parser for IBM OS400. - - - - - File listing parser for Tandem/Nonstop Guardian OS. - - - - - Types of file permissions - - - - - No access - - - - - Executable - - - - - Writable - - - - - Readable - - - - - This enum is obsolete. Please use FtpRemoteExists instead. - - - - - Defines the behavior for uploading/downloading files that already exist - - - - - Do not check if the file exists. A bit faster than the other options. - Only use this if you are SURE that the file does not exist on the server. - Otherwise it can cause the UploadFile method to hang due to filesize mismatch. - - - - - Skip the file if it exists, without any more checks. - - - - - Overwrite the file if it exists. - - - - - Append to the file if it exists, by checking the length and adding the missing data. - - - - - Append to the file, but don't check if it exists and add missing data. - This might be required if you don't have permissions on the server to list files in the folder. - Only use this if you are SURE that the file does not exist on the server otherwise it can cause the UploadFile method to hang due to filesize mismatch. - - - - - The type of response the server responded with - - - - - No response - - - - - Success - - - - - Success - - - - - Success - - - - - Temporary failure - - - - - Permanent failure - - - - - Determines how SSL Buffering is handled - - - - - Enables buffering in all cases except when using FTP proxies. - - - - - Always disables SSL Buffering to reduce FTPS connectivity issues. - - - - - Always enables SSL Buffering to massively speed up FTPS operations. - - - - - Defines the type of the FTP server software. - Add constants here as you add detection scripts for individual server types. - - - - - Unknown FTP server software - - - - - Definitely PureFTPd server - - - - - Definitely VsFTPd server - - - - - Definitely ProFTPD server - - - - - Definitely FileZilla server - - - - - Definitely OpenVMS server - - - - - Definitely Windows CE FTP server - - - - - Definitely WuFTPd server - - - - - Definitely GlobalScape EFT server - - - - - Definitely HP NonStop/Tandem server - - - - - Definitely Serv-U server - - - - - Definitely Cerberus FTP server - - - - - Definitely Windows Server/IIS FTP server - - - - - Definitely CrushFTP server - - - - - Definitely glFTPd server - - - - - Definitely Homegate FTP server - - - - - Definitely BFTPd server - - - - - Definitely FTP2S3 gateway server - - - - - Definitely XLight FTP server - - - - - Definitely Sun OS Solaris FTP server - - - - - Definitely IBM z/OS FTP server - - - - - Types of special UNIX permissions - - - - - No special permissions are set - - - - - Sticky bit is set - - - - - SGID bit is set - - - - - SUID bit is set - - - - - The result of an upload or download operation - - - - - The upload or download failed with an error transfering, or the source file did not exist - - - - - The upload or download completed succesfully - - - - - The upload or download was skipped because the file already existed on the target - - - - - Defines the level of the tracing message. Depending on the framework version this is translated - to an equivalent logging level in System.Diagnostices (if available) - - - - - Used for logging Debug or Verbose level messages - - - - - Used for logging Informational messages - - - - - Used for logging non-fatal or ignorable error messages - - - - - Used for logging Error messages that may need investigation - - - - - Defines if additional verification and actions upon failure that - should be performed when uploading/downloading files using the high-level APIs. Ignored if the - FTP server does not support any hashing algorithms. - - - - - No verification of the file is performed - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then we retry the download/upload - a specified amount of times before giving up. (See ) - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then the failed file will be deleted. - If combined with , then - the deletion will occur if it fails upon the final retry. - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then an exception will be thrown. - If combined with , then the throw will - occur upon the failure of the final retry, and/or if combined with - the method will throw after the deletion is processed. - - - - - The checksum of the file is verified, if supported by the server. - If the checksum comparison fails then the method returns false and no other action is taken. - - - - - Exception triggered on FTP authentication failures - - - - - Initializes a new instance of a FtpAuthenticationException - - Status code - Associated message - - - - Initializes a new instance of a FtpAuthenticationException - - The FtpReply to build the exception from - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception triggered on FTP command failures - - - - - Gets the completion code associated with the response - - - - - The type of response received from the last command executed - - - - - Initializes a new instance of a FtpResponseException - - Status code - Associated message - - - - Initializes a new instance of a FtpResponseException - - The FtpReply to build the exception from - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - FTP related error - - - - - Initializes a new instance of the class. - - The error message - - - - Initializes a new instance of the class with an inner exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception thrown by FtpListParser when parsing of FTP directory listing fails. - - - - - Creates a new FtpListParseException. - - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception is thrown by FtpSocketStream when there is no FTP server socket to connect to. - - - - - Creates a new FtpMissingSocketException. - - The original exception. - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Exception is thrown when TLS/SSL encryption could not be negotiated by the FTP server. - - - - - Default constructor - - - - - Custom error message - - Error message - - - - Must be implemented so every Serializer can Deserialize the Exception - - - - - Event is fired when a SSL certificate needs to be validated - - The control connection that triggered the event - Event args - - - - Event fired if a bad SSL certificate is encountered. This even is used internally; if you - don't have a specific reason for using it you are probably looking for FtpSslValidation. - - - - - - - Event args for the FtpSslValidationError delegate - - - - - The certificate to be validated - - - - - The certificate chain - - - - - Validation errors, if any. - - - - - Gets or sets a value indicating if this certificate should be accepted. The default - value is false. If the certificate is not accepted, an AuthenticationException will - be thrown. - - - - - A connection to the FTP server where the file or folder is currently stored - - - - - A connection to the destination FTP server where you want to create the file or folder - - - - - A connection to the destination FTP server used to track progress while transfer is going on. - - - - - Gets a value indicating if this object has already been disposed. - - - - - Closes an FXP connection by disconnecting and disposing off the FTP clients that are - cloned for this FXP connection. Manually created FTP clients are untouched. - - - - - Represents a computed hash of an object - on the FTP server. See the following link - for more information: - http://tools.ietf.org/html/draft-bryan-ftpext-hash-02 - - - - - Gets the algorithm that was used to compute the hash - - - - - Gets the computed hash returned by the server - - - - - Gets a value indicating if this object represents a - valid hash response from the server. - - - - - Computes the hash for the specified file and compares - it to the value in this object. CRC hashes are not supported - because there is no built-in support in the .net framework and - a CRC implementation exceeds the scope of this project. If you - attempt to call this on a CRC hash a will - be thrown. - - The file to compute the hash for - True if the computed hash matches what's stored in this object. - Thrown if called on a CRC Hash - - - - Computes the hash for the specified stream and compares - it to the value in this object. CRC hashes are not supported - because there is no built-in support in the .net framework and - a CRC implementation exceeds the scope of this project. If you - attempt to call this on a CRC hash a will - be thrown. - - The stream to compute the hash for - True if the computed hash matches what's stored in this object. - Thrown if called on a CRC Hash - - - - Creates an empty instance. - - - - - Helper class to convert FtpHashAlgorithm - - - - - Get FtpHashAlgorithm from it's string representation - - Name of the hash algorithm - The FtpHashAlgorithm - - - - Get string representation of FtpHashAlgorithm - - FtpHashAlgorithm to be converted into string - Name of the hash algorithm - - - - Checks if the given listing is a valid IBM OS/400 file listing - - - - - Parses IBM OS/400 format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the last modified date from IBM OS/400 format listings - - - - - Parses MLSD/MLST format listings - - A line from the listing - Server capabilities - The FTP client - FtpListItem if the item is able to be parsed - - - - Parses the date modified field from MLSD/MLST format listings - - - - - Parses the file size field from MLSD/MLST format listings - - - - - Parses the permissions from MLSD/MLST format listings - - - - - Checks if the given listing is a valid NonStop file listing - - - - - Parses NonStop format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the directory type and file size from NonStop format listings - - - - - Parses the last modified date from NonStop format listings - - - - - Checks if the given listing is a valid Unix file listing - - - - - Parses Unix format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the permissions from Unix format listings - - - - - Parses the link count from Unix format listings - - - - - Parses the owner and group permissions from Unix format listings - - - - - Parses the file size from Unix format listings - - - - - Parses day-of-month from Unix format listings - - - - - Parses the file or folder name from Unix format listings - - - - - Parses the last modified date from Unix format listings - - - - - Parses the last modified year from Unix format listings - - - - - Parses the last modified date from Unix format listings - - - - - Parses Unix format listings with alternate parser - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Checks if the given listing is a valid VMS file listing - - - - - Parses Vax/VMS format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the file size from Vax/VMS format listings - - - - - Parses the owner and group permissions from Vax/VMS format listings - - - - - Parses the permissions from Vax/VMS format listings - - - - - Parses the last modified date from Vax/VMS format listings - - - - - Checks if the given listing is a valid IIS/DOS file listing - - - - - Parses IIS/DOS format listings - - The FTP client - A line from the listing - FtpListItem if the item is able to be parsed - - - - Parses the file or folder name from IIS/DOS format listings - - - - - Parses the file size and checks if the item is a directory from IIS/DOS format listings - - - - - Parses the last modified date from IIS/DOS format listings - - - - - Represents a file system object on the server - - - - - - Blank constructor, you will need to fill arguments manually. - - NOTE TO USER : You should not need to construct this class manually except in advanced cases. Typically constructed by GetListing(). - - - - - Constructor with mandatory arguments filled. - - NOTE TO USER : You should not need to construct this class manually except in advanced cases. Typically constructed by GetListing(). - - - - - Gets the type of file system object. - - - - - Gets the sub type of file system object. - - - - - Gets the full path name to the file or folder. - - - - - Gets the name of the file or folder. Does not include the full path. - - - - - Gets the target a symbolic link points to. - - - - - Gets the number of links pointing to this file. Only supplied by Unix servers. - - - - - Gets the object that the LinkTarget points to. This property is null unless you pass the - flag in which case GetListing() will try to resolve - the target itself. - - - - - Gets the last write time of the object after timezone conversion (if enabled). - - - - - Gets the created date of the object after timezone conversion (if enabled). - - - - - Gets the last write time of the object before any timezone conversion. - - - - - Gets the created date of the object before any timezone conversion. - - - - - Gets the size of the object. - - - - - Gets special UNIX permissions such as Sticky, SUID and SGID. - - - - - Gets the owner permissions. - - - - - Gets the group permissions. - - - - - Gets the others permissions. - - - - - Gets the raw string received for the file permissions. - Use this if the other properties are blank/invalid. - - - - - Gets the file permissions in the CHMOD format. - - - - - Gets the raw string received for the file's GROUP permissions. - Use this if the other properties are blank/invalid. - - - - - Gets the raw string received for the file's OWNER permissions. - Use this if the other properties are blank/invalid. - - - - - Gets the input string that was parsed to generate the - values in this object. - - - - - Returns a string representation of this object and its properties - - A string representing this object - - - - Parses a line from a file listing using the first successful parser, or the specified parser. - Returns an FtpListItem object representing the parsed line, or null if the line was unable to be parsed. - - - - - the FTP connection that owns this parser - - - - - current parser, or parser set by user - - - - - parser calculated based on system type (SYST command) - - - - - if we have detected that the current parser is valid - - - - - Is the version number returned as part of the filename? - - Some VMS FTP servers do not permit a file to be deleted unless - the filename includes the version number. Note that directories are - never returned with the version number. - - - - - Initializes a new instance of the class. - - An existing object - - - - Try to auto-detect which parser is suitable given a system string. - - - - - Parse raw file from server into a file object, using the currently active parser. - - - - - Validate if the current parser is correct, or if another parser seems more appropriate. - - - - - Validate if the current parser is correct - - - - - The host IP address or URL of the FTP server - - - - - The FTP username and password used to login - - - - - A working Encryption Mode found for this profile - - - - - A working Ssl Protocol setting found for this profile - - - - - A working Data Connection Type found for this profile - - - - - A working Encoding setting found for this profile - - - - - A working Timeout setting found for this profile, or 0 if default value should be used - - - - - A working SocketPollInterval setting found for this profile, or 0 if default value should be used - - - - - A working RetryAttempts setting found for this profile, or 0 if default value should be used - - - - - Generates valid C# code for this connection profile. - - - - - - Class to report FTP file transfer progress during upload or download of files - - - - - A value between 0-100 indicating percentage complete, or -1 for indeterminate. - Used to track the progress of an individual file transfer. - - - - - A value indicating how many bytes have been transferred. - When unable to calculate percentage, having the partial byte count may help in providing some feedback. - - - - - A value representing the current Transfer Speed in Bytes per seconds. - Used to track the progress of an individual file transfer. - - - - - A value representing the calculated 'Estimated time of arrival'. - Used to track the progress of an individual file transfer. - - - - - Stores the absolute remote path of the the current file being transfered. - - - - - Stores the absolute local path of the the current file being transfered. - - - - - Stores the index of the the file in the listing. - Only used when transfering multiple files or an entire directory. - - - - - Stores the total count of the files to be transfered. - Only used when transfering multiple files or an entire directory. - - - - - Create a new FtpProgress object for meta progress info. - - - - - Create a new FtpProgress object for individual file transfer progress. - - - - - Convert Transfer Speed (bytes per second) in human readable format - - - - - Create a new FtpProgress object for a file transfer and calculate the ETA, Percentage and Transfer Speed. - - - - - Represents a reply to an event on the server - - - - - The type of response received from the last command executed - - - - - The status code of the response - - - - - The message, if any, that the server sent with the response - - - - - Informational messages sent from the server - - - - - General success or failure of the last command executed - - - - - Gets the error message including any informational output - that was sent by the server. Sometimes the final response - line doesn't contain anything informative as to what was going - on with the server. Instead it may send information messages so - in an effort to give as meaningful as a response as possible - the informational messages will be included in the error. - - - - - Stores the result of a file transfer when UploadDirectory or DownloadDirectory is used. - - - - - Returns true if the file was downloaded, false if it was uploaded. - - - - - Gets the type of file system object. - - - - - Gets the size of the file. - - - - - Gets the name and extension of the file. - - - - - Stores the absolute remote path of the the current file being transfered. - - - - - Stores the absolute local path of the the current file being transfered. - - - - - Gets the error that occuring during transfering this file, if any. - - - - - Returns true if the file was downloaded/uploaded, or the file was already existing with the same file size. - - - - - Was the file skipped? - - - - - Was the file skipped due to failing the rule condition? - - - - - Was there an error during transfer? You can read the Exception property for more details. - - - - - Convert this result to a FTP list item. - - - - - Used for transaction logging and debug information. - - - - - Should the trace listeners be flushed immediately after writing to them? - - - - - Should the log entries be written with a prefix of "FluentFTP"? - Useful if you have a single TraceListener shared across multiple libraries. - - - - - Add a TraceListner to the collection. You can use one of the predefined - TraceListeners in the System.Diagnostics namespace, such as ConsoleTraceListener - for logging to the console, or you can write your own deriving from - System.Diagnostics.TraceListener. - - The TraceListener to add to the collection - - - - Remove the specified TraceListener from the collection - - The TraceListener to remove from the collection. - - - - Should the function calls be logged in Verbose mode? - - - - - Should the FTP server IP addresses be included in the logs? - - - - - Should the FTP usernames be included in the logs? - - - - - Should the FTP passwords be included in the logs? - - - - - Should we trace at all? - - - - - Write to the TraceListeners - - The message to write - - - - Write to the TraceListeners - - The message to write - - - - Write to the TraceListeners - - The type of tracing event - The message to write - - - - Write to the TraceListeners, for the purpose of logging a API function call - - The name of the API function - The args passed to the function - - - - Write to the TraceListeners - - The type of tracing event - A formattable string to write - - - - A FTP client with a user@host proxy identification, that works with Blue Coat FTP Service servers. - - The 'blue coat variant' forces the client to wait for a 220 FTP response code in - the handshake phase. - - - - A FTP client with a user@host proxy identification. - Proxy information - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - Redefine the first dialog: auth with proxy information - - - A FTP client with a HTTP 1.1 proxy implementation. - - - A FTP client with a HTTP 1.1 proxy implementation - Proxy information - - - Redefine the first dialog: HTTP Frame for the HTTP 1.1 Proxy - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - - Connects to the server using an existing - - The existing socket stream - - - - Connects to the server using an existing - - The existing socket stream - - - - Connects to the server using an existing - - The existing socket stream - Host name - Port number - IP version to use - - - - Connects to the server using an existing - - The existing socket stream - Host name - Port number - IP version to use - IP version to use - - - - Abstraction of an FtpClient with a proxy - - - - The proxy connection info. - - - A FTP client with a HTTP 1.1 proxy implementation - Proxy information - - - Redefine connect for FtpClient : authentication on the Proxy - The socket stream. - - - Redefine connect for FtpClient : authentication on the Proxy - The socket stream. - Cancellation token. - - - A FTP client with a user@host proxy identification. - - - A FTP client with a user@host proxy identification. - Proxy information - - - - Creates a new instance of this class. Useful in FTP proxy classes. - - - - Redefine the first dialog: auth with proxy information - - - POCO holding proxy information - - - Proxy host name - - - Proxy port - - - Proxy login credentials - - - - Only accept files that have the given extension, or exclude files of a given extension. - - - - - If true, only files of the given extension are uploaded or downloaded. If false, files of the given extension are excluded. - - - - - The extensions to match - - - - - Only accept files that have the given extension, or exclude files of a given extension. - - If true, only files of the given extension are uploaded or downloaded. If false, files of the given extension are excluded. - The extensions to match - - - - Checks if the files has the given extension, or exclude files of the given extension. - - - - - Only accept files whose names match the given regular expression(s), or exclude files that match. - - - - - If true, only items where one of the supplied regex pattern matches are uploaded or downloaded. - If false, items where one of the supplied regex pattern matches are excluded. - - - - - The files names to match - - - - - Only accept items that match one of the supplied regex patterns. - - If true, only items where one of the supplied regex pattern matches are uploaded or downloaded. If false, items where one of the supplied regex pattern matches are excluded. - The list of regex patterns to match. Only valid patterns are accepted and stored. If none of the patterns are valid, this rule is disabled and passes all objects. - - - - Checks if the FtpListItem Name does match any RegexPattern - - - - - Only accept files that have the given name, or exclude files of a given name. - - - - - If true, only files of the given name are uploaded or downloaded. If false, files of the given name are excluded. - - - - - The files names to match - - - - - Only accept files that have the given name, or exclude files of a given name. - - If true, only files of the given name are downloaded. If false, files of the given name are excluded. - The files names to match - - - - Checks if the files has the given name, or exclude files of the given name. - - - - - Only accept folders whose names match the given regular expression(s), or exclude folders that match. - - - - - If true, only folders where one of the supplied regex pattern matches are uploaded or downloaded. - If false, folders where one of the supplied regex pattern matches are excluded. - - - - - The files names to match - - - - - Only accept items that one of the supplied regex pattern. - - If true, only folders where one of the supplied regex pattern matches are uploaded or downloaded. If false, folders where one of the supplied regex pattern matches are excluded. - The list of regex patterns to match. Only valid patterns are accepted and stored. If none of the patterns are valid, this rule is disabled and passes all objects. - - - - Checks if the FtpListItem Name does match any RegexPattern - - - - - Only accept folders that have the given name, or exclude folders of a given name. - - - - - If true, only folders of the given name are uploaded or downloaded. - If false, folders of the given name are excluded. - - - - - The folder names to match - - - - - Only accept folders that have the given name, or exclude folders of a given name. - - If true, only folders of the given name are downloaded. If false, folders of the given name are excluded. - The folder names to match - - - - Checks if the folders has the given name, or exclude folders of the given name. - - - - - Base class used for all FTP Rules. Extend this class to create custom rules. - You only need to provide an implementation for IsAllowed, and add any custom arguments that you require. - - - - - Returns true if the object has passed this rules. - - - - - Returns true if the object has passed all the rules. - - - - - Only accept files that are of the given size, or within the given range of sizes. - - - - - Which operator to use - - - - - The first value, required for all operators - - - - - The second value, only required for BetweenRange and OutsideRange operators - - - - - Only accept files that are of the given size, or within the given range of sizes. - - Which operator to use - The first value, required for all operators - The second value, only required for BetweenRange and OutsideRange operators. - - - - Checks if the file is of the given size, or within the given range of sizes. - - - - - The base class used for all FTP server specific support. - You may extend this class to implement support for custom FTP servers. - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Return your FTP server's default capabilities. - Used if your server does not broadcast its capabilities using the FEAT command. - - - - - Return true if the path is an absolute path according to your server's convention. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Perform server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - All servers with server-specific handling and support are listed here. - Its possible you can connect to other FTP servers too. - - To add support for another standard FTP server: - 1) Modify the FtpServer enum - 2) Add a new class extending FtpBaseServer - 3) Create a new instance of your class in AllServers (below) - - To support a custom FTP server you only need to extend FtpBaseServer - and set it on your client.ServerHandler before calling Connect. - - - - - Return a known working connection profile from the host/port combination. - - - - - Detect the FTP Server based on the welcome message sent by the server after getting the 220 connection command. - Its the primary method. - - - - - Get a default FTP Server handler based on the enum value. - - - - - Detect the FTP Server based on the response to the SYST connection command. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Detect the FTP Server based on the response to the SYST connection command. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Populates the capabilities flags based on capabilities given in the list of strings. - - - - - Assume the FTP Server's capabilities if it does not support the FEAT command. - - - - - Error messages returned by various servers when a file does not exist. - Instead of throwing an error, we use these to detect and handle the file detection properly. - MUST BE LOWER CASE! - - - - - Error messages returned by various servers when a file size is not supported in ASCII mode. - MUST BE LOWER CASE! - - - - - Error messages returned by various servers when a file transfer temporarily failed. - MUST BE LOWER CASE! - - - - - Error messages returned by various servers when a folder already exists. - Instead of throwing an error, we use these to detect and handle the folder creation properly. - MUST BE LOWER CASE! - - - - - Server-specific handling for BFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for Cerberus FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for CrushFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for FileZilla FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Server-specific handling for FTP2S3Gateway FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for glFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for GlobalScapeEFT FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for HomegateFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Server-specific handling for IBMzOSFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for NonStop/Tandem FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for OpenVMS FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Return your FTP server's default capabilities. - Used if your server does not broadcast its capabilities using the FEAT command. - - - - - Return true if the path is an absolute path according to your server's convention. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for ProFTPD FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Perform server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific create directory commands here. - Return true if you executed a server-specific command. - - - - - Server-specific handling for PureFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Server-specific handling for ServU FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Perform server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Perform async server-specific delete directory commands here. - Return true if you executed a server-specific command. - - - - - Server-specific handling for SolarisFTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Server-specific handling for VsFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Server-specific handling for WindowsCE FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given SYST response message. - Its a fallback method if the server did not send an identifying welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for WindowsServer/IIS FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Return the default file listing parser to be used with your FTP server. - - - - - Server-specific handling for WuFTPd FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Detect if your FTP server supports the recursive LIST command (LIST -R). - If you know for sure that this is supported, return true here. - - - - - Return your FTP server's default capabilities. - Used if your server does not broadcast its capabilities using the FEAT command. - - - - - Server-specific handling for XLight FTP servers - - - - - Return the FtpServer enum value corresponding to your server, or Unknown if its a custom implementation. - - - - - Return true if your server is detected by the given FTP server welcome message. - - - - - Base class for data stream connections - - - - - Gets the status of the command that was used to open - this data channel - - - - - Gets or sets the control connection for this data stream. Setting - the control connection causes the object to be cloned and a new - connection is made to the server to carry out the task. This ensures - that multiple streams can be opened simultaneously. - - - - - Gets or sets the length of the stream. Only valid for file transfers - and only valid on servers that support the Size command. - - - - - Gets or sets the position of the stream - - - - - Reads data off the stream - - The buffer to read into - Where to start in the buffer - Number of bytes to read - The number of bytes read - - - - Reads data off the stream asynchronously - - The buffer to read into - Where to start in the buffer - Number of bytes to read - The cancellation token for this task - The number of bytes read - - - - Writes data to the stream - - The buffer to write to the stream - Where to start in the buffer - The number of bytes to write to the buffer - - - - Writes data to the stream asynchronously - - The buffer to write to the stream - Where to start in the buffer - The number of bytes to write to the buffer - The for this task - - - - Sets the length of this stream - - Value to apply to the Length property - - - - Sets the position of the stream. Intended to be used - internally by FtpControlConnection. - - The position - - - - Closes the connection and reads the server's reply - - - - - Creates a new data stream object - - The control connection to be used for carrying out this operation - - - - Finalizer - - - - - Returns the file size using synchronous file I/O. - - - - - Returns the file size using async file I/O. - - - - - Returns the file size using synchronous file I/O. - - - - - Returns the file size using synchronous file I/O. - - - - - Returns a new stream to upload a file from disk. - If the file fits within the fileSizeLimit, then it is read in a single disk call and stored in memory, and a MemoryStream is returned. - If it is larger than that, then a regular read-only FileStream is returned. - - - - - Returns a new stream to download a file to disk. - If the file fits within the fileSizeLimit, then a new MemoryStream is returned. - If it is larger than that, then a regular writable FileStream is returned. - - - - - If the stream is a MemoryStream, completes the quick download by writing the file to disk. - - - - - If the stream is a MemoryStream, completes the quick download by writing the file to disk. - - - - - Stream class used for talking. Used by FtpClient, extended by FtpDataStream - - - - - Used for tacking read/write activity on the socket - to determine if Poll() should be used to test for - socket connectivity. The socket in this class will - not know it has been disconnected if the remote host - closes the connection first. Using Poll() avoids - the exception that would be thrown when trying to - read or write to the disconnected socket. - - - - - The socket used for talking - - - - - Gets or sets the length of time in milliseconds - that must pass since the last socket activity - before calling Poll() on the socket to test for - connectivity. Setting this interval too low will - have a negative impact on performance. Setting this - interval to 0 disables Poll()'ing all together. - The default value is 15 seconds. - - - - - Gets the number of available bytes on the socket, 0 if the - socket has not been initialized. This property is used internally - by FtpClient in an effort to detect disconnections and gracefully - reconnect the control connection. - - - - - Gets a value indicating if this socket stream is connected - - - - - Gets a value indicating if encryption is being used - - - - - The non-encrypted stream - - - - - The encrypted stream - - - - - Gets the underlying stream, could be a NetworkStream or SslStream - - - - - Gets a value indicating if this stream can be read - - - - - Gets a value indicating if this stream if seekable - - - - - Gets a value indicating if this stream can be written to - - - - - Gets the length of the stream - - - - - Gets the current position of the stream. Trying to - set this property throws an InvalidOperationException() - - - - - Event is fired when a SSL certificate needs to be validated - - - - - Gets or sets the amount of time to wait for a read operation to complete. Default - value is Timeout.Infinite. - - - - - Gets or sets the length of time milliseconds to wait - for a connection succeed before giving up. The default - is 30000 (30 seconds). - - - - - Gets the local end point of the socket - - - - - Gets the remote end point of the socket - - - - - Fires the SSL certificate validation event - - Certificate being validated - Certificate chain - Policy errors if any - True if it was accepted, false otherwise - - - - Throws an InvalidOperationException - - Ignored - Ignored - - - - - Throws an InvalidOperationException - - Ignored - - - - Flushes the stream - - - - - Flushes the stream asynchronously - - The for this task - - - - Bypass the stream and read directly off the socket. - - The buffer to read into - The number of bytes read - - - - Bypass the stream and read directly off the socket. - - The buffer to read into - The token that can be used to cancel the entire process - The number of bytes read - - - - Reads data from the stream - - Buffer to read into - Where in the buffer to start - Number of bytes to be read - The amount of bytes read from the stream - - - - Reads data from the stream - - Buffer to read into - Where in the buffer to start - Number of bytes to be read - The for this task - The amount of bytes read from the stream - - - - Reads a line from the socket - - The type of encoding used to convert from byte[] to string - A line from the stream, null if there is nothing to read - - - - Reads all line from the socket - - The type of encoding used to convert from byte[] to string - The size of the buffer - A list of lines from the stream - - - - Reads a line from the socket asynchronously - - The type of encoding used to convert from byte[] to string - The for this task - A line from the stream, null if there is nothing to read - - - - Reads all line from the socket - - The type of encoding used to convert from byte[] to string - The size of the buffer - A list of lines from the stream - - - - Writes data to the stream - - Buffer to write to stream - Where in the buffer to start - Number of bytes to be read - - - - Writes data to the stream asynchronously - - Buffer to write to stream - Where in the buffer to start - Number of bytes to be read - The for this task - - - - Writes a line to the stream using the specified encoding - - Encoding used for writing the line - The data to write - - - - Writes a line to the stream using the specified encoding asynchronously - - Encoding used for writing the line - The data to write - The for this task - - - - Disconnects from server - - - - - Safely close the socket if its open - - - - - Sets socket options on the underlying socket - - SocketOptionLevel - SocketOptionName - SocketOptionValue - - - - Connect to the specified host - - The host to connect to - The port to connect to - Internet Protocol versions to support during the connection phase - - - - Connect to the specified host - - The host to connect to - The port to connect to - Internet Protocol versions to support during the connection phase - The token that can be used to cancel the entire process - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - - - - Activates SSL on this stream using default protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - - - - Activates SSL on this stream using the specified protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - A bitwise parameter for supported encryption protocols. - Thrown when authentication fails - - - - Conditionally create a SSL BufferStream based on the configuration in FtpClient.SslBuffering. - - - - - If SSL Buffering is enabled it returns the BufferStream, else returns the internal NetworkStream. - - - - - - Activates SSL on this stream using the specified protocols. Fires the ValidateCertificate event. - If this event is not handled and there are SslPolicyErrors present, the certificate will - not be accepted. - - The host to authenticate the certificate against - A collection of client certificates to use when authenticating the SSL stream - A bitwise parameter for supported encryption protocols. - Thrown when authentication fails - - - - Deactivates SSL on this stream using the specified protocols and reverts back to plain-text FTP. - - - - - Instructs this stream to listen for connections on the specified address and port - - The address to listen on - The port to listen on - - - - Accepts a connection from a listening socket - - - - - Accepts a connection from a listening socket - - - - - Asynchronously accepts a connection from a listening socket - - - - - - - - Completes a BeginAccept() operation - - IAsyncResult returned from BeginAccept - - - - .NET SslStream doesn't close TLS connection properly. - It does not send the close_notify alert before closing the connection. - FtpSslStream uses unsafe code to do that. - This is required when we want to downgrade the connection to plaintext using CCC command. - Thanks to Neco @ https://stackoverflow.com/questions/237807/net-sslstream-doesnt-close-tls-connection-properly/22626756#22626756 - - - - - Send an SSL close_notify alert. - - - - - - Extension methods related to FTP tasks - - - - - Ensures that the URI points to a server, and not a directory or invalid path. - - - - - - Checks if the reply contains any of the known error strings - - - - - Converts the specified path into a valid FTP file system path - - The file system path - A path formatted for FTP - - - - Creates a valid FTP path by appending the specified segments to this string - - This string - The path segments to append - A valid FTP path - - - - Gets the parent directory path (formatted for a FTP server) - - The path - The parent directory path - - - - Gets the file name and extension from the path - - The full path to the file - The file name - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - Converts a file size in bytes to a string representation (eg. 12345 becomes 12.3 KB) - - - - - This creates a that represents a pair of begin and end methods - that conform to the Asynchronous Programming Model pattern. This extends the maximum amount of arguments from - to 4 from a 3. - - The type of the first argument passed to the delegate - The type of the second argument passed to the delegate - The type of the third argument passed to the delegate - The type of the forth argument passed to the delegate - The type of the result. - The used - The delegate that begins the asynchronous operation - The delegate that ends the asynchronous operation - The first argument passed to the delegate - The second argument passed to the delegate - The third argument passed to the delegate - The forth argument passed to the delegate - An object containing data to be used by the delegate - The created that represents the asynchronous operation - - beginMethod is null - or - endMethod is null - - - - - Validates that the FtpError flags set are not in an invalid combination. - - The error handling options set - True if a valid combination, otherwise false - - - - Checks if every character in the string is whitespace, or the string is null. - - - - - Checks if the string is null or 0 length. - - - - - Checks if the array is null or 0 length. - - - - - Checks if the array is null or 0 length. - - - - - Join the given strings by a delimiter. - - - - - Join the given strings by a delimiter. - - - - - Adds a prefix to the given strings, returns a new array. - - - - - Adds a prefix to the given strings, returns a new array. - - - - - Ensure a string has the given prefix - - - - - Ensure a string has the given postfix - - - - - Remove a prefix from a string, only if it has the given prefix - - - - - Remove a postfix from a string, only if it has the given postfix - - - - - Combine the given base path with the relative path - - - - - Adds a prefix to the given strings, returns a new array. - - - - - Checks if the given file exists in the given file listing. - Supports servers that return: 1) full paths, 2) only filenames, 3) full paths without slash prefixed - - The listing returned by GetNameListing - The full file path you want to check - - - - - Checks if the given file exists in the given file listing. - - The listing returned by GetListing - The full file path you want to check - - - - - Checks if the given path is a root directory or working directory path - - - - - - - Calculate the CHMOD integer value given a set of permissions. - - - - - Checks if the permission value has the given flag - - - - - Escape a string into a valid C# string literal. - Implementation from StackOverflow - https://stackoverflow.com/a/14087738 - - - - - Split into fields by splitting on tokens - - - - - Get the full path of a given FTP Listing entry - - - - - Checks if this FTP path is a top level path - - - - - Calculates the CHMOD value from the permissions flags - - - - - Calculates the permissions flags from the CHMOD value - - - - - Checks if all the characters in this string are digits or dots - - - - - Checks if the string contains any of the given values - - - - - Ensures the given item is only added once. If it was not present true is returned, else false is returned. - - - - - Ensures the given directory exists. - - - - - Checks if the operation was successful or skipped (indicating success). - - - - - Checks if the operation has failed. - - - - - Checks if RexEx Pattern is valid - - - - - Converts a Windows or Unix-style path into its segments for segment-wise processing - - - - - - Check if operation can resume after . - - Received exception. - Result of checking. - - - - Converts the FTP date string into a DateTime object, without performing any timezone conversion. - - The date string - Date formats to try parsing the value from (eg "yyyyMMddHHmmss") - A object representing the date, or if there was a problem - - - - Generates an FTP date-string from the DateTime object, without performing any timezone conversion. - - The date value - A string representing the date - - - diff --git a/AUTS_Studio/bin/Release/Google.Protobuf.dll b/AUTS_Studio/bin/Release/Google.Protobuf.dll deleted file mode 100644 index 77b93c7..0000000 Binary files a/AUTS_Studio/bin/Release/Google.Protobuf.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/Google.Protobuf.pdb b/AUTS_Studio/bin/Release/Google.Protobuf.pdb deleted file mode 100644 index ffc1b89..0000000 Binary files a/AUTS_Studio/bin/Release/Google.Protobuf.pdb and /dev/null differ diff --git a/AUTS_Studio/bin/Release/Google.Protobuf.xml b/AUTS_Studio/bin/Release/Google.Protobuf.xml deleted file mode 100644 index 99298c4..0000000 --- a/AUTS_Studio/bin/Release/Google.Protobuf.xml +++ /dev/null @@ -1,10042 +0,0 @@ - - - - Google.Protobuf - - - - - Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy - - - - - The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy - - - - - Determines which copy routine to use based on the number of bytes to be copied. - - - - - Reverses the order of bytes in the array - - - - - Immutable array of bytes. - - - - - Unsafe operations that can cause IO Failure and/or other catastrophic side-effects. - - - - - Constructs a new ByteString from the given byte array. The array is - *not* copied, and must not be modified after this constructor is called. - - - - - Internal use only. Ensure that the provided array is not mutated and belongs to this instance. - - - - - Constructs a new ByteString from the given byte array. The array is - *not* copied, and must not be modified after this constructor is called. - - - - - Returns an empty ByteString. - - - - - Returns the length of this ByteString in bytes. - - - - - Returns true if this byte string is empty, false otherwise. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Converts this into a byte array. - - The data is copied - changes to the returned array will not be reflected in this ByteString. - A byte array with the same data as this ByteString. - - - - Converts this into a standard base64 representation. - - A base64 representation of this ByteString. - - - - Constructs a from the Base64 Encoded String. - - - - - Constructs a from data in the given stream, synchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - A ByteString with content read from the given stream. - - - - Constructs a from data in the given stream, asynchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - The cancellation token to use when reading from the stream, if any. - A ByteString with content read from the given stream. - - - - Constructs a from the given array. The contents - are copied, so further modifications to the array will not - be reflected in the returned ByteString. - This method can also be invoked in ByteString.CopyFrom(0xaa, 0xbb, ...) form - which is primarily useful for testing. - - - - - Constructs a from a portion of a byte array. - - - - - Constructs a from a read only span. The contents - are copied, so further modifications to the span will not - be reflected in the returned . - - - - - Creates a new by encoding the specified text with - the given encoding. - - - - - Creates a new by encoding the specified text in UTF-8. - - - - - Returns the byte at the given index. - - - - - Converts this into a string by applying the given encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with the given encoding. - - The encoding to use to decode the binary data into text. - The result of decoding the binary data with the given decoding. - - - - Converts this into a string by applying the UTF-8 encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with UTF-8. - - The result of decoding the binary data with the given decoding. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Creates a CodedInputStream from this ByteString's data. - - - - - Compares two byte strings for equality. - - The first byte string to compare. - The second byte string to compare. - true if the byte strings are equal; false otherwise. - - - - Compares two byte strings for inequality. - - The first byte string to compare. - The second byte string to compare. - false if the byte strings are equal; true otherwise. - - - - Compares this byte string with another object. - - The object to compare this with. - true if refers to an equal ; false otherwise. - - - - Returns a hash code for this object. Two equal byte strings - will return the same hash code. - - A hash code for this object. - - - - Compares this byte string with another. - - The to compare this with. - true if refers to an equal byte string; false otherwise. - - - - Used internally by CodedOutputStream to avoid creating a copy for the write - - - - - Copies the entire byte array to the destination array provided at the offset specified. - - - - - Writes the entire byte array to the provided stream - - - - - Reads and decodes protocol message fields. - - - - This class is generally used by generated code to read appropriate - primitives from the stream. It effectively encapsulates the lowest - levels of protocol buffer format. - - - Repeated fields and map fields are not handled by this class; use - and to serialize such fields. - - - - - - Whether to leave the underlying stream open when disposing of this stream. - This is always true when there's no stream. - - - - - Buffer of data read from the stream or provided at construction time. - - - - - The stream to read further input from, or null if the byte array buffer was provided - directly on construction, with no further data available. - - - - - The parser state is kept separately so that other parse implementations can reuse the same - parsing primitives. - - - - - Creates a new CodedInputStream reading data from the given byte array. - - - - - Creates a new that reads from the given byte array slice. - - - - - Creates a new reading data from the given stream, which will be disposed - when the returned object is disposed. - - The stream to read from. - - - - Creates a new reading data from the given stream. - - The stream to read from. - true to leave open when the returned - is disposed; false to dispose of the given stream when the - returned object is disposed. - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the default limits. - - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the specified limits. - - - This chains to the version with the default limits instead of vice versa to avoid - having to check that the default values are valid every time. - - - - - Creates a with the specified size and recursion limits, reading - from an input stream. - - - This method exists separately from the constructor to reduce the number of constructor overloads. - It is likely to be used considerably less frequently than the constructors, as the default limits - are suitable for most use cases. - - The input stream to read from - The total limit of data to read from the stream. - The maximum recursion depth to allow while reading. - A CodedInputStream reading from with the specified size - and recursion limits. - - - - Returns the current position in the input stream, or the position in the input buffer - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the stream. - - - - - Returns the size limit for this stream. - - - This limit is applied when reading from the underlying stream, as a sanity check. It is - not applied when reading from a byte array data source without an underlying stream. - The default value is Int32.MaxValue. - - - The size limit. - - - - - Returns the recursion limit for this stream. This limit is applied whilst reading messages, - to avoid maliciously-recursive data. - - - The default limit is 100. - - - The recursion limit for this stream. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Disposes of this instance, potentially closing any underlying stream. - - - As there is no flushing to perform here, disposing of a which - was constructed with the leaveOpen option parameter set to true (or one which - was constructed to read from a byte array) has no effect. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Reads a field tag, returning the tag of 0 for "end of stream". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputStream; it may be the end of the logical stream - for an embedded message, for example. - - The next field tag, or 0 for end of stream. (0 is never a valid tag.) - - - - Skips the data for the field with the tag we've just read. - This should be called directly after , when - the caller wishes to skip an unknown field. - - - This method throws if the last-read tag was an end-group tag. - If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the - start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly - resulting in an error if an end-group tag has not been paired with an earlier start-group tag. - - The last tag was an end-group tag - The last read operation read to the end of the logical stream - - - - Skip a group. - - - - - Reads a double field from the stream. - - - - - Reads a float field from the stream. - - - - - Reads a uint64 field from the stream. - - - - - Reads an int64 field from the stream. - - - - - Reads an int32 field from the stream. - - - - - Reads a fixed64 field from the stream. - - - - - Reads a fixed32 field from the stream. - - - - - Reads a bool field from the stream. - - - - - Reads a string field from the stream. - - - - - Reads an embedded message field value from the stream. - - - - - Reads an embedded group field from the stream. - - - - - Reads a bytes field value from the stream. - - - - - Reads a uint32 field value from the stream. - - - - - Reads an enum field value from the stream. - - - - - Reads an sfixed32 field value from the stream. - - - - - Reads an sfixed64 field value from the stream. - - - - - Reads an sint32 field value from the stream. - - - - - Reads an sint64 field value from the stream. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Reads a raw varint from the stream. - - - - - Reads a 32-bit little-endian integer from the stream. - - - - - Reads a 64-bit little-endian integer from the stream. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Called when buffer is empty to read more bytes from the - input. If is true, RefillBuffer() guarantees that - either there will be at least one byte in the buffer when it returns - or it will throw an exception. If is false, - RefillBuffer() returns false if no more bytes were available. - - - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads a top-level message or a nested message after the limits for this message have been pushed. - (parser will proceed until the end of the current limit) - NOTE: this method needs to be public because it's invoked by the generated code - e.g. msg.MergeFrom(CodedInputStream input) method - - - - - Encodes and writes protocol message fields. - - - - This class is generally used by generated code to write appropriate - primitives to the stream. It effectively encapsulates the lowest - levels of protocol buffer format. Unlike some other implementations, - this does not include combined "write tag and value" methods. Generated - code knows the exact byte representations of the tags they're going to write, - so there's no need to re-encode them each time. Manually-written code calling - this class should just call one of the WriteTag overloads before each value. - - - Repeated fields and map fields are not handled by this class; use RepeatedField<T> - and MapField<TKey, TValue> to serialize such fields. - - - - - - Computes the number of bytes that would be needed to encode a - double field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - float field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bool field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - string field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - group field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - embedded message field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bytes field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - enum field, including the tag. The caller is responsible for - converting the enum value to its numeric value. - - - - - Computes the number of bytes that would be needed to encode an - sfixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sfixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a length, - as written by . - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a tag. - - - - - The buffer size used by CreateInstance(Stream). - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array slice. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new which write to the given stream, and disposes of that - stream when the returned CodedOutputStream is disposed. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - The size of buffer to use internally. - - - - Creates a new CodedOutputStream which write to the given stream. - - The stream to write to. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. - The size of buffer to use internally. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Returns the current position in the stream, or the position in the output buffer - - - - - Writes a double field value, without a tag, to the stream. - - The value to write - - - - Writes a float field value, without a tag, to the stream. - - The value to write - - - - Writes a uint64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int32 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed64 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed32 field value, without a tag, to the stream. - - The value to write - - - - Writes a bool field value, without a tag, to the stream. - - The value to write - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - Only the message data is written, without a length-delimiter. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag, to the stream. - - The value to write - - - - Writes an enum value, without a tag, to the stream. - - The value to write - - - - Writes an sfixed32 value, without a tag, to the stream. - - The value to write. - - - - Writes an sfixed64 value, without a tag, to the stream. - - The value to write - - - - Writes an sint32 value, without a tag, to the stream. - - The value to write - - - - Writes an sint64 value, without a tag, to the stream. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag directly to the stream. - - The encoded tag - - - - Writes the given two-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Indicates that a CodedOutputStream wrapping a flat byte array - ran out of space. - - - - - Flushes any buffered data and optionally closes the underlying stream, if any. - - - - By default, any underlying stream is closed by this method. To configure this behaviour, - use a constructor overload with a leaveOpen parameter. If this instance does not - have an underlying stream, this method does nothing. - - - For the sake of efficiency, calling this method does not prevent future write calls - but - if a later write ends up writing to a stream which has been disposed, that is likely to - fail. It is recommend that you not call any other methods after this. - - - - - - Flushes any buffered data to the underlying stream (if there is one). - - - - - Verifies that SpaceLeft returns zero. It's common to create a byte array - that is exactly big enough to hold a message, then write to it with - a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that - the message was actually as big as expected, which can help finding bugs. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - Utility to compare if two Lists are the same, and the hash code - of a List. - - - - - Checks if two lists are equal. - - - - - Gets the list's hash code. - - - - - Representation of a map field in a Protocol Buffer message. - - Key type in the map. Must be a type supported by Protocol Buffer map keys. - Value type in the map. Must be a type supported by Protocol Buffers. - - - For string keys, the equality comparison is provided by . - - - Null values are not permitted in the map, either for wrapper types or regular messages. - If a map is deserialized from a data stream and the value is missing from an entry, a default value - is created instead. For primitive types, that is the regular default value (0, the empty string and so - on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length - encoded value for the field. - - - This implementation does not generally prohibit the use of key/value types which are not - supported by Protocol Buffers (e.g. using a key type of byte) but nor does it guarantee - that all operations will work in such cases. - - - The order in which entries are returned when iterating over this object is undefined, and may change - in future versions. - - - - - - Creates a deep clone of this object. - - - A deep clone of this object. - - - - - Adds the specified key/value pair to the map. - - - This operation fails if the key already exists in the map. To replace an existing entry, use the indexer. - - The key to add - The value to add. - The given key already exists in map. - - - - Determines whether the specified key is present in the map. - - The key to check. - true if the map contains the given key; false otherwise. - - - - Removes the entry identified by the given key from the map. - - The key indicating the entry to remove from the map. - true if the map contained the given key before the entry was removed; false otherwise. - - - - Gets the value associated with the specified key. - - The key whose value to get. - When this method returns, the value associated with the specified key, if the key is found; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - true if the map contains an element with the specified key; otherwise, false. - - - - Gets or sets the value associated with the specified key. - - The key of the value to get or set. - The property is retrieved and key does not exist in the collection. - The value associated with the specified key. If the specified key is not found, - a get operation throws a , and a set operation creates a new element with the specified key. - - - - Gets a collection containing the keys in the map. - - - - - Gets a collection containing the values in the map. - - - - - Adds the specified entries to the map. The keys and values are not automatically cloned. - - The entries to add to the map. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Adds the specified item to the map. - - The item to add to the map. - - - - Removes all items from the map. - - - - - Determines whether map contains an entry equivalent to the given key/value pair. - - The key/value pair to find. - - - - - Copies the key/value pairs in this map to an array. - - The array to copy the entries into. - The index of the array at which to start copying values. - - - - Removes the specified key/value pair from the map. - - Both the key and the value must be found for the entry to be removed. - The key/value pair to remove. - true if the key/value pair was found and removed; false otherwise. - - - - Gets the number of elements contained in the map. - - - - - Gets a value indicating whether the map is read-only. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this map with another for equality. - - - The order of the key/value pairs in the maps is not deemed significant in this comparison. - - The map to compare this with. - true if refers to an equal map; false otherwise. - - - - Adds entries to the map from the given stream. - - - It is assumed that the stream is initially positioned after the tag specified by the codec. - This method will continue reading entries from the stream until the end is reached, or - a different tag is encountered. - - Stream to read from - Codec describing how the key/value pairs are encoded - - - - Adds entries to the map from the given parse context. - - - It is assumed that the input is initially positioned after the tag specified by the codec. - This method will continue reading entries from the input until the end is reached, or - a different tag is encountered. - - Input to read from - Codec describing how the key/value pairs are encoded - - - - Writes the contents of this map to the given coded output stream, using the specified codec - to encode each entry. - - The output stream to write to. - The codec to use for each entry. - - - - Writes the contents of this map to the given write context, using the specified codec - to encode each entry. - - The write context to write to. - The codec to use for each entry. - - - - Calculates the size of this map based on the given entry codec. - - The codec to use to encode each entry. - - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - A codec for a specific map field. This contains all the information required to encode and - decode the nested messages. - - - - - Creates a new entry codec based on a separate key codec and value codec, - and the tag to use for each map entry. - - The key codec. - The value codec. - The map tag to use to introduce each map entry. - - - - The tag used in the enclosing message to indicate map entries. - - - - - A mutable message class, used for parsing and serializing. This - delegates the work to a codec, but implements the interface - for interop with and . - This is nested inside Codec as it's tightly coupled to the associated codec, - and it's simpler if it has direct access to all its fields. - - - - - Provides a central place to implement equality comparisons, primarily for bitwise float/double equality. - - - - - Returns an equality comparer for suitable for Protobuf equality comparisons. - This is usually just the default equality comparer for the type, but floating point numbers are compared - bitwise. - - The type of equality comparer to return. - The equality comparer. - - - - Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Read-only wrapper around another dictionary. - - - - - The contents of a repeated field: essentially, a collection with some extra - restrictions (no null values) and capabilities (deep cloning). - - - This implementation does not generally prohibit the use of types which are not - supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases. - - The element type of the repeated field. - - - - Creates a deep clone of this repeated field. - - - If the field type is - a message type, each element is also cloned; otherwise, it is - assumed that the field type is primitive (including string and - bytes, both of which are immutable) and so a simple copy is - equivalent to a deep clone. - - A deep clone of this repeated field. - - - - Adds the entries from the given input stream, decoding them with the specified codec. - - The input stream to read from. - The codec to use in order to read each entry. - - - - Adds the entries from the given parse context, decoding them with the specified codec. - - The input to read from. - The codec to use in order to read each entry. - - - - Calculates the size of this collection based on the given codec. - - The codec to use when encoding each field. - The number of bytes that would be written to an output by one of the WriteTo methods, - using the same codec. - - - - Writes the contents of this collection to the given , - encoding each value using the specified codec. - - The output stream to write to. - The codec to use when encoding each value. - - - - Writes the contents of this collection to the given write context, - encoding each value using the specified codec. - - The write context to write to. - The codec to use when encoding each value. - - - - Gets and sets the capacity of the RepeatedField's internal array. WHen set, the internal array is reallocated to the given capacity. - The new value is less than Count -or- when Count is less than 0. - - - - - Adds the specified item to the collection. - - The item to add. - - - - Removes all items from the collection. - - - - - Determines whether this collection contains the given item. - - The item to find. - true if this collection contains the given item; false otherwise. - - - - Copies this collection to the given array. - - The array to copy to. - The first index of the array to copy to. - - - - Removes the specified item from the collection - - The item to remove. - true if the item was found and removed; false otherwise. - - - - Gets the number of elements contained in the collection. - - - - - Gets a value indicating whether the collection is read-only. - - - - - Adds all of the specified values into this collection. - - The values to add to this collection. - - - - Adds all of the specified values into this collection. This method is present to - allow repeated fields to be constructed from queries within collection initializers. - Within non-collection-initializer code, consider using the equivalent - method instead for clarity. - - The values to add to this collection. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this repeated field with another for equality. - - The repeated field to compare this with. - true if refers to an equal repeated field; false otherwise. - - - - Returns the index of the given item within the collection, or -1 if the item is not - present. - - The item to find in the collection. - The zero-based index of the item, or -1 if it is not found. - - - - Inserts the given item at the specified index. - - The index at which to insert the item. - The item to insert. - - - - Removes the item at the given index. - - The zero-based index of the item to remove. - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - Gets or sets the item at the specified index. - - - The element at the specified index. - - The zero-based index of the element to get or set. - The item at the specified index. - - - - Extension methods for , effectively providing - the familiar members from previous desktop framework versions while - targeting the newer releases, .NET Core etc. - - - - - Returns the public getter of a property, or null if there is no such getter - (either because it's read-only, or the getter isn't public). - - - - - Returns the public setter of a property, or null if there is no such setter - (either because it's write-only, or the setter isn't public). - - - - - Provides extension methods on Type that just proxy to TypeInfo. - These are used to support the new type system from .NET 4.5, without - having calls to GetTypeInfo all over the place. While the methods here are meant to be - broadly compatible with the desktop framework, there are some subtle differences in behaviour - but - they're not expected to affect our use cases. While the class is internal, that should be fine: we can - evaluate each new use appropriately. - - - - - See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom - - - - - Returns a representation of the public property associated with the given name in the given type, - including inherited properties or null if there is no such public property. - Here, "public property" means a property where either the getter, or the setter, or both, is public. - - - - - Returns a representation of the public method associated with the given name in the given type, - including inherited methods. - - - This has a few differences compared with Type.GetMethod in the desktop framework. It will throw - if there is an ambiguous match even between a private method and a public one, but it *won't* throw - if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and - class Child : Base declares public void Foo(long)). - - One type in the hierarchy declared more than one method with the same name - - - - Represents a non-generic extension definition. This API is experimental and subject to change. - - - - - Internal use. Creates a new extension with the specified field number. - - - - - Gets the field number of this extension - - - - - Represents a type-safe extension identifier used for getting and setting single extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The field value type of this extension - - - - Creates a new extension identifier with the specified field number and codec - - - - - Represents a type-safe extension identifier used for getting repeated extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The repeated field value type of this extension - - - - Creates a new repeated extension identifier with the specified field number and codec - - - - - Provides extensions to messages while parsing. This API is experimental and subject to change. - - - - - Creates a new empty extension registry - - - - - Gets the total number of extensions in this extension registry - - - - - Returns whether the registry is readonly - - - - - Adds the specified extension to the registry - - - - - Adds the specified extensions to the registry - - - - - Clears the registry of all values - - - - - Gets whether the extension registry contains the specified extension - - - - - Copies the arrays in the registry set to the specified array at the specified index - - The array to copy to - The array index to start at - - - - Returns an enumerator to enumerate through the items in the registry - - Returns an enumerator for the extensions in this registry - - - - Removes the specified extension from the set - - The extension - true if the extension was removed, otherwise false - - - - Clones the registry into a new registry - - - - - Methods for managing s with null checking. - - Most users will not use this class directly and its API is experimental and subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if it doesn't exist in this set - - - - - Gets the value of the specified repeated extension, registering it if it doesn't exist - - - - - Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null. - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified extension - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Merges the second set into the first set, creating a new instance if first is null - - - - - Clones the set into a new set. If the set is null, this returns null - - - - - Used for keeping track of extensions in messages. - methods route to this set. - - Most users will not need to use this class directly - - The message type that extensions in this set target - - - - Gets a hash code of the set - - - - - Returns whether this set is equal to the other object - - - - - Calculates the size of this extension set - - - - - Writes the extension values in this set to the output stream - - - - - Writes the extension values in this set to the write context - - - - - Factory methods for . - - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - A codec for the given tag. - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a message field with the given tag. - - The tag. - A parser to use for the message type. - A codec for the given tag. - - - - Retrieves a codec suitable for a group field with the given tag. - - The start group tag. - The end group tag. - A parser to use for the group message type. - A codec for given tag - - - - Creates a codec for a wrapper type of a class - which must be string or ByteString. - - - - - Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64, - Bool, Single or Double. - - - - - Helper code to create codecs for wrapper types. - - - Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it - slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place, - we can refactor later if we come up with something cleaner. - - - - - Returns a field codec which effectively wraps a value of type T in a message. - - - - - - - An encode/decode pair for a single field. This effectively encapsulates - all the information needed to read or write the field value from/to a coded - stream. - - - This class is public and has to be as it is used by generated code, but its public - API is very limited - just what the generated code needs to call directly. - - - - This never writes default values to the stream, and does not address "packedness" - in repeated fields itself, other than to know whether or not the field *should* be packed. - - - - - Merges an input stream into a value - - - - - Merges a value into a reference to another value, returning a boolean if the value was set - - - - - Returns a delegate to write a value (unconditionally) to a coded output stream. - - - - - Returns the size calculator for just a value. - - - - - Returns a delegate to read a value from a coded input stream. It is assumed that - the stream is already positioned on the appropriate tag. - - - - - Returns a delegate to merge a value from a coded input stream. - It is assumed that the stream is already positioned on the appropriate tag - - - - - Returns a delegate to merge two values together. - - - - - Returns the fixed size for an entry, or 0 if sizes vary. - - - - - Gets the tag of the codec. - - - The tag of the codec. - - - - - Gets the end tag of the codec or 0 if there is no end tag - - - The end tag of the codec. - - - - - Default value for this codec. Usually the same for every instance of the same type, but - for string/ByteString wrapper fields the codec's default value is null, whereas for - other string/ByteString fields it's "" or ByteString.Empty. - - - The default value of the codec's type. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Reads a value of the codec type from the given . - - The input stream to read from. - The value read from the stream. - - - - Reads a value of the codec type from the given . - - The parse context to read from. - The value read. - - - - Calculates the size required to write the given value, with a tag, - if the value is not the default. - - - - - A tree representation of a FieldMask. Each leaf node in this tree represent - a field path in the FieldMask. - - For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be: - - [root] -+- foo -+- bar - | | - | +- baz - | - +- bar --- baz - - - By representing FieldMasks with this tree structure we can easily convert - a FieldMask to a canonical form, merge two FieldMasks, calculate the - intersection to two FieldMasks and traverse all fields specified by the - FieldMask in a message tree. - - - - - Creates an empty FieldMaskTree. - - - - - Creates a FieldMaskTree for a given FieldMask. - - - - - Adds a field path to the tree. In a FieldMask, every field path matches the - specified field as well as all its sub-fields. For example, a field path - "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding - a field path to the tree, redundant sub-paths will be removed. That is, - after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it - exists, which will turn the tree node for "foo.bar" to a leaf node. - Likewise, if the field path to add is a sub-path of an existing leaf node, - nothing will be changed in the tree. - - - - - Merges all field paths in a FieldMask into this tree. - - - - - Converts this tree to a FieldMask. - - - - - Gathers all field paths in a sub-tree. - - - - - Adds the intersection of this tree with the given to . - - - - - Merges all fields specified by this FieldMaskTree from to . - - - - - Merges all fields specified by a sub-tree from to . - - - - - Class containing helpful workarounds for various platform compatibility - - - - - Interface for a Protocol Buffers message, supporting - parsing from and writing to . - - - - - Internal implementation of merging data from given parse context into this message. - Users should never invoke this method directly. - - - - - Internal implementation of writing this message to a given write context. - Users should never invoke this method directly. - - - - - A message type that has a custom string format for diagnostic purposes. - - - - Calling on a generated message type normally - returns the JSON representation. If a message type implements this interface, - then the method will be called instead of the regular - JSON formatting code, but only when ToString() is called either on the message itself - or on another message which contains it. This does not affect the normal JSON formatting of - the message. - - - For example, if you create a proto message representing a GUID, the internal - representation may be a bytes field or four fixed32 fields. However, when debugging - it may be more convenient to see a result in the same format as provides. - - This interface extends to avoid it accidentally being implemented - on types other than messages, where it would not be used by anything in the framework. - - - - - Returns a string representation of this object, for diagnostic purposes. - - - This method is called when a message is formatted as part of a - call. It does not affect the JSON representation used by other than - in calls to . While it is recommended - that the result is valid JSON, this is never assumed by the Protobuf library. - - A string representation of this object, for diagnostic purposes. - - - - Generic interface for a deeply cloneable type. - - - - All generated messages implement this interface, but so do some non-message types. - Additionally, due to the type constraint on T in , - it is simpler to keep this as a separate interface. - - - The type itself, returned by the method. - - - - Creates a deep clone of this object. - - A deep clone of this object. - - - - Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class. - This interface is experiemental and is subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if the extension isn't registered in this set. - For a version of this method that never returns null, use - - - - - Gets the value of the specified repeated extension, registering it if it hasn't already been registered. - - - - - Sets the value of the specified extension - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified repeated extension - - - - - Interface for a Protocol Buffers message, supporting - basic operations required for serialization. - - - - - Merges the data from the specified coded input stream with the current message. - - See the user guide for precise merge semantics. - - - - - Writes the data to the given coded output stream. - - Coded output stream to write the data to. Must not be null. - - - - Calculates the size of this message in Protocol Buffer wire format, in bytes. - - The number of bytes required to write this message - to a coded output stream. - - - - Descriptor for this message. All instances are expected to return the same descriptor, - and for generated types this will be an explicitly-implemented member, returning the - same value as the static property declared on the type. - - - - - Generic interface for a Protocol Buffers message, - where the type parameter is expected to be the same type as - the implementation class. - - The message type. - - - - Merges the given message into this one. - - See the user guide for precise merge semantics. - The message to merge with this one. Must not be null. - - - - Thrown when an attempt is made to parse invalid JSON, e.g. using - a non-string property key, or including a redundant comma. Parsing a protocol buffer - message represented in JSON using can throw both this - exception and depending on the situation. This - exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException - is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer - message. - - - - - Thrown when a protocol message being parsed is invalid in some way, - e.g. it contains a malformed varint or a negative byte length. - - - - - Creates an exception for an error condition of an invalid tag being encountered. - - - - - Reflection-based converter from messages to JSON. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON formatting working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - The JSON representation of the first 160 characters of Unicode. - Empty strings are replaced by the static constructor. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Formats the specified message as JSON. - - The message to format. - The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - The TextWriter to write the formatted message to. - The formatted message. - - - - Converts a message to JSON for diagnostic purposes with no extra context. - - - - This differs from calling on the default JSON - formatter in its handling of . As no type registry is available - in calls, the normal way of resolving the type of - an Any message cannot be applied. Instead, a JSON property named @value - is included with the base64 data from the property of the message. - - The value returned by this method is only designed to be used for diagnostic - purposes. It may not be parsable by , and may not be parsable - by other Protocol Buffer implementations. - - The message to format for diagnostic purposes. - The diagnostic-only JSON representation of the message - - - - Determines whether or not a field value should be serialized according to the field, - its value in the message, and the settings of this formatter. - - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - - - - Central interception point for well-known type formatting. Any well-known types which - don't need special handling can fall back to WriteMessage. We avoid assuming that the - values are using the embedded well-known types, in order to allow for dynamic messages - in the future. - - - - - Writes a string (including leading and trailing double quotes) to a builder, escaping as required. - - - Other than surrogate pair handling, this code is mostly taken from src/google/protobuf/util/internal/json_escaping.cc. - - - - - Settings controlling JSON formatting. - - - - - Default settings, as used by - - - - - Whether fields which would otherwise not be included in the formatted data - should be formatted even when the value is not present, or has the default value. - This option only affects fields which don't support "presence" (e.g. - singular non-optional proto3 primitive fields). - - - - - The type registry used to format messages. - - - - - Whether to format enums as ints. Defaults to false. - - - - - Creates a new object with the specified formatting of default values - and an empty type registry. - - true if default values (0, empty strings etc) should be formatted; false otherwise. - - - - Creates a new object with the specified formatting of default values - and type registry. - - true if default values (0, empty strings etc) should be formatted; false otherwise. - The to use when formatting messages. - - - - Creates a new object with the specified parameters. - - true if default values (0, empty strings etc) should be formatted; false otherwise. - The to use when formatting messages. TypeRegistry.Empty will be used if it is null. - true to format the enums as integers; false to format enums as enum names. - - - - Creates a new object with the specified formatting of default values and the current settings. - - true if default values (0, empty strings etc) should be formatted; false otherwise. - - - - Creates a new object with the specified type registry and the current settings. - - The to use when formatting messages. - - - - Creates a new object with the specified enums formatting option and the current settings. - - true to format the enums as integers; false to format enums as enum names. - - - - Reflection-based converter from JSON to messages. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON parsing working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Parses and merges the information into the given message. - - The message to merge the JSON information into. - The JSON to parse. - - - - Parses JSON read from and merges the information into the given message. - - The message to merge the JSON information into. - Reader providing the JSON to parse. - - - - Merges the given message using data from the given tokenizer. In most cases, the next - token should be a "start object" token, but wrapper types and nullity can invalidate - that assumption. This is implemented as an LL(1) recursive descent parser over the stream - of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the - tokenizer performing that validation - but not every token stream is valid "protobuf JSON". - - - - - Parses into a new message. - - The type of message to create. - The JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - The type of message to create. - Reader providing the JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses into a new message. - - The JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - Reader providing the JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new instance of the message type for the given field. - - - - - Checks that any infinite/NaN values originated from the correct text. - This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the - way that Mono parses out-of-range values as infinity. - - - - - Settings controlling JSON parsing. - - - - - Default settings, as used by . This has the same default - recursion limit as , and an empty type registry. - - - - - The maximum depth of messages to parse. Note that this limit only applies to parsing - messages, not collections - so a message within a collection within a message only counts as - depth 2, not 3. - - - - - The type registry used to parse messages. - - - - - Whether the parser should ignore unknown fields (true) or throw an exception when - they are encountered (false). - - - - - Creates a new object with the specified recursion limit. - - The maximum depth of messages to parse - - - - Creates a new object with the specified recursion limit and type registry. - - The maximum depth of messages to parse - The type registry used to parse messages - - - - Creates a new object set to either ignore unknown fields, or throw an exception - when unknown fields are encountered. - - true if unknown fields should be ignored when parsing; false to throw an exception. - - - - Creates a new object based on this one, but with the specified recursion limit. - - The new recursion limit. - - - - Creates a new object based on this one, but with the specified type registry. - - The new type registry. Must not be null. - - - - Simple but strict JSON tokenizer, rigidly following RFC 7159. - - - - This tokenizer is stateful, and only returns "useful" tokens - names, values etc. - It does not create tokens for the separator between names and values, or for the comma - between values. It validates the token stream as it goes - so callers can assume that the - tokens it produces are appropriate. For example, it would never produce "start object, end array." - - Implementation details: the base class handles single token push-back and - Not thread-safe. - - - - - Creates a tokenizer that reads from the given text reader. - - - - - Creates a tokenizer that first replays the given list of tokens, then continues reading - from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back - on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was - created for the sake of Any parsing. - - - - - Returns the depth of the stack, purely in objects (not collections). - Informally, this is the number of remaining unclosed '{' characters we have. - - - - - Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream, - after which point Next() should not be called again. - - This implementation provides single-token buffering, and calls if there is no buffered token. - The next token in the stream. This is never null. - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Returns the next JSON token in the stream, when requested by the base class. (The method delegates - to this if it doesn't have a buffered token.) - - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Skips the value we're about to read. This must only be called immediately after reading a property name. - If the value is an object or an array, the complete object/array is skipped. - - - - - Tokenizer which first exhausts a list of tokens, then consults another tokenizer. - - - - - Tokenizer which does all the *real* work of parsing JSON. - - - - - This method essentially just loops through characters skipping whitespace, validating and - changing state (e.g. from ObjectBeforeColon to ObjectAfterColon) - until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point - it returns the token. Although the method is large, it would be relatively hard to break down further... most - of it is the large switch statement, which sometimes returns and sometimes doesn't. - - - - - Reads a string token. It is assumed that the opening " has already been read. - - - - - Reads an escaped character. It is assumed that the leading backslash has already been read. - - - - - Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read. - - - - - Consumes a text-only literal, throwing an exception if the read text doesn't match it. - It is assumed that the first letter of the literal has already been read. - - - - - Validates that we're in a valid state to read a value (using the given error prefix if necessary) - and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty. - - - - - Pops the top-most container, and sets the state to the appropriate one for the end of a value - in the parent container. - - - - - Possible states of the tokenizer. - - - This is a flags enum purely so we can simply and efficiently represent a set of valid states - for checking. - - Each is documented with an example, - where ^ represents the current position within the text stream. The examples all use string values, - but could be any value, including nested objects/arrays. - The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects). - Any additional notional state of "AfterValue" indicates that a value has been completed, at which - point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue. - - - These states were derived manually by reading RFC 7159 carefully. - - - - - - ^ { "foo": "bar" } - Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue" - - - - - { "foo": "bar" } ^ - After the value in a document. Next states: ReaderExhausted - - - - - { "foo": "bar" } ^ (and already read to the end of the reader) - Terminal state. - - - - - { ^ "foo": "bar" } - Before the *first* property in an object. - Next states: - "AfterValue" (empty object) - ObjectBeforeColon (read a name) - - - - - { "foo" ^ : "bar", "x": "y" } - Next state: ObjectAfterColon - - - - - { "foo" : ^ "bar", "x": "y" } - Before any property other than the first in an object. - (Equivalently: after any property in an object) - Next states: - "AfterValue" (value is simple) - ObjectStart (value is object) - ArrayStart (value is array) - - - - - { "foo" : "bar" ^ , "x" : "y" } - At the end of a property, so expecting either a comma or end-of-object - Next states: ObjectAfterComma or "AfterValue" - - - - - { "foo":"bar", ^ "x":"y" } - Read the comma after the previous property, so expecting another property. - This is like ObjectStart, but closing brace isn't valid here - Next state: ObjectBeforeColon. - - - - - [ ^ "foo", "bar" ] - Before the *first* value in an array. - Next states: - "AfterValue" (read a value) - "AfterValue" (end of array; will pop stack) - - - - - [ "foo" ^ , "bar" ] - After any value in an array, so expecting either a comma or end-of-array - Next states: ArrayAfterComma or "AfterValue" - - - - - [ "foo", ^ "bar" ] - After a comma in an array, so there *must* be another value (simple or complex). - Next states: "AfterValue" (simple value), StartObject, StartArray - - - - - Wrapper around a text reader allowing small amounts of buffering and location handling. - - - - - The buffered next character, if we have one. - - - - - Returns the next character in the stream, or null if we have reached the end. - - - - - - Creates a new exception appropriate for the current state of the reader. - - - - - Stream implementation which proxies another stream, only allowing a certain amount - of data to be read. Note that this is only used to read delimited streams, so it - doesn't attempt to implement everything. - - - - - Extension methods on and . - - - - - Merges data from the given byte array into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given byte array slice into an existing message. - - The message to merge the data into. - The data containing the slice to merge, which must be protobuf-encoded binary data. - The offset of the slice to merge. - The length of the slice to merge. - - - - Merges data from the given byte string into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given stream into an existing message. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges length-delimited data from the given stream into an existing message. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Converts the given message into a byte array in protobuf encoding. - - The message to convert. - The message data as a byte array. - - - - Writes the given message data to the given stream in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the length and then data of the given message to a stream. - - The message to write. - The output stream to write to. - - - - Converts the given message into a byte string in protobuf encoding. - - The message to convert. - The message data as a byte string. - - - - Writes the given message data to the given buffer writer in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the given message data to the given span in protobuf encoding. - The size of the destination span needs to fit the serialized size - of the message exactly, otherwise an exception is thrown. - - The message to write to the stream. - The span to write to. Size must match size of the message exactly. - - - - Checks if all required fields in a message have values set. For proto3 messages, this returns true - - - - - A general message parser, typically used by reflection-based code as all the methods - return simple . - - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - A parser for a specific message type. - - -

- This delegates most behavior to the - implementation within the original type, but - provides convenient overloads to parse from a variety of sources. -

-

- Most applications will never need to create their own instances of this type; - instead, use the static Parser property of a generated message type to obtain a - parser for that type. -

-
- The type of message to be parsed. -
- - - Creates a new parser. - - - The factory method is effectively an optimization over using a generic constraint - to require a parameterless constructor: delegates are significantly faster to execute. - - Function to invoke when a new, empty message is required. - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the - extensionByNumber table in ExtensionRegistry. - - - - - An opaque struct that represents the current parsing state and is passed along - as the parsing proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Creates a ParseContext instance from CodedInputStream. - WARNING: internally this copies the CodedInputStream's state, so after done with the ParseContext, - the CodedInputStream's state needs to be updated. - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the input. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Reads a field tag, returning the tag of 0 for "end of input". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputReader; it may be the end of the logical input - for an embedded message, for example. - - The next field tag, or 0 for end of input. (0 is never a valid tag.) - - - - Reads a double field from the input. - - - - - Reads a float field from the input. - - - - - Reads a uint64 field from the input. - - - - - Reads an int64 field from the input. - - - - - Reads an int32 field from the input. - - - - - Reads a fixed64 field from the input. - - - - - Reads a fixed32 field from the input. - - - - - Reads a bool field from the input. - - - - - Reads a string field from the input. - - - - - Reads an embedded message field value from the input. - - - - - Reads an embedded group field from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a uint32 field value from the input. - - - - - Reads an enum field value from the input. - - - - - Reads an sfixed32 field value from the input. - - - - - Reads an sfixed64 field value from the input. - - - - - Reads an sint32 field value from the input. - - - - - Reads an sint64 field value from the input. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - The position within the current buffer (i.e. the next byte to read) - - - - - Size of the current buffer - - - - - If we are currently inside a length-delimited block, this is the number of - bytes in the buffer that are still available once we leave the delimited block. - - - - - The absolute position of the end of the current length-delimited block (including totalBytesRetired) - - - - - The total number of consumed before the start of the current buffer. The - total bytes read up to the current position can be computed as - totalBytesRetired + bufferPos. - - - - - The last tag we read. 0 indicates we've read to the end of the stream - (or haven't read anything yet). - - - - - The next tag, used to store the value read by PeekTag. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Primitives for parsing protobuf wire format. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Parses the next tag. - If the end of logical stream was reached, an invalid tag of 0 is returned. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Parses a raw varint. - - - - - Parses a raw Varint. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Parses a 32-bit little-endian integer. - - - - - Parses a 64-bit little-endian integer. - - - - - Parses a double value. - - - - - Parses a float value. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads and discards bytes. - - the end of the stream - or the current limit was reached - - - - Reads a string field value from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a UTF-8 string from the next "length" bytes. - - - the end of the stream or the current limit was reached - - - - - Reads a string assuming that it is spread across multiple spans in a . - - - - - Validates that the specified size doesn't exceed the current limit. If it does then remaining bytes - are skipped and an error is thrown. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Decode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 32 bits to be varint encoded, thus always taking - 5 bytes on the wire.) - - - - - Decode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Checks whether there is known data available of the specified size remaining to parse. - When parsing from a Stream this can return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Checks whether there is known data available of the specified size remaining to parse - in the underlying data source. - When parsing from a Stream this will return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Read raw bytes of the specified length into a span. The amount of data available and the current limit should - be checked before calling this method. - - - - - Reading and skipping messages / groups - - - - - Skip a group. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Fast parsing primitives for wrapper types - - - - - Helper methods for throwing exceptions when preconditions are not met. - - - This class is used internally and by generated code; it is not particularly - expected to be used from application code, although nothing prevents it - from being used that way. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - This is equivalent to but without the type parameter - constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull - with a value type - but it gets in the way if either you want to use it with a nullable - value type, or you want to use it with an unconstrained type parameter. - - - - - Container for a set of custom options specified within a message, field etc. - - - - This type is publicly immutable, but internally mutable. It is only populated - by the descriptor parsing code - by the time any user code is able to see an instance, - it will be fully initialized. - - - If an option is requested using the incorrect method, an answer may still be returned: all - of the numeric types are represented internally using 64-bit integers, for example. It is up to - the caller to ensure that they make the appropriate method call for the option they're interested in. - Note that enum options are simply stored as integers, so the value should be fetched using - and then cast appropriately. - - - Repeated options are currently not supported. Asking for a single value of an option - which was actually repeated will return the last value, except for message types where - all the set values are merged together. - - - - - - Retrieves a Boolean value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 32-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 64-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a string value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a bytes value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a message value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - Holder for reflection information generated from google/protobuf/descriptor.proto - - - File descriptor for google/protobuf/descriptor.proto - - - - The protocol compiler can output a FileDescriptorSet containing the .proto - files it parses. - - - - Field number for the "file" field. - - - - Describes a complete .proto file. - - - - Field number for the "name" field. - - - - file name, relative to root of source tree - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "package" field. - - - - e.g. "foo", "foo.bar", etc. - - - - Gets whether the "package" field is set - - - Clears the value of the "package" field - - - Field number for the "dependency" field. - - - - Names of files imported by this file. - - - - Field number for the "public_dependency" field. - - - - Indexes of the public imported files in the dependency list above. - - - - Field number for the "weak_dependency" field. - - - - Indexes of the weak imported files in the dependency list. - For Google-internal migration only. Do not use. - - - - Field number for the "message_type" field. - - - - All top-level definitions in this file. - - - - Field number for the "enum_type" field. - - - Field number for the "service" field. - - - Field number for the "extension" field. - - - Field number for the "options" field. - - - Field number for the "source_code_info" field. - - - - This field contains optional information about the original source code. - You may safely remove this entire field without harming runtime - functionality of the descriptors -- the information is needed only by - development tools. - - - - Field number for the "syntax" field. - - - - The syntax of the proto file. - The supported values are "proto2" and "proto3". - - - - Gets whether the "syntax" field is set - - - Clears the value of the "syntax" field - - - - Describes a message type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "field" field. - - - Field number for the "extension" field. - - - Field number for the "nested_type" field. - - - Field number for the "enum_type" field. - - - Field number for the "extension_range" field. - - - Field number for the "oneof_decl" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - Field number for the "reserved_name" field. - - - - Reserved field names, which may not be used by fields in the same message. - A given name may only be reserved once. - - - - Container for nested types declared in the DescriptorProto message type. - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "options" field. - - - - Range of reserved tag numbers. Reserved tag numbers may not be used by - fields or extension ranges in the same message. Reserved ranges may - not overlap. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - - Describes a field within a message. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "label" field. - - - Gets whether the "label" field is set - - - Clears the value of the "label" field - - - Field number for the "type" field. - - - - If type_name is set, this need not be set. If both this and type_name - are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "type_name" field. - - - - For message and enum types, this is the name of the type. If the name - starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - rules are used to find the type (i.e. first the nested types within this - message are searched, then within the parent, on up to the root - namespace). - - - - Gets whether the "type_name" field is set - - - Clears the value of the "type_name" field - - - Field number for the "extendee" field. - - - - For extensions, this is the name of the type being extended. It is - resolved in the same manner as type_name. - - - - Gets whether the "extendee" field is set - - - Clears the value of the "extendee" field - - - Field number for the "default_value" field. - - - - For numeric types, contains the original text representation of the value. - For booleans, "true" or "false". - For strings, contains the default text contents (not escaped in any way). - For bytes, contains the C escaped value. All bytes >= 128 are escaped. - TODO(kenton): Base-64 encode? - - - - Gets whether the "default_value" field is set - - - Clears the value of the "default_value" field - - - Field number for the "oneof_index" field. - - - - If set, gives the index of a oneof in the containing type's oneof_decl - list. This field is a member of that oneof. - - - - Gets whether the "oneof_index" field is set - - - Clears the value of the "oneof_index" field - - - Field number for the "json_name" field. - - - - JSON name of this field. The value is set by protocol compiler. If the - user has set a "json_name" option on this field, that option's value - will be used. Otherwise, it's deduced from the field's name by converting - it to camelCase. - - - - Gets whether the "json_name" field is set - - - Clears the value of the "json_name" field - - - Field number for the "options" field. - - - Field number for the "proto3_optional" field. - - - - If true, this is a proto3 "optional". When a proto3 field is optional, it - tracks presence regardless of field type. - - When proto3_optional is true, this field must be belong to a oneof to - signal to old proto3 clients that presence is tracked for this field. This - oneof is known as a "synthetic" oneof, and this field must be its sole - member (each proto3 optional field gets its own synthetic oneof). Synthetic - oneofs exist in the descriptor only, and do not generate any API. Synthetic - oneofs must be ordered after all "real" oneofs. - - For message fields, proto3_optional doesn't create any semantic change, - since non-repeated message fields always track presence. However it still - indicates the semantic detail of whether the user wrote "optional" or not. - This can be useful for round-tripping the .proto file. For consistency we - give message fields a synthetic oneof also, even though it is not required - to track presence. This is especially important because the parser can't - tell if a field is a message or an enum, so it must always create a - synthetic oneof. - - Proto2 optional fields do not set this flag, because they already indicate - optional with `LABEL_OPTIONAL`. - - - - Gets whether the "proto3_optional" field is set - - - Clears the value of the "proto3_optional" field - - - Container for nested types declared in the FieldDescriptorProto message type. - - - - 0 is reserved for errors. - Order is weird for historical reasons. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - negative values are likely. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - negative values are likely. - - - - - Tag-delimited aggregate. - Group type is deprecated and not supported in proto3. However, Proto3 - implementations should still be able to parse the group wire format and - treat group fields as unknown fields. - - - - - Length-delimited aggregate. - - - - - New in version 2. - - - - - Uses ZigZag encoding. - - - - - Uses ZigZag encoding. - - - - - 0 is reserved for errors - - - - - Describes a oneof. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "options" field. - - - - Describes an enum type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "value" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - - Range of reserved numeric values. Reserved numeric values may not be used - by enum values in the same enum declaration. Reserved ranges may not - overlap. - - - - Field number for the "reserved_name" field. - - - - Reserved enum value names, which may not be reused. A given name may only - be reserved once. - - - - Container for nested types declared in the EnumDescriptorProto message type. - - - - Range of reserved numeric values. Reserved values may not be used by - entries in the same enum. Reserved ranges may not overlap. - - Note that this is distinct from DescriptorProto.ReservedRange in that it - is inclusive such that it can appropriately represent the entire int32 - domain. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Inclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - - Describes a value within an enum. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "options" field. - - - - Describes a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "method" field. - - - Field number for the "options" field. - - - - Describes a method of a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "input_type" field. - - - - Input and output type names. These are resolved in the same way as - FieldDescriptorProto.type_name, but must refer to a message type. - - - - Gets whether the "input_type" field is set - - - Clears the value of the "input_type" field - - - Field number for the "output_type" field. - - - Gets whether the "output_type" field is set - - - Clears the value of the "output_type" field - - - Field number for the "options" field. - - - Field number for the "client_streaming" field. - - - - Identifies if client streams multiple client messages - - - - Gets whether the "client_streaming" field is set - - - Clears the value of the "client_streaming" field - - - Field number for the "server_streaming" field. - - - - Identifies if server streams multiple server messages - - - - Gets whether the "server_streaming" field is set - - - Clears the value of the "server_streaming" field - - - Field number for the "java_package" field. - - - - Sets the Java package where classes generated from this .proto will be - placed. By default, the proto package is used, but this is often - inappropriate because proto packages do not normally start with backwards - domain names. - - - - Gets whether the "java_package" field is set - - - Clears the value of the "java_package" field - - - Field number for the "java_outer_classname" field. - - - - If set, all the classes from the .proto file are wrapped in a single - outer class with the given name. This applies to both Proto1 - (equivalent to the old "--one_java_file" option) and Proto2 (where - a .proto always translates to a single class, but you may want to - explicitly choose the class name). - - - - Gets whether the "java_outer_classname" field is set - - - Clears the value of the "java_outer_classname" field - - - Field number for the "java_multiple_files" field. - - - - If set true, then the Java code generator will generate a separate .java - file for each top-level message, enum, and service defined in the .proto - file. Thus, these types will *not* be nested inside the outer class - named by java_outer_classname. However, the outer class will still be - generated to contain the file's getDescriptor() method as well as any - top-level extensions defined in the file. - - - - Gets whether the "java_multiple_files" field is set - - - Clears the value of the "java_multiple_files" field - - - Field number for the "java_generate_equals_and_hash" field. - - - - This option does nothing. - - - - Gets whether the "java_generate_equals_and_hash" field is set - - - Clears the value of the "java_generate_equals_and_hash" field - - - Field number for the "java_string_check_utf8" field. - - - - If set true, then the Java2 code generator will generate code that - throws an exception whenever an attempt is made to assign a non-UTF-8 - byte sequence to a string field. - Message reflection will do the same. - However, an extension field still accepts non-UTF-8 byte sequences. - This option has no effect on when used with the lite runtime. - - - - Gets whether the "java_string_check_utf8" field is set - - - Clears the value of the "java_string_check_utf8" field - - - Field number for the "optimize_for" field. - - - Gets whether the "optimize_for" field is set - - - Clears the value of the "optimize_for" field - - - Field number for the "go_package" field. - - - - Sets the Go package where structs generated from this .proto will be - placed. If omitted, the Go package will be derived from the following: - - The basename of the package import path, if provided. - - Otherwise, the package statement in the .proto file, if present. - - Otherwise, the basename of the .proto file, without extension. - - - - Gets whether the "go_package" field is set - - - Clears the value of the "go_package" field - - - Field number for the "cc_generic_services" field. - - - - Should generic services be generated in each language? "Generic" services - are not specific to any particular RPC system. They are generated by the - main code generators in each language (without additional plugins). - Generic services were the only kind of service generation supported by - early versions of google.protobuf. - - Generic services are now considered deprecated in favor of using plugins - that generate code specific to your particular RPC system. Therefore, - these default to false. Old code which depends on generic services should - explicitly set them to true. - - - - Gets whether the "cc_generic_services" field is set - - - Clears the value of the "cc_generic_services" field - - - Field number for the "java_generic_services" field. - - - Gets whether the "java_generic_services" field is set - - - Clears the value of the "java_generic_services" field - - - Field number for the "py_generic_services" field. - - - Gets whether the "py_generic_services" field is set - - - Clears the value of the "py_generic_services" field - - - Field number for the "php_generic_services" field. - - - Gets whether the "php_generic_services" field is set - - - Clears the value of the "php_generic_services" field - - - Field number for the "deprecated" field. - - - - Is this file deprecated? - Depending on the target platform, this can emit Deprecated annotations - for everything in the file, or it will be completely ignored; in the very - least, this is a formalization for deprecating files. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "cc_enable_arenas" field. - - - - Enables the use of arenas for the proto messages in this file. This applies - only to generated classes for C++. - - - - Gets whether the "cc_enable_arenas" field is set - - - Clears the value of the "cc_enable_arenas" field - - - Field number for the "objc_class_prefix" field. - - - - Sets the objective c class prefix which is prepended to all objective c - generated classes from this .proto. There is no default. - - - - Gets whether the "objc_class_prefix" field is set - - - Clears the value of the "objc_class_prefix" field - - - Field number for the "csharp_namespace" field. - - - - Namespace for generated classes; defaults to the package. - - - - Gets whether the "csharp_namespace" field is set - - - Clears the value of the "csharp_namespace" field - - - Field number for the "swift_prefix" field. - - - - By default Swift generators will take the proto package and CamelCase it - replacing '.' with underscore and use that to prefix the types/symbols - defined. When this options is provided, they will use this value instead - to prefix the types/symbols defined. - - - - Gets whether the "swift_prefix" field is set - - - Clears the value of the "swift_prefix" field - - - Field number for the "php_class_prefix" field. - - - - Sets the php class prefix which is prepended to all php generated classes - from this .proto. Default is empty. - - - - Gets whether the "php_class_prefix" field is set - - - Clears the value of the "php_class_prefix" field - - - Field number for the "php_namespace" field. - - - - Use this option to change the namespace of php generated classes. Default - is empty. When this option is empty, the package name will be used for - determining the namespace. - - - - Gets whether the "php_namespace" field is set - - - Clears the value of the "php_namespace" field - - - Field number for the "php_metadata_namespace" field. - - - - Use this option to change the namespace of php generated metadata classes. - Default is empty. When this option is empty, the proto file name will be - used for determining the namespace. - - - - Gets whether the "php_metadata_namespace" field is set - - - Clears the value of the "php_metadata_namespace" field - - - Field number for the "ruby_package" field. - - - - Use this option to change the package of ruby generated classes. Default - is empty. When this option is not set, the package name will be used for - determining the ruby package. - - - - Gets whether the "ruby_package" field is set - - - Clears the value of the "ruby_package" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. - See the documentation for the "Options" section above. - - - - Container for nested types declared in the FileOptions message type. - - - - Generated classes can be optimized for speed or code size. - - - - - Generate complete code for parsing, serialization, - - - - - etc. - - - - - Generate code using MessageLite and the lite runtime. - - - - Field number for the "message_set_wire_format" field. - - - - Set true to use the old proto1 MessageSet wire format for extensions. - This is provided for backwards-compatibility with the MessageSet wire - format. You should not use this for any other reason: It's less - efficient, has fewer features, and is more complicated. - - The message must be defined exactly as follows: - message Foo { - option message_set_wire_format = true; - extensions 4 to max; - } - Note that the message cannot have any defined fields; MessageSets only - have extensions. - - All extensions of your type must be singular messages; e.g. they cannot - be int32s, enums, or repeated messages. - - Because this is an option, the above two restrictions are not enforced by - the protocol compiler. - - - - Gets whether the "message_set_wire_format" field is set - - - Clears the value of the "message_set_wire_format" field - - - Field number for the "no_standard_descriptor_accessor" field. - - - - Disables the generation of the standard "descriptor()" accessor, which can - conflict with a field of the same name. This is meant to make migration - from proto1 easier; new code should avoid fields named "descriptor". - - - - Gets whether the "no_standard_descriptor_accessor" field is set - - - Clears the value of the "no_standard_descriptor_accessor" field - - - Field number for the "deprecated" field. - - - - Is this message deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the message, or it will be completely ignored; in the very least, - this is a formalization for deprecating messages. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "map_entry" field. - - - - Whether the message is an automatically generated map entry type for the - maps field. - - For maps fields: - map<KeyType, ValueType> map_field = 1; - The parsed descriptor looks like: - message MapFieldEntry { - option map_entry = true; - optional KeyType key = 1; - optional ValueType value = 2; - } - repeated MapFieldEntry map_field = 1; - - Implementations may choose not to generate the map_entry=true message, but - use a native map in the target language to hold the keys and values. - The reflection APIs in such implementations still need to work as - if the field is a repeated message field. - - NOTE: Do not set the option in .proto files. Always use the maps syntax - instead. The option should only be implicitly set by the proto compiler - parser. - - - - Gets whether the "map_entry" field is set - - - Clears the value of the "map_entry" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "ctype" field. - - - - The ctype option instructs the C++ code generator to use a different - representation of the field than it normally would. See the specific - options below. This option is not yet implemented in the open source - release -- sorry, we'll try to include it in a future version! - - - - Gets whether the "ctype" field is set - - - Clears the value of the "ctype" field - - - Field number for the "packed" field. - - - - The packed option can be enabled for repeated primitive fields to enable - a more efficient representation on the wire. Rather than repeatedly - writing the tag and type for each element, the entire array is encoded as - a single length-delimited blob. In proto3, only explicit setting it to - false will avoid using packed encoding. - - - - Gets whether the "packed" field is set - - - Clears the value of the "packed" field - - - Field number for the "jstype" field. - - - - The jstype option determines the JavaScript type used for values of the - field. The option is permitted only for 64 bit integral and fixed types - (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - is represented as JavaScript string, which avoids loss of precision that - can happen when a large value is converted to a floating point JavaScript. - Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - use the JavaScript "number" type. The behavior of the default option - JS_NORMAL is implementation dependent. - - This option is an enum to permit additional types to be added, e.g. - goog.math.Integer. - - - - Gets whether the "jstype" field is set - - - Clears the value of the "jstype" field - - - Field number for the "lazy" field. - - - - Should this field be parsed lazily? Lazy applies only to message-type - fields. It means that when the outer message is initially parsed, the - inner message's contents will not be parsed but instead stored in encoded - form. The inner message will actually be parsed when it is first accessed. - - This is only a hint. Implementations are free to choose whether to use - eager or lazy parsing regardless of the value of this option. However, - setting this option true suggests that the protocol author believes that - using lazy parsing on this field is worth the additional bookkeeping - overhead typically needed to implement it. - - This option does not affect the public interface of any generated code; - all method signatures remain the same. Furthermore, thread-safety of the - interface is not affected by this option; const methods remain safe to - call from multiple threads concurrently, while non-const methods continue - to require exclusive access. - - Note that implementations may choose not to check required fields within - a lazy sub-message. That is, calling IsInitialized() on the outer message - may return true even if the inner message has missing required fields. - This is necessary because otherwise the inner message would have to be - parsed in order to perform the check, defeating the purpose of lazy - parsing. An implementation which chooses not to check required fields - must be consistent about it. That is, for any particular sub-message, the - implementation must either *always* check its required fields, or *never* - check its required fields, regardless of whether or not the message has - been parsed. - - - - Gets whether the "lazy" field is set - - - Clears the value of the "lazy" field - - - Field number for the "deprecated" field. - - - - Is this field deprecated? - Depending on the target platform, this can emit Deprecated annotations - for accessors, or it will be completely ignored; in the very least, this - is a formalization for deprecating fields. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "weak" field. - - - - For Google-internal migration only. Do not use. - - - - Gets whether the "weak" field is set - - - Clears the value of the "weak" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the FieldOptions message type. - - - - Default mode. - - - - - Use the default type. - - - - - Use JavaScript strings. - - - - - Use JavaScript numbers. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "allow_alias" field. - - - - Set this option to true to allow mapping different tag names to the same - value. - - - - Gets whether the "allow_alias" field is set - - - Clears the value of the "allow_alias" field - - - Field number for the "deprecated" field. - - - - Is this enum deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum, or it will be completely ignored; in the very least, this - is a formalization for deprecating enums. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this enum value deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum value, or it will be completely ignored; in the very least, - this is a formalization for deprecating enum values. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this service deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the service, or it will be completely ignored; in the very least, - this is a formalization for deprecating services. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this method deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the method, or it will be completely ignored; in the very least, - this is a formalization for deprecating methods. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "idempotency_level" field. - - - Gets whether the "idempotency_level" field is set - - - Clears the value of the "idempotency_level" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the MethodOptions message type. - - - - Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - or neither? HTTP based RPC implementation may choose GET verb for safe - methods, and PUT verb for idempotent methods instead of the default POST. - - - - - implies idempotent - - - - - idempotent, but may have side effects - - - - - A message representing a option the parser does not recognize. This only - appears in options protos created by the compiler::Parser class. - DescriptorPool resolves these when building Descriptor objects. Therefore, - options protos in descriptor objects (e.g. returned by Descriptor::options(), - or produced by Descriptor::CopyTo()) will never have UninterpretedOptions - in them. - - - - Field number for the "name" field. - - - Field number for the "identifier_value" field. - - - - The value of the uninterpreted option, in whatever type the tokenizer - identified it as during parsing. Exactly one of these should be set. - - - - Gets whether the "identifier_value" field is set - - - Clears the value of the "identifier_value" field - - - Field number for the "positive_int_value" field. - - - Gets whether the "positive_int_value" field is set - - - Clears the value of the "positive_int_value" field - - - Field number for the "negative_int_value" field. - - - Gets whether the "negative_int_value" field is set - - - Clears the value of the "negative_int_value" field - - - Field number for the "double_value" field. - - - Gets whether the "double_value" field is set - - - Clears the value of the "double_value" field - - - Field number for the "string_value" field. - - - Gets whether the "string_value" field is set - - - Clears the value of the "string_value" field - - - Field number for the "aggregate_value" field. - - - Gets whether the "aggregate_value" field is set - - - Clears the value of the "aggregate_value" field - - - Container for nested types declared in the UninterpretedOption message type. - - - - The name of the uninterpreted option. Each string represents a segment in - a dot-separated name. is_extension is true iff a segment represents an - extension (denoted with parentheses in options specs in .proto files). - E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents - "foo.(bar.baz).qux". - - - - Field number for the "name_part" field. - - - Gets whether the "name_part" field is set - - - Clears the value of the "name_part" field - - - Field number for the "is_extension" field. - - - Gets whether the "is_extension" field is set - - - Clears the value of the "is_extension" field - - - - Encapsulates information about the original source file from which a - FileDescriptorProto was generated. - - - - Field number for the "location" field. - - - - A Location identifies a piece of source code in a .proto file which - corresponds to a particular definition. This information is intended - to be useful to IDEs, code indexers, documentation generators, and similar - tools. - - For example, say we have a file like: - message Foo { - optional string foo = 1; - } - Let's look at just the field definition: - optional string foo = 1; - ^ ^^ ^^ ^ ^^^ - a bc de f ghi - We have the following locations: - span path represents - [a,i) [ 4, 0, 2, 0 ] The whole field definition. - [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - - Notes: - - A location may refer to a repeated field itself (i.e. not to any - particular index within it). This is used whenever a set of elements are - logically enclosed in a single code segment. For example, an entire - extend block (possibly containing multiple extension definitions) will - have an outer location whose path refers to the "extensions" repeated - field without an index. - - Multiple locations may have the same path. This happens when a single - logical declaration is spread out across multiple places. The most - obvious example is the "extend" block again -- there may be multiple - extend blocks in the same scope, each of which will have the same path. - - A location's span is not always a subset of its parent's span. For - example, the "extendee" of an extension declaration appears at the - beginning of the "extend" block and is shared by all extensions within - the block. - - Just because a location's span is a subset of some other location's span - does not mean that it is a descendant. For example, a "group" defines - both a type and a field in a single declaration. Thus, the locations - corresponding to the type and field and their components will overlap. - - Code which tries to interpret locations should probably be designed to - ignore those that it doesn't understand, as more types of locations could - be recorded in the future. - - - - Container for nested types declared in the SourceCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies which part of the FileDescriptorProto was defined at this - location. - - Each element is a field number or an index. They form a path from - the root FileDescriptorProto to the place where the definition. For - example, this path: - [ 4, 3, 2, 7, 1 ] - refers to: - file.message_type(3) // 4, 3 - .field(7) // 2, 7 - .name() // 1 - This is because FileDescriptorProto.message_type has field number 4: - repeated DescriptorProto message_type = 4; - and DescriptorProto.field has field number 2: - repeated FieldDescriptorProto field = 2; - and FieldDescriptorProto.name has field number 1: - optional string name = 1; - - Thus, the above path gives the location of a field name. If we removed - the last element: - [ 4, 3, 2, 7 ] - this path refers to the whole field declaration (from the beginning - of the label to the terminating semicolon). - - - - Field number for the "span" field. - - - - Always has exactly three or four elements: start line, start column, - end line (optional, otherwise assumed same as start line), end column. - These are packed into a single field for efficiency. Note that line - and column numbers are zero-based -- typically you will want to add - 1 to each before displaying to a user. - - - - Field number for the "leading_comments" field. - - - - If this SourceCodeInfo represents a complete declaration, these are any - comments appearing before and after the declaration which appear to be - attached to the declaration. - - A series of line comments appearing on consecutive lines, with no other - tokens appearing on those lines, will be treated as a single comment. - - leading_detached_comments will keep paragraphs of comments that appear - before (but not connected to) the current element. Each paragraph, - separated by empty lines, will be one comment element in the repeated - field. - - Only the comment content is provided; comment markers (e.g. //) are - stripped out. For block comments, leading whitespace and an asterisk - will be stripped from the beginning of each line other than the first. - Newlines are included in the output. - - Examples: - - optional int32 foo = 1; // Comment attached to foo. - // Comment attached to bar. - optional int32 bar = 2; - - optional string baz = 3; - // Comment attached to baz. - // Another line attached to baz. - - // Comment attached to qux. - // - // Another line attached to qux. - optional double qux = 4; - - // Detached comment for corge. This is not leading or trailing comments - // to qux or corge because there are blank lines separating it from - // both. - - // Detached comment for corge paragraph 2. - - optional string corge = 5; - /* Block comment attached - * to corge. Leading asterisks - * will be removed. */ - /* Block comment attached to - * grault. */ - optional int32 grault = 6; - - // ignored detached comments. - - - - Gets whether the "leading_comments" field is set - - - Clears the value of the "leading_comments" field - - - Field number for the "trailing_comments" field. - - - Gets whether the "trailing_comments" field is set - - - Clears the value of the "trailing_comments" field - - - Field number for the "leading_detached_comments" field. - - - - Describes the relationship between generated code and its original source - file. A GeneratedCodeInfo message is associated with only one generated - source file, but may contain references to different source .proto files. - - - - Field number for the "annotation" field. - - - - An Annotation connects some span of text in generated code to an element - of its generating .proto file. - - - - Container for nested types declared in the GeneratedCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies the element in the original source .proto file. This field - is formatted the same as SourceCodeInfo.Location.path. - - - - Field number for the "source_file" field. - - - - Identifies the filesystem path to the original source .proto. - - - - Gets whether the "source_file" field is set - - - Clears the value of the "source_file" field - - - Field number for the "begin" field. - - - - Identifies the starting offset in bytes in the generated code - that relates to the identified object. - - - - Gets whether the "begin" field is set - - - Clears the value of the "begin" field - - - Field number for the "end" field. - - - - Identifies the ending offset in bytes in the generated code that - relates to the identified offset. The end offset should be one past - the last relevant byte (so the length of the text = end - begin). - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - - Base class for nearly all descriptors, providing common functionality. - - - - - The index of this descriptor within its parent descriptor. - - - This returns the index of this descriptor within its parent, for - this descriptor's type. (There can be duplicate values for different - types, e.g. one enum type with index 0 and one message type with index 0.) - - - - - Returns the name of the entity (field, message etc) being described. - - - - - The fully qualified name of the descriptor's target. - - - - - The file this descriptor was declared in. - - - - - The declaration information about the descriptor, or null if no declaration information - is available for this descriptor. - - - This information is typically only available for dynamically loaded descriptors, - for example within a protoc plugin where the full descriptors, including source info, - are passed to the code by protoc. - - - - - Retrieves the list of nested descriptors corresponding to the given field number, if any. - If the field is unknown or not a nested descriptor list, return null to terminate the search. - The default implementation returns null. - - - - - Provides additional information about the declaration of a descriptor, - such as source location and comments. - - - - - The descriptor this declaration relates to. - - - - - The start line of the declaration within the source file. This value is 1-based. - - - - - The start column of the declaration within the source file. This value is 1-based. - - - - - // The end line of the declaration within the source file. This value is 1-based. - - - - - The end column of the declaration within the source file. This value is 1-based, and - exclusive. (The final character of the declaration is on the column before this value.) - - - - - Comments appearing before the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing after the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing before the declaration, but separated from it by blank - lines. Each string represents a newline-separated paragraph of comments. - Leading whitespace and the comment marker ("//") are removed from each line. - The list is never null, but may be empty. Likewise each element is never null, but may be empty. - - - - - Contains lookup tables containing all the descriptors defined in a particular file. - - - - - Finds a symbol of the given name within the pool. - - The type of symbol to look for - Fully-qualified name to look up - The symbol with the given name and type, - or null if the symbol doesn't exist or has the wrong type - - - - Adds a package to the symbol tables. If a package by the same name - already exists, that is fine, but if some other kind of symbol - exists under the same name, an exception is thrown. If the package - has multiple components, this also adds the parent package(s). - - - - - Adds a symbol to the symbol table. - - The symbol already existed - in the symbol table. - - - - Verifies that the descriptor's name is valid (i.e. it contains - only letters, digits and underscores, and does not start with a digit). - - - - - - Returns the field with the given number in the given descriptor, - or null if it can't be found. - - - - - Adds a field to the fieldsByNumber table. - - A field with the same - containing type and number already exists. - - - - Adds an enum value to the enumValuesByNumber table. If an enum value - with the same type and number already exists, this method does nothing. - (This is allowed; the first value defined with the number takes precedence.) - - - - - Looks up a descriptor by name, relative to some other descriptor. - The name may be fully-qualified (with a leading '.'), partially-qualified, - or unqualified. C++-like name lookup semantics are used to search for the - matching descriptor. - - - This isn't heavily optimized, but it's only used during cross linking anyway. - If it starts being used more widely, we should look at performance more carefully. - - - - - Internal class containing utility methods when working with descriptors. - - - - - Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert - arrays. - - - - - Converts the given array into a read-only list, applying the specified conversion to - each input element. - - - - - Thrown when building descriptors fails because the source DescriptorProtos - are not valid. - - - - - The full name of the descriptor where the error occurred. - - - - - A human-readable description of the error. (The Message property - is made up of the descriptor's name and this description.) - - - - - Descriptor for an enum type in a .proto file. - - - - - The brief name of the descriptor's target. - - - - - The CLR type for this enum. For generated code, this will be a CLR enum type. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - An unmodifiable list of defined value descriptors for this enum. - - - - - Finds an enum value by number. If multiple enum values have the - same number, this returns the first defined value with that number. - If there is no value for the given number, this returns null. - - - - - Finds an enum value by name. - - The unqualified name of the value (e.g. "FOO"). - The value's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this enum. - - - - - The EnumOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum option for this descriptor - - - - - Gets a repeated value enum option for this descriptor - - - - - Descriptor for a single enum value within an enum in a .proto file. - - - - - Returns the name of the enum value described by this object. - - - - - Returns the number associated with this enum value. - - - - - Returns the enum descriptor that this value is part of. - - - - - The (possibly empty) set of custom options for this enum value. - - - - - The EnumValueOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum value option for this descriptor - - - - - Gets a repeated value enum value option for this descriptor - - - - - A collection to simplify retrieving the descriptors of extensions in a descriptor for a message - - - - - Returns a readonly list of all the extensions defined in this type in - the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in accending field order - - - - - Base class for field accessors. - - - - - Descriptor for a field or extension within a message in a .proto file. - - - - - Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension. - - - - - Returns the oneof containing this field, or null if it is not part of a oneof. - - - - - Returns the oneof containing this field if it's a "real" oneof, or null if either this - field is not part of a oneof, or the oneof is synthetic. - - - - - The effective JSON name for this field. This is usually the lower-camel-cased form of the field name, - but can be overridden using the json_name option in the .proto file. - - - - - Indicates whether this field supports presence, either implicitly (e.g. due to it being a message - type field) or explicitly via Has/Clear members. If this returns true, it is safe to call - and - on this field's accessor with a suitable message. - - - - - An extension identifier for this field, or null if this field isn't an extension. - - - - - The brief name of the descriptor's target. - - - - - Returns the accessor for this field. - - - - While a describes the field, it does not provide - any way of obtaining or changing the value of the field within a specific message; - that is the responsibility of the accessor. - - - In descriptors for generated code, the value returned by this property will be non-null for all - regular fields. However, if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, and the value of the map field itself is represented by a dictionary in the - reflection API. There are never instances of those "hidden" messages, so no accessor is provided - and this property will return null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - - - Maps a field type as included in the .proto file to a FieldType. - - - - - Returns true if this field is a repeated field; false otherwise. - - - - - Returns true if this field is a required field; false otherwise. - - - - - Returns true if this field is a map field; false otherwise. - - - - - Returns true if this field is a packed, repeated field; false otherwise. - - - - - Returns true if this field extends another message type; false otherwise. - - - - - Returns the type of the field. - - - - - Returns the field number declared in the proto file. - - - - - Compares this descriptor with another one, ordering in "canonical" order - which simply means ascending order by field number. - must be a field of the same type, i.e. the of - both fields must be the same. - - - - - For enum fields, returns the field's type. - - - - - For embedded message and group fields, returns the field's type. - - - - - For extension fields, returns the extended type - - - - - The (possibly empty) set of custom options for this field. - - - - - The FieldOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value field option for this descriptor - - - - - Gets a repeated value field option for this descriptor - - - - - Look up and cross-link all field types etc. - - - - - Enumeration of all the possible field types. - - - - - The double field type. - - - - - The float field type. - - - - - The int64 field type. - - - - - The uint64 field type. - - - - - The int32 field type. - - - - - The fixed64 field type. - - - - - The fixed32 field type. - - - - - The bool field type. - - - - - The string field type. - - - - - The field type used for groups. - - - - - The field type used for message fields. - - - - - The bytes field type. - - - - - The uint32 field type. - - - - - The sfixed32 field type. - - - - - The sfixed64 field type. - - - - - The sint32 field type. - - - - - The sint64 field type. - - - - - The field type used for enum fields. - - - - - The syntax of a .proto file - - - - - Proto2 syntax - - - - - Proto3 syntax - - - - - An unknown declared syntax - - - - - Describes a .proto file, including everything defined within. - IDescriptor is implemented such that the File property returns this descriptor, - and the FullName is the same as the Name. - - - - - Computes the full name of a descriptor within this file, with an optional parent message. - - - - - Extracts public dependencies from direct dependencies. This is a static method despite its - first parameter, as the value we're in the middle of constructing is only used for exceptions. - - - - - The descriptor in its protocol message representation. - - - - - The syntax of the file - - - - - The file name. - - - - - The package as declared in the .proto file. This may or may not - be equivalent to the .NET namespace of the generated classes. - - - - - Unmodifiable list of top-level message types declared in this file. - - - - - Unmodifiable list of top-level enum types declared in this file. - - - - - Unmodifiable list of top-level services declared in this file. - - - - - Unmodifiable list of top-level extensions declared in this file. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if this descriptor was generated using a version of protoc that did not fully - support extensions in C#. - - - - - Unmodifiable list of this file's dependencies (imports). - - - - - Unmodifiable list of this file's public dependencies (public imports). - - - - - The original serialized binary form of this descriptor. - - - - - Implementation of IDescriptor.FullName - just returns the same as Name. - - - - - Implementation of IDescriptor.File - just returns this descriptor. - - - - - Pool containing symbol descriptors. - - - - - Finds a type (message, enum, service or extension) in the file by name. Does not find nested types. - - The unqualified type name to look for. - The type of descriptor to look for - The type's descriptor, or null if not found. - - - - Builds a FileDescriptor from its protocol buffer representation. - - The original serialized descriptor data. - We have only limited proto2 support, so serializing FileDescriptorProto - would not necessarily give us this. - The protocol message form of the FileDescriptor. - FileDescriptors corresponding to all of the - file's dependencies, in the exact order listed in the .proto file. May be null, - in which case it is treated as an empty array. - Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false). - Details about generated code, for the purposes of reflection. - If is not - a valid descriptor. This can occur for a number of reasons, such as a field - having an undefined type or because two messages were defined with the same name. - - - - Creates a descriptor for generated code. - - - This method is only designed to be used by the results of generating code with protoc, - which creates the appropriate dependencies etc. It has to be public because the generated - code is "external", but should not be called directly by end users. - - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The file descriptors corresponding to . - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Returns the file descriptor for descriptor.proto. - - - This is used for protos which take a direct dependency on descriptor.proto, typically for - annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf - runtime for reflection purposes. The messages are internal to the runtime as they would require - proto2 semantics for full support, but the file descriptor is available via this property. The - C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto. - - - The file descriptor for descriptor.proto. - - - - - The (possibly empty) set of custom options for this file. - - - - - The FileOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value file option for this descriptor - - - - - Gets a repeated value file option for this descriptor - - - - - Performs initialization for the given generic type argument. - - - This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated) - to make calls into the reflection machinery of this library to express an intention to use that type - reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers - attempting to determine which generic type arguments need to be handled will spot the code path and act - accordingly. - - The type to force initialization for. - - - - Extra information provided by generated code when initializing a message or file descriptor. - These are constructed as required, and are not long-lived. Hand-written code should - never need to use this type. - - - - - Irrelevant for file descriptors; the CLR type for the message for message descriptors. - - - - - Irrelevant for file descriptors; the parser for message descriptors. - - - - - Irrelevant for file descriptors; the CLR property names (in message descriptor field order) - for fields in the message for message descriptors. - - - - - The extensions defined within this file/message descriptor - - - - - Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order) - for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo", - there will be a "FooCase" property and a "ClearFoo" method. - - - - - The reflection information for types within this file/message descriptor. Elements may be null - if there is no corresponding generated type, e.g. for map entry types. - - - - - The CLR types for enums within this file/message descriptor. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums. - - - - - Interface implemented by all descriptor types. - - - - - Returns the name of the entity (message, field etc) being described. - - - - - Returns the fully-qualified name of the entity being described. - - - - - Returns the descriptor for the .proto file that this entity is part of. - - - - - Allows fields to be reflectively accessed. - - - - - Returns the descriptor associated with this field. - - - - - Clears the field in the specified message. (For repeated fields, - this clears the list.) - - - - - Fetches the field value. For repeated values, this will be an - implementation. For map values, this will be an - implementation. - - - - - Indicates whether the field in the specified message is set. - For proto3 fields that aren't explicitly optional, this throws an - - - - - Mutator for single "simple" fields only. - - - Repeated fields are mutated by fetching the value and manipulating it as a list. - Map fields are mutated by fetching the value and manipulating it as a dictionary. - - The field is not a "simple" field. - - - - Accessor for map fields. - - - - - Describes a message type. - - - - - The brief name of the descriptor's target. - - - - - The CLR type used to represent message instances from this descriptor. - - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, so this property will return null in such cases. - - - For wrapper types ( and the like), the type returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - A parser for this message type. - - - - As is not generic, this cannot be statically - typed to the relevant type, but it should produce objects of a type compatible with . - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. No message parser object is created for - such messages, so this property will return null in such cases. - - - For wrapper types ( and the like), the parser returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - Returns whether this message is one of the "well known types" which may have runtime/protoc support. - - - - - Returns whether this message is one of the "wrapper types" used for fields which represent primitive values - with the addition of presence. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - A collection of fields, which can be retrieved by name or field number. - - - - - An unmodifiable list of extensions defined in this message's scope. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if they are declared in a file generated using a version of protoc that did not fully - support extensions in C#. - - - - - An unmodifiable list of this message type's nested types. - - - - - An unmodifiable list of this message type's enum types. - - - - - An unmodifiable list of the "oneof" field collections in this message type. - All "real" oneofs (where returns false) - come before synthetic ones. - - - - - The number of real "oneof" descriptors in this message type. Every element in - with an index less than this will have a property value - of false; every element with an index greater than or equal to this will have a - property value of true. - - - - - Finds a field by field name. - - The unqualified name of the field (e.g. "foo"). - The field's descriptor, or null if not found. - - - - Finds a field by field number. - - The field number within this message type. - The field's descriptor, or null if not found. - - - - Finds a nested descriptor by name. The is valid for fields, nested - message types, oneofs and enums. - - The unqualified name of the descriptor, e.g. "Foo" - The descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this message. - - - - - The MessageOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value message option for this descriptor - - - - - Gets a repeated value message option for this descriptor - - - - - Looks up and cross-links all fields and nested types. - - - - - A collection to simplify retrieving the field accessor for a particular field. - - - - - Returns the fields in the message as an immutable list, in the order in which they - are declared in the source .proto file. - - - - - Returns the fields in the message as an immutable list, in ascending field number - order. Field numbers need not be contiguous, so there is no direct mapping from the - index in the list to the field number; to retrieve a field by field number, it is better - to use the indexer. - - - - - Returns a read-only dictionary mapping the field names in this message as they're available - in the JSON representation to the field descriptors. For example, a field foo_bar - in the message would result two entries, one with a key fooBar and one with a key - foo_bar, both referring to the same field. - - - - - Retrieves the descriptor for the field with the given number. - - Number of the field to retrieve the descriptor for - The accessor for the given field - The message descriptor does not contain a field - with the given number - - - - Retrieves the descriptor for the field with the given name. - - Name of the field to retrieve the descriptor for - The descriptor for the given field - The message descriptor does not contain a field - with the given name - - - - Describes a single method in a service. - - - - - The service this method belongs to. - - - - - The method's input type. - - - - - The method's input type. - - - - - Indicates if client streams multiple requests. - - - - - Indicates if server streams multiple responses. - - - - - The (possibly empty) set of custom options for this method. - - - - - The MethodOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value method option for this descriptor - - - - - Gets a repeated value method option for this descriptor - - - - - The brief name of the descriptor's target. - - - - - Reflection access for a oneof, allowing clear and "get case" actions. - - - - - Gets the descriptor for this oneof. - - - The descriptor of the oneof. - - - - - Clears the oneof in the specified message. - - - - - Indicates which field in the oneof is set for specified message - - - - - Describes a "oneof" field collection in a message type: a set of - fields of which at most one can be set in any particular message. - - - - - The brief name of the descriptor's target. - - - - - Gets the message type containing this oneof. - - - The message type containing this oneof. - - - - - Gets the fields within this oneof, in declaration order. - - - The fields within this oneof, in declaration order. - - - - - Returns true if this oneof is a synthetic oneof containing a proto3 optional field; - false otherwise. - - - - - Gets an accessor for reflective access to the values associated with the oneof - in a particular message. - - - - In descriptors for generated code, the value returned by this property will always be non-null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - The accessor used for reflective access. - - - - - The (possibly empty) set of custom options for this oneof. - - - - - The OneofOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value oneof option for this descriptor - - - - - Gets a repeated value oneof option for this descriptor - - - - - Specifies the original name (in the .proto file) of a named element, - such as an enum value. - - - - - The name of the element in the .proto file. - - - - - If the name is preferred in the .proto file. - - - - - Constructs a new attribute instance for the given name. - - The name of the element in the .proto file. - - - - Represents a package in the symbol table. We use PackageDescriptors - just as placeholders so that someone cannot define, say, a message type - that has the same name as an existing package. - - - - - The methods in this class are somewhat evil, and should not be tampered with lightly. - Basically they allow the creation of relatively weakly typed delegates from MethodInfos - which are more strongly typed. They do this by creating an appropriate strongly typed - delegate from the MethodInfo, and then calling that within an anonymous method. - Mind-bending stuff (at least to your humble narrator) but the resulting delegates are - very fast compared with calling Invoke later on. - - - - - Empty Type[] used when calling GetProperty to force property instead of indexer fetching. - - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to object. - - The method to create a delegate for, which must be declared in an IMessage - implementation. - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to the specified type. The method is expected - to actually return an enum (because of where we're calling it - for oneof cases). Sometimes that - means we need some extra work to perform conversions. - - The method to create a delegate for, which must be declared in an IMessage - implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of the method. - - The method to create a delegate for, which must be declared in an IMessage - implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - type that declares the method. - - The method to create a delegate for, which must be declared in an IMessage - implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of the method. - - - - - Creates a reflection helper for the given type arguments. Currently these are created on demand - rather than cached; this will be "busy" when initially loading a message's descriptor, but after that - they can be garbage collected. We could cache them by type if that proves to be important, but creating - an object is pretty cheap. - - - - - Accessor for repeated fields. - - - - - Describes a service type. - - - - - The brief name of the descriptor's target. - - - - - An unmodifiable list of methods in this service. - - - - - Finds a method by name. - - The unqualified name of the method (e.g. "Foo"). - The method's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this service. - - - - - The ServiceOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value service option for this descriptor - - - - - Gets a repeated value service option for this descriptor - - - - - Accessor for single fields. - - - - - An immutable registry of types which can be looked up by their full name. - - - - - An empty type registry, containing no types. - - - - - Attempts to find a message descriptor by its full name. - - The full name of the message, which is the dot-separated - combination of package, containing messages and message name - The message descriptor corresponding to or null - if there is no such message descriptor. - - - - Creates a type registry from the specified set of file descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the specified set of file descriptors. - - - All message types within all the specified files are added to the registry, and - the dependencies of the specified files are also added, recursively. - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - The specified message descriptors are only used to identify their file descriptors; the returned registry - contains all the types within the file descriptors which contain the specified message descriptors (and - the dependencies of those files), not just the specified messages. - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls. - - - - - Abstraction for reading from a stream / read only sequence. - Parsing from the buffer is a loop of reading from current buffer / refreshing the buffer once done. - - - - - Initialize an instance with a coded input stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a read only sequence. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Represents a single field in an UnknownFieldSet. - - An UnknownField consists of four lists of values. The lists correspond - to the four "wire types" used in the protocol buffer binary format. - Normally, only one of the four lists will contain any values, since it - is impossible to define a valid message type that declares two different - types for the same field number. However, the code is designed to allow - for the case where the same unknown field number is encountered using - multiple different wire types. - - - - - - Creates a new UnknownField. - - - - - Checks if two unknown field are equal. - - - - - Get the hash code of the unknown field. - - - - - Serializes the field, including the field number, and writes it to - - - The unknown field number. - The write context to write to. - - - - Computes the number of bytes required to encode this field, including field - number. - - - - - Merge the values in into this field. For each list - of values, 's values are append to the ones in this - field. - - - - - Returns a new list containing all of the given specified values from - both the and lists. - If is null and is null or empty, - null is returned. Otherwise, either a new list is created (if - is null) or the elements of are added to . - - - - - Adds a varint value. - - - - - Adds a fixed32 value. - - - - - Adds a fixed64 value. - - - - - Adds a length-delimited value. - - - - - Adds to the , creating - a new list if is null. The list is returned - either - the original reference or the new list. - - - - - Used to keep track of fields which were seen when parsing a protocol message - but whose field numbers or types are unrecognized. This most frequently - occurs when new fields are added to a message type and then messages containing - those fields are read by old software that was built before the new types were - added. - - Most users will never need to use this class directly. - - - - - Creates a new UnknownFieldSet. - - - - - Checks whether or not the given field number is present in the set. - - - - - Serializes the set and writes it to . - - - - - Serializes the set and writes it to . - - - - - Gets the number of bytes required to encode this set. - - - - - Checks if two unknown field sets are equal. - - - - - Gets the unknown field set's hash code. - - - - - Adds a field to the set. If a field with the same number already exists, it - is replaced. - - - - - Parse a single field from and merge it - into this set. - - The parse context from which to read the field - false if the tag is an "end group" tag, true otherwise - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The coded input stream containing the field - The merged UnknownFieldSet - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The parse context from which to read the field - The merged UnknownFieldSet - - - - Merges the fields from into this set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Created a new UnknownFieldSet to if - needed and merges the fields from into the first set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Adds a field to the unknown field set. If a field with the same - number already exists, the two are merged. - - - - - Clone an unknown field set from . - - - - Holder for reflection information generated from google/protobuf/any.proto - - - File descriptor for google/protobuf/any.proto - - - - `Any` contains an arbitrary serialized protocol buffer message along with a - URL that describes the type of the serialized message. - - Protobuf library provides support to pack/unpack Any values in the form - of utility functions or additional generated methods of the Any type. - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". - - JSON - ==== - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": <string>, - "lastName": <string> - } - - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - - - - Field number for the "type_url" field. - - - - A URL/resource name that uniquely identifies the type of the serialized - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical form - (e.g., leading "." is not accepted). - - In practice, teams usually precompile into the binary all types that they - expect it to use in the context of Any. However, for URLs which use the - scheme `http`, `https`, or no scheme, one can optionally set up a type - server that maps type URLs to message definitions as follows: - - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. - - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - - - - Field number for the "value" field. - - - - Must be a valid serialized protocol buffer of the above specified type. - - - - - Retrieves the type name for a type URL, matching the - of the packed message type. - - - - This is always just the last part of the URL, after the final slash. No validation of - anything before the trailing slash is performed. If the type URL does not include a slash, - an empty string is returned rather than an exception being thrown; this won't match any types, - and the calling code is probably in a better position to give a meaningful error. - - - There is no handling of fragments or queries at the moment. - - - The URL to extract the type name from - The type name - - - - Returns a bool indictating whether this Any message is of the target message type - - The descriptor of the message type - true if the type name matches the descriptor's full name or false otherwise - - - - Unpacks the content of this Any message into the target message type, - which must match the type URL within this Any message. - - The type of message to unpack the content into. - The unpacked message. - The target message type doesn't match the type URL in this message - - - - Attempts to unpack the content of this Any message into the target message type, - if it matches the type URL within this Any message. - - The type of message to attempt to unpack the content into. - true if the message was successfully unpacked; false if the type name didn't match - - - - Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com". - - The message to pack. - An Any message with the content and type URL of . - - - - Packs the specified message into an Any message using the specified type URL prefix. - - The message to pack. - The prefix for the type URL. - An Any message with the content and type URL of . - - - Holder for reflection information generated from google/protobuf/api.proto - - - File descriptor for google/protobuf/api.proto - - - - Api is a light-weight descriptor for an API Interface. - - Interfaces are also described as "protocol buffer services" in some contexts, - such as by the "service" keyword in a .proto file, but they are different - from API Services, which represent a concrete implementation of an interface - as opposed to simply a description of methods and bindings. They are also - sometimes simply referred to as "APIs" in other contexts, such as the name of - this message itself. See https://cloud.google.com/apis/design/glossary for - detailed terminology. - - - - Field number for the "name" field. - - - - The fully qualified name of this interface, including package name - followed by the interface's simple name. - - - - Field number for the "methods" field. - - - - The methods of this interface, in unspecified order. - - - - Field number for the "options" field. - - - - Any metadata attached to the interface. - - - - Field number for the "version" field. - - - - A version string for this interface. If specified, must have the form - `major-version.minor-version`, as in `1.10`. If the minor version is - omitted, it defaults to zero. If the entire version field is empty, the - major version is derived from the package name, as outlined below. If the - field is not empty, the version in the package name will be verified to be - consistent with what is provided here. - - The versioning schema uses [semantic - versioning](http://semver.org) where the major version number - indicates a breaking change and the minor version an additive, - non-breaking change. Both version numbers are signals to users - what to expect from different versions, and should be carefully - chosen based on the product plan. - - The major version is also reflected in the package name of the - interface, which must end in `v<major-version>`, as in - `google.feature.v1`. For major versions 0 and 1, the suffix can - be omitted. Zero major versions must only be used for - experimental, non-GA interfaces. - - - - Field number for the "source_context" field. - - - - Source context for the protocol buffer service represented by this - message. - - - - Field number for the "mixins" field. - - - - Included interfaces. See [Mixin][]. - - - - Field number for the "syntax" field. - - - - The source syntax of the service. - - - - - Method represents a method of an API interface. - - - - Field number for the "name" field. - - - - The simple name of this method. - - - - Field number for the "request_type_url" field. - - - - A URL of the input message type. - - - - Field number for the "request_streaming" field. - - - - If true, the request is streamed. - - - - Field number for the "response_type_url" field. - - - - The URL of the output message type. - - - - Field number for the "response_streaming" field. - - - - If true, the response is streamed. - - - - Field number for the "options" field. - - - - Any metadata attached to the method. - - - - Field number for the "syntax" field. - - - - The source syntax of this method. - - - - - Declares an API Interface to be included in this interface. The including - interface must redeclare all the methods from the included interface, but - documentation and options are inherited as follows: - - - If after comment and whitespace stripping, the documentation - string of the redeclared method is empty, it will be inherited - from the original method. - - - Each annotation belonging to the service config (http, - visibility) which is not set in the redeclared method will be - inherited. - - - If an http annotation is inherited, the path pattern will be - modified as follows. Any version prefix will be replaced by the - version of the including interface plus the [root][] path if - specified. - - Example of a simple mixin: - - package google.acl.v1; - service AccessControl { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v1/{resource=**}:getAcl"; - } - } - - package google.storage.v2; - service Storage { - rpc GetAcl(GetAclRequest) returns (Acl); - - // Get a data record. - rpc GetData(GetDataRequest) returns (Data) { - option (google.api.http).get = "/v2/{resource=**}"; - } - } - - Example of a mixin configuration: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - - The mixin construct implies that all methods in `AccessControl` are - also declared with same name and request/response types in - `Storage`. A documentation generator or annotation processor will - see the effective `Storage.GetAcl` method after inheriting - documentation and annotations as follows: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/{resource=**}:getAcl"; - } - ... - } - - Note how the version in the path pattern changed from `v1` to `v2`. - - If the `root` field in the mixin is specified, it should be a - relative path under which inherited HTTP paths are placed. Example: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - root: acls - - This implies the following inherited HTTP annotation: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; - } - ... - } - - - - Field number for the "name" field. - - - - The fully qualified name of the interface which is included. - - - - Field number for the "root" field. - - - - If non-empty specifies a path under which inherited HTTP paths - are rooted. - - - - Holder for reflection information generated from google/protobuf/duration.proto - - - File descriptor for google/protobuf/duration.proto - - - - A Duration represents a signed, fixed-length span of time represented - as a count of seconds and fractions of seconds at nanosecond - resolution. It is independent of any calendar and concepts like "day" - or "month". It is related to Timestamp in that the difference between - two Timestamp values is a Duration and it can be added or subtracted - from a Timestamp. Range is approximately +-10,000 years. - - # Examples - - Example 1: Compute Duration from two Timestamps in pseudo code. - - Timestamp start = ...; - Timestamp end = ...; - Duration duration = ...; - - duration.seconds = end.seconds - start.seconds; - duration.nanos = end.nanos - start.nanos; - - if (duration.seconds < 0 && duration.nanos > 0) { - duration.seconds += 1; - duration.nanos -= 1000000000; - } else if (duration.seconds > 0 && duration.nanos < 0) { - duration.seconds -= 1; - duration.nanos += 1000000000; - } - - Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - - Timestamp start = ...; - Duration duration = ...; - Timestamp end = ...; - - end.seconds = start.seconds + duration.seconds; - end.nanos = start.nanos + duration.nanos; - - if (end.nanos < 0) { - end.seconds -= 1; - end.nanos += 1000000000; - } else if (end.nanos >= 1000000000) { - end.seconds += 1; - end.nanos -= 1000000000; - } - - Example 3: Compute Duration from datetime.timedelta in Python. - - td = datetime.timedelta(days=3, minutes=10) - duration = Duration() - duration.FromTimedelta(td) - - # JSON Mapping - - In JSON format, the Duration type is encoded as a string rather than an - object, where the string ends in the suffix "s" (indicating seconds) and - is preceded by the number of seconds, with nanoseconds expressed as - fractional seconds. For example, 3 seconds with 0 nanoseconds should be - encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - microsecond should be expressed in JSON format as "3.000001s". - - - - Field number for the "seconds" field. - - - - Signed seconds of the span of time. Must be from -315,576,000,000 - to +315,576,000,000 inclusive. Note: these bounds are computed from: - 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - - - - Field number for the "nanos" field. - - - - Signed fractions of a second at nanosecond resolution of the span - of time. Durations less than one second are represented with a 0 - `seconds` field and a positive or negative `nanos` field. For durations - of one second or more, a non-zero value for the `nanos` field must be - of the same sign as the `seconds` field. Must be from -999,999,999 - to +999,999,999 inclusive. - - - - - The number of nanoseconds in a second. - - - - - The number of nanoseconds in a BCL tick (as used by and ). - - - - - The maximum permitted number of seconds. - - - - - The minimum permitted number of seconds. - - - - - Converts this to a . - - If the duration is not a precise number of ticks, it is truncated towards 0. - The value of this duration, as a TimeSpan. - This value isn't a valid normalized duration, as - described in the documentation. - - - - Converts the given to a . - - The TimeSpan to convert. - The value of the given TimeSpan, as a Duration. - - - - Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes. - - The duration to negate. Must not be null. - The negated value of this duration. - - - - Adds the two specified values together. - - The first value to add. Must not be null. - The second value to add. Must not be null. - - - - - Subtracts one from another. - - The duration to subtract from. Must not be null. - The duration to subtract. Must not be null. - The difference between the two specified durations. - - - - Creates a duration with the normalized values from the given number of seconds and - nanoseconds, conforming with the description in the proto file. - - - - - Converts a duration specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in duration.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which - case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well - as Duration. - - - - Holder for reflection information generated from google/protobuf/empty.proto - - - File descriptor for google/protobuf/empty.proto - - - - A generic empty message that you can re-use to avoid defining duplicated - empty messages in your APIs. A typical example is to use it as the request - or the response type of an API method. For instance: - - service Foo { - rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - } - - The JSON representation for `Empty` is empty JSON object `{}`. - - - - Holder for reflection information generated from google/protobuf/field_mask.proto - - - File descriptor for google/protobuf/field_mask.proto - - - - `FieldMask` represents a set of symbolic field paths, for example: - - paths: "f.a" - paths: "f.b.d" - - Here `f` represents a field in some root message, `a` and `b` - fields in the message found in `f`, and `d` a field found in the - message in `f.b`. - - Field masks are used to specify a subset of fields that should be - returned by a get operation or modified by an update operation. - Field masks also have a custom JSON encoding (see below). - - # Field Masks in Projections - - When used in the context of a projection, a response message or - sub-message is filtered by the API to only contain those fields as - specified in the mask. For example, if the mask in the previous - example is applied to a response message as follows: - - f { - a : 22 - b { - d : 1 - x : 2 - } - y : 13 - } - z: 8 - - The result will not contain specific values for fields x,y and z - (their value will be set to the default, and omitted in proto text - output): - - f { - a : 22 - b { - d : 1 - } - } - - A repeated field is not allowed except at the last position of a - paths string. - - If a FieldMask object is not present in a get operation, the - operation applies to all fields (as if a FieldMask of all fields - had been specified). - - Note that a field mask does not necessarily apply to the - top-level response message. In case of a REST get operation, the - field mask applies directly to the response, but in case of a REST - list operation, the mask instead applies to each individual message - in the returned resource list. In case of a REST custom method, - other definitions may be used. Where the mask applies will be - clearly documented together with its declaration in the API. In - any case, the effect on the returned resource/resources is required - behavior for APIs. - - # Field Masks in Update Operations - - A field mask in update operations specifies which fields of the - targeted resource are going to be updated. The API is required - to only change the values of the fields as specified in the mask - and leave the others untouched. If a resource is passed in to - describe the updated values, the API ignores the values of all - fields not covered by the mask. - - If a repeated field is specified for an update operation, new values will - be appended to the existing repeated field in the target resource. Note that - a repeated field is only allowed in the last position of a `paths` string. - - If a sub-message is specified in the last position of the field mask for an - update operation, then new value will be merged into the existing sub-message - in the target resource. - - For example, given the target message: - - f { - b { - d: 1 - x: 2 - } - c: [1] - } - - And an update message: - - f { - b { - d: 10 - } - c: [2] - } - - then if the field mask is: - - paths: ["f.b", "f.c"] - - then the result will be: - - f { - b { - d: 10 - x: 2 - } - c: [1, 2] - } - - An implementation may provide options to override this default behavior for - repeated and message fields. - - In order to reset a field's value to the default, the field must - be in the mask and set to the default value in the provided resource. - Hence, in order to reset all fields of a resource, provide a default - instance of the resource and set all fields in the mask, or do - not provide a mask as described below. - - If a field mask is not present on update, the operation applies to - all fields (as if a field mask of all fields has been specified). - Note that in the presence of schema evolution, this may mean that - fields the client does not know and has therefore not filled into - the request will be reset to their default. If this is unwanted - behavior, a specific service may require a client to always specify - a field mask, producing an error if not. - - As with get operations, the location of the resource which - describes the updated values in the request message depends on the - operation kind. In any case, the effect of the field mask is - required to be honored by the API. - - ## Considerations for HTTP REST - - The HTTP kind of an update operation which uses a field mask must - be set to PATCH instead of PUT in order to satisfy HTTP semantics - (PUT must only be used for full updates). - - # JSON Encoding of Field Masks - - In JSON, a field mask is encoded as a single string where paths are - separated by a comma. Fields name in each path are converted - to/from lower-camel naming conventions. - - As an example, consider the following message declarations: - - message Profile { - User user = 1; - Photo photo = 2; - } - message User { - string display_name = 1; - string address = 2; - } - - In proto a field mask for `Profile` may look as such: - - mask { - paths: "user.display_name" - paths: "photo" - } - - In JSON, the same mask is represented as below: - - { - mask: "user.displayName,photo" - } - - # Field Masks and Oneof Fields - - Field masks treat fields in oneofs just as regular fields. Consider the - following message: - - message SampleMessage { - oneof test_oneof { - string name = 4; - SubMessage sub_message = 9; - } - } - - The field mask can be: - - mask { - paths: "name" - } - - Or: - - mask { - paths: "sub_message" - } - - Note that oneof type names ("test_oneof" in this case) cannot be used in - paths. - - ## Field Mask Verification - - The implementation of any API method which has a FieldMask type field in the - request should verify the included field paths, and return an - `INVALID_ARGUMENT` error if any path is unmappable. - - - - Field number for the "paths" field. - - - - The set of field mask paths. - - - - - Converts a field mask specified by paths to a string. - - - If the value is a normalized duration in the range described in field_mask.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Paths in the field mask - Determines the handling of non-normalized values - The represented field mask is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Parses from a string to a FieldMask. - - - - - Parses from a string to a FieldMask and validates all field paths. - - The type to validate the field paths against. - - - - Constructs a FieldMask for a list of field paths in a certain type. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Checks whether the given path is valid for a field mask. - - true if the path is valid; false otherwise - - - - Checks whether paths in a given fields mask are valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Checks whether a given field path is valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Converts this FieldMask to its canonical form. In the canonical form of a - FieldMask, all field paths are sorted alphabetically and redundant field - paths are removed. - - - - - Creates a union of two or more FieldMasks. - - - - - Calculates the intersection of two FieldMasks. - - - - - Merges fields specified by this FieldMask from one message to another with the - specified merge options. - - - - - Merges fields specified by this FieldMask from one message to another. - - - - - Options to customize merging behavior. - - - - - Whether to replace message fields(i.e., discard existing content in - destination message fields) when merging. - Default behavior is to merge the source message field into the - destination message field. - - - - - Whether to replace repeated fields (i.e., discard existing content in - destination repeated fields) when merging. - Default behavior is to append elements from source repeated field to the - destination repeated field. - - - - - Whether to replace primitive (non-repeated and non-message) fields in - destination message fields with the source primitive fields (i.e., if the - field is set in the source, the value is copied to the - destination; if the field is unset in the source, the field is cleared - from the destination) when merging. - - Default behavior is to always set the value of the source primitive - field to the destination primitive field, and if the source field is - unset, the default value of the source field is copied to the - destination. - - - - Holder for reflection information generated from google/protobuf/source_context.proto - - - File descriptor for google/protobuf/source_context.proto - - - - `SourceContext` represents information about the source of a - protobuf element, like the file in which it is defined. - - - - Field number for the "file_name" field. - - - - The path-qualified name of the .proto file that contained the associated - protobuf element. For example: `"google/protobuf/source_context.proto"`. - - - - Holder for reflection information generated from google/protobuf/struct.proto - - - File descriptor for google/protobuf/struct.proto - - - - `NullValue` is a singleton enumeration to represent the null value for the - `Value` type union. - - The JSON representation for `NullValue` is JSON `null`. - - - - - Null value. - - - - - `Struct` represents a structured data value, consisting of fields - which map to dynamically typed values. In some languages, `Struct` - might be supported by a native representation. For example, in - scripting languages like JS a struct is represented as an - object. The details of that representation are described together - with the proto support for the language. - - The JSON representation for `Struct` is JSON object. - - - - Field number for the "fields" field. - - - - Unordered map of dynamically typed values. - - - - - `Value` represents a dynamically typed value which can be either - null, a number, a string, a boolean, a recursive struct value, or a - list of values. A producer of value is expected to set one of that - variants, absence of any variant indicates an error. - - The JSON representation for `Value` is JSON value. - - - - Field number for the "null_value" field. - - - - Represents a null value. - - - - Field number for the "number_value" field. - - - - Represents a double value. - - - - Field number for the "string_value" field. - - - - Represents a string value. - - - - Field number for the "bool_value" field. - - - - Represents a boolean value. - - - - Field number for the "struct_value" field. - - - - Represents a structured value. - - - - Field number for the "list_value" field. - - - - Represents a repeated `Value`. - - - - Enum of possible cases for the "kind" oneof. - - - - Convenience method to create a Value message with a string value. - - Value to set for the StringValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a number value. - - Value to set for the NumberValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a Boolean value. - - Value to set for the BoolValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a null initial value. - - A newly-created Value message a null initial value. - - - - Convenience method to create a Value message with an initial list of values. - - The values provided are not cloned; the references are copied directly. - A newly-created Value message an initial list value. - - - - Convenience method to create a Value message with an initial struct value - - The value provided is not cloned; the reference is copied directly. - A newly-created Value message an initial struct value. - - - - `ListValue` is a wrapper around a repeated field of values. - - The JSON representation for `ListValue` is JSON array. - - - - Field number for the "values" field. - - - - Repeated field of dynamically typed values. - - - - - Extension methods on BCL time-related types, converting to protobuf types. - - - - - Converts the given to a . - - The date and time to convert to a timestamp. - The value has a other than Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts the given to a . - - The time span to convert. - The converted duration. - - - Holder for reflection information generated from google/protobuf/timestamp.proto - - - File descriptor for google/protobuf/timestamp.proto - - - - A Timestamp represents a point in time independent of any time zone or local - calendar, encoded as a count of seconds and fractions of seconds at - nanosecond resolution. The count is relative to an epoch at UTC midnight on - January 1, 1970, in the proleptic Gregorian calendar which extends the - Gregorian calendar backwards to year one. - - All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - second table is needed for interpretation, using a [24-hour linear - smear](https://developers.google.com/time/smear). - - The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - restricting to that range, we ensure that we can convert to and from [RFC - 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - - # Examples - - Example 1: Compute Timestamp from POSIX `time()`. - - Timestamp timestamp; - timestamp.set_seconds(time(NULL)); - timestamp.set_nanos(0); - - Example 2: Compute Timestamp from POSIX `gettimeofday()`. - - struct timeval tv; - gettimeofday(&tv, NULL); - - Timestamp timestamp; - timestamp.set_seconds(tv.tv_sec); - timestamp.set_nanos(tv.tv_usec * 1000); - - Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - - FILETIME ft; - GetSystemTimeAsFileTime(&ft); - UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - - // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - Timestamp timestamp; - timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - - Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - - long millis = System.currentTimeMillis(); - - Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - .setNanos((int) ((millis % 1000) * 1000000)).build(); - - Example 5: Compute Timestamp from Java `Instant.now()`. - - Instant now = Instant.now(); - - Timestamp timestamp = - Timestamp.newBuilder().setSeconds(now.getEpochSecond()) - .setNanos(now.getNano()).build(); - - Example 6: Compute Timestamp from current time in Python. - - timestamp = Timestamp() - timestamp.GetCurrentTime() - - # JSON Mapping - - In JSON format, the Timestamp type is encoded as a string in the - [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - where {year} is always expressed using four digits while {month}, {day}, - {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - is required. A proto3 JSON serializer should always use UTC (as indicated by - "Z") when printing the Timestamp type and a proto3 JSON parser should be - able to accept both UTC and other timezones (as indicated by an offset). - - For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - 01:30 UTC on January 15, 2017. - - In JavaScript, one can convert a Date object to this format using the - standard - [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - method. In Python, a standard `datetime.datetime` object can be converted - to this format using - [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - the Joda Time's [`ISODateTimeFormat.dateTime()`]( - http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D - ) to obtain a formatter capable of generating timestamps in this format. - - - - Field number for the "seconds" field. - - - - Represents seconds of UTC time since Unix epoch - 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - 9999-12-31T23:59:59Z inclusive. - - - - Field number for the "nanos" field. - - - - Non-negative fractions of a second at nanosecond resolution. Negative - second values with fractions must still have non-negative nanos values - that count forward in time. Must be from 0 to 999,999,999 - inclusive. - - - - - Returns the difference between one and another, as a . - - The timestamp to subtract from. Must not be null. - The timestamp to subtract. Must not be null. - The difference between the two specified timestamps. - - - - Adds a to a , to obtain another Timestamp. - - The timestamp to add the duration to. Must not be null. - The duration to add. Must not be null. - The result of adding the duration to the timestamp. - - - - Subtracts a from a , to obtain another Timestamp. - - The timestamp to subtract the duration from. Must not be null. - The duration to subtract. - The result of subtracting the duration from the timestamp. - - - - Converts this timestamp into a . - - - The resulting DateTime will always have a Kind of Utc. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTime. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts this timestamp into a . - - - The resulting DateTimeOffset will always have an Offset of zero. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTimeOffset. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts the specified to a . - - - The Kind of is not DateTimeKind.Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts a timestamp specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in timestamp.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - Timestamp to compare - an integer indicating whether this timestamp precedes or follows the other - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Returns whether two timestamps are equivalent - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps refer to the same nanosecond - - - - Returns whether two timestamps differ - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps differ - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - Holder for reflection information generated from google/protobuf/type.proto - - - File descriptor for google/protobuf/type.proto - - - - The syntax in which a protocol buffer element is defined. - - - - - Syntax `proto2`. - - - - - Syntax `proto3`. - - - - - A protocol buffer message type. - - - - Field number for the "name" field. - - - - The fully qualified message name. - - - - Field number for the "fields" field. - - - - The list of fields. - - - - Field number for the "oneofs" field. - - - - The list of types appearing in `oneof` definitions in this type. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - - A single field of a message type. - - - - Field number for the "kind" field. - - - - The field type. - - - - Field number for the "cardinality" field. - - - - The field cardinality. - - - - Field number for the "number" field. - - - - The field number. - - - - Field number for the "name" field. - - - - The field name. - - - - Field number for the "type_url" field. - - - - The field type URL, without the scheme, for message or enumeration - types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - - - - Field number for the "oneof_index" field. - - - - The index of the field type in `Type.oneofs`, for message or enumeration - types. The first type has index 1; zero means the type is not in the list. - - - - Field number for the "packed" field. - - - - Whether to use alternative packed wire representation. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "json_name" field. - - - - The field JSON name. - - - - Field number for the "default_value" field. - - - - The string value of the default value of this field. Proto2 syntax only. - - - - Container for nested types declared in the Field message type. - - - - Basic field types. - - - - - Field type unknown. - - - - - Field type double. - - - - - Field type float. - - - - - Field type int64. - - - - - Field type uint64. - - - - - Field type int32. - - - - - Field type fixed64. - - - - - Field type fixed32. - - - - - Field type bool. - - - - - Field type string. - - - - - Field type group. Proto2 syntax only, and deprecated. - - - - - Field type message. - - - - - Field type bytes. - - - - - Field type uint32. - - - - - Field type enum. - - - - - Field type sfixed32. - - - - - Field type sfixed64. - - - - - Field type sint32. - - - - - Field type sint64. - - - - - Whether a field is optional, required, or repeated. - - - - - For fields with unknown cardinality. - - - - - For optional fields. - - - - - For required fields. Proto2 syntax only. - - - - - For repeated fields. - - - - - Enum type definition. - - - - Field number for the "name" field. - - - - Enum type name. - - - - Field number for the "enumvalue" field. - - - - Enum value definitions. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - - Enum value definition. - - - - Field number for the "name" field. - - - - Enum value name. - - - - Field number for the "number" field. - - - - Enum value number. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - - A protocol buffer option, which can be attached to a message, field, - enumeration, etc. - - - - Field number for the "name" field. - - - - The option's name. For protobuf built-in options (options defined in - descriptor.proto), this is the short name. For example, `"map_entry"`. - For custom options, it should be the fully-qualified name. For example, - `"google.api.http"`. - - - - Field number for the "value" field. - - - - The option's value packed in an Any message. If the value is a primitive, - the corresponding wrapper type defined in google/protobuf/wrappers.proto - should be used. If the value is an enum, it should be stored as an int32 - value using the google.protobuf.Int32Value type. - - - - Holder for reflection information generated from google/protobuf/wrappers.proto - - - File descriptor for google/protobuf/wrappers.proto - - - - Field number for the single "value" field in all wrapper types. - - - - - Wrapper message for `double`. - - The JSON representation for `DoubleValue` is JSON number. - - - - Field number for the "value" field. - - - - The double value. - - - - - Wrapper message for `float`. - - The JSON representation for `FloatValue` is JSON number. - - - - Field number for the "value" field. - - - - The float value. - - - - - Wrapper message for `int64`. - - The JSON representation for `Int64Value` is JSON string. - - - - Field number for the "value" field. - - - - The int64 value. - - - - - Wrapper message for `uint64`. - - The JSON representation for `UInt64Value` is JSON string. - - - - Field number for the "value" field. - - - - The uint64 value. - - - - - Wrapper message for `int32`. - - The JSON representation for `Int32Value` is JSON number. - - - - Field number for the "value" field. - - - - The int32 value. - - - - - Wrapper message for `uint32`. - - The JSON representation for `UInt32Value` is JSON number. - - - - Field number for the "value" field. - - - - The uint32 value. - - - - - Wrapper message for `bool`. - - The JSON representation for `BoolValue` is JSON `true` and `false`. - - - - Field number for the "value" field. - - - - The bool value. - - - - - Wrapper message for `string`. - - The JSON representation for `StringValue` is JSON string. - - - - Field number for the "value" field. - - - - The string value. - - - - - Wrapper message for `bytes`. - - The JSON representation for `BytesValue` is JSON string. - - - - Field number for the "value" field. - - - - The bytes value. - - - - - This class is used internally by the Protocol Buffer Library and generated - message implementations. It is public only for the sake of those generated - messages. Others should not use this class directly. - - This class contains constants and helper functions useful for dealing with - the Protocol Buffer wire format. - - - - - - Wire types within protobuf encoding. - - - - - Variable-length integer. - - - - - A fixed-length 64-bit value. - - - - - A length-delimited value, i.e. a length followed by that many bytes of data. - - - - - A "start group" value - - - - - An "end group" value - - - - - A fixed-length 32-bit value. - - - - - Given a tag value, determines the wire type (lower 3 bits). - - - - - Given a tag value, determines the field number (the upper 29 bits). - - - - - Makes a tag value given a field number and wire type. - - - - - Abstraction for writing to a steam / IBufferWriter - - - - - Initialize an instance with a coded output stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer writer. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer represented by a single span (i.e. buffer cannot be refreshed) - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Verifies that SpaceLeft returns zero. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - An opaque struct that represents the current serialization state and is passed along - as the serialization proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Creates a WriteContext instance from CodedOutputStream. - WARNING: internally this copies the CodedOutputStream's state, so after done with the WriteContext, - the CodedOutputStream's state needs to be updated. - - - - - Writes a double field value, without a tag. - - The value to write - - - - Writes a float field value, without a tag. - - The value to write - - - - Writes a uint64 field value, without a tag. - - The value to write - - - - Writes an int64 field value, without a tag. - - The value to write - - - - Writes an int32 field value, without a tag. - - The value to write - - - - Writes a fixed64 field value, without a tag. - - The value to write - - - - Writes a fixed32 field value, without a tag. - - The value to write - - - - Writes a bool field value, without a tag. - - The value to write - - - - Writes a string field value, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag. - - The value to write - - - - Writes an enum value, without a tag. - - The value to write - - - - Writes an sfixed32 value, without a tag. - - The value to write. - - - - Writes an sfixed64 value, without a tag. - - The value to write - - - - Writes an sint32 value, without a tag. - - The value to write - - - - Writes an sint64 value, without a tag. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag. - - The encoded tag - - - - Writes the given two-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Primitives for encoding protobuf wire format. - - - - - Writes a double field value, without a tag, to the stream. - - - - - Writes a float field value, without a tag, to the stream. - - - - - Writes a uint64 field value, without a tag, to the stream. - - - - - Writes an int64 field value, without a tag, to the stream. - - - - - Writes an int32 field value, without a tag, to the stream. - - - - - Writes a fixed64 field value, without a tag, to the stream. - - - - - Writes a fixed32 field value, without a tag, to the stream. - - - - - Writes a bool field value, without a tag, to the stream. - - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - - - - Writes a uint32 value, without a tag, to the stream. - - - - - Writes an enum value, without a tag, to the stream. - - - - - Writes an sfixed32 value, without a tag, to the stream. - - - - - Writes an sfixed64 value, without a tag, to the stream. - - - - - Writes an sint32 value, without a tag, to the stream. - - - - - Writes an sint64 value, without a tag, to the stream. - - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Encodes and writes a tag. - - - - - Writes an already-encoded tag. - - - - - Writes the given single-byte tag directly to the stream. - - - - - Writes the given two-byte tag directly to the stream. - - - - - Writes the given three-byte tag directly to the stream. - - - - - Writes the given four-byte tag directly to the stream. - - - - - Writes the given five-byte tag directly to the stream. - - - - - Encode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Encode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Writing messages / groups. - - - - - Writes a message, without a tag. - The data is length-prefixed. - - - - - Writes a group, without a tag. - - - - - Writes a message, without a tag. - Message will be written without a length prefix. - - -
-
diff --git a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.Streams.dll b/AUTS_Studio/bin/Release/K4os.Compression.LZ4.Streams.dll deleted file mode 100644 index 4c68abb..0000000 Binary files a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.Streams.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.Streams.xml b/AUTS_Studio/bin/Release/K4os.Compression.LZ4.Streams.xml deleted file mode 100644 index 4e02583..0000000 --- a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.Streams.xml +++ /dev/null @@ -1,296 +0,0 @@ - - - - K4os.Compression.LZ4.Streams - - - - - LZ4 Frame descriptor. - - - - Content length. Not always known. - - - Indicates if content checksum is provided. - - - Indicates if blocks are chained (dependent) or not (independent). - - - Indicates if block checksums are provided. - - - Dictionary id. May be null. - - - Block size. - - - - Decoder settings. - - - - Extra memory for decompression. - - - - LZ4 Decompression stream handling. - - - - Creates new instance . - Inner stream. - A function which will create appropriate decoder depending - on frame descriptor. - If true inner stream will not be closed after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of stream. Please note, this will only work if original LZ4 stream has - ContentLength field set in descriptor. Otherwise returned value will be -1. - - - - - Position within the stream. Position can be read, but cannot be set as LZ4 stream does - not have Seek capability. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 encoder settings. - - - - - Content length. It is not enforced, it can be set to any value, but it will be - written to the stream so it can be used while decoding. If you don't know the length - just leave default value. - - - - - Indicates if blocks should be chained (dependent) or not (independent). Dependent blocks - (with chaining) provide better compression ratio but are a little but slower and take - more memory. - - - - - Block size. You can use any block size, but default values for LZ4 are 64k, 256k, 1m, - and 4m. 64k is good enough for dependent blocks, but for independent blocks bigger is - better. - - - - Indicates is content checksum is provided. Not implemented yet. - - - Indicates if block checksum is provided. Not implemented yet. - - - Dictionary id. Not implemented yet. - - - Compression level. - - - Extra memory (for the process, more is usually better). - - - - LZ4 compression stream. - - - - Creates new instance of . - Inner stream. - LZ4 Descriptor. - Function which will take descriptor and return - appropriate encoder. - Indicates if stream should be left - open after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of the stream and number of bytes written so far. - - - Read-only position in the stream. Trying to set it will throw - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 frame descriptor. - - - - Content length (if available). - - - Indicates if content checksum if present. - - - Indicates if blocks are chained. - - - Indicates if block checksums are present. - - - Dictionary id (or null). - - - Block size. - - - Creates new instance of . - Content length. - Content checksum flag. - Chaining flag. - Block checksum flag. - Dictionary id. - Block size. - - - - Utility class with factory methods to create LZ4 compression and decompression streams. - - - - Created compression stream on top of inner stream. - Inner stream. - Compression settings. - Leave inner stream open after disposing. - Compression stream. - - - Created compression stream on top of inner stream. - Inner stream. - Compression level. - Extra memory used for compression. - Leave inner stream open after disposing. - Compression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Decompression settings. - Leave inner stream open after disposing. - Decompression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Extra memory used for decompression. - Leave inner stream open after disposing. - Decompression stream. - - - diff --git a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.dll b/AUTS_Studio/bin/Release/K4os.Compression.LZ4.dll deleted file mode 100644 index ea7a325..0000000 Binary files a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.xml b/AUTS_Studio/bin/Release/K4os.Compression.LZ4.xml deleted file mode 100644 index 9af6341..0000000 --- a/AUTS_Studio/bin/Release/K4os.Compression.LZ4.xml +++ /dev/null @@ -1,794 +0,0 @@ - - - - K4os.Compression.LZ4 - - - - - Action performed by encoder using FlushAndEncode method. - - - - Nothing has happened, most likely loading 0 bytes. - - - Some bytes has been loaded into encoder. - - - Compression was not possible so bytes has been copied. - - - Compression succeeded. - - - - Interface of LZ4 decoder used by LZ4 streams. - - - - Block size. - - - Bytes already decoded and available to be read. - Always smaller than - - - - Decodes previously compressed block and caches decompressed block in decoder. - Returns number of bytes decoded. These bytes can be read with . - - Points to compressed block. - Length of compressed block. - Size of the block. Value 0 indicates default block size. - Number of decoded bytes. - - - - Inject already decompressed block and caches it in decoder. - Used with uncompressed-yet-chained blocks and pre-made dictionaries. - These bytes can be read with . - - Points to uncompressed block. - Length of uncompressed block. - Number of decoded bytes. - - - - Reads previously decoded bytes. Please note, should be - negative number, pointing to bytes before current head. - - Buffer to write to. - Offset in source buffer relatively to current head. - Please note, it should be negative value. - Number of bytes to read. - - - - Interface of LZ4 encoder used by LZ4 streams. - - - - Block size. - - - Number of bytes read for compression. - Always smaller than - - - Adds bytes to internal buffer. Increases - Source buffer. - Source buffer length. - Number of bytes topped up. If this function returns 0 it means that buffer - is full ( equals ) and - should be called to flush it. - - - - Encodes bytes in internal buffer (see: , ). - If is true then if encoded buffer is bigger than - source buffer source bytes are copied instead. In such case returned length is negative. - - Target buffer. - Target buffer length. - Indicates if copying is allowed. - Length of encoded buffer. Negative if bytes are just copied. - - - - LZ4 decoder used with independent blocks mode. Plase note, that it will fail - if input data has been compressed with chained blocks - ( and ) - - - - - - - - - - Creates new instance of block decoder. - Block size. Must be equal or greater to one used for compression. - - - - - - - - - - - - - - - - Independent block encoder. Produces larger files but uses less memory and - gives better performance. - - - - Creates new instance of - Compression level. - Block size. - - - - - - - - - LZ4 decoder handling dependent blocks. - - - Creates new instance of . - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - - - - - - - - Static class with factory methods to create LZ4 decoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Block size. - Number of extra blocks. - LZ4 decoder. - - - - Static class with factory method to create LZ4 encoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Compression level. - Block size. - Number of extra blocks. - LZ4 encoder. - - - - Base class for LZ4 encoders. Provides basic functionality shared by - , , - and encoders. Do not used directly. - - - - Creates new instance of encoder. - Needs to be true if using dependent blocks. - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - Encodes single block using appropriate algorithm. - Source buffer. - Source buffer length. - Target buffer. - Target buffer length. - Number of bytes actually written to target buffer. - - - Copies current dictionary. - Target buffer. - Dictionary length. - Dictionary length. - - - - - - - Functionality of encoders added on top of fixed interface. - - - - Tops encoder up with some data. - Encoder. - Buffer pointer, will be shifted after operation by the number of - bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset. - Length of buffer. - Number of bytes actually loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset, will be increased after operation by the number - of bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. - Length of target buffer. - if true copying bytes is allowed. - Number of bytes encoder. If bytes were copied than this value is negative. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. Will be updated after operation. - Length of target buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. Will be updated after operation. - Length of buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Source buffer length. - Target buffer (used to encode into) - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Offset within source buffer. - Source buffer length. - Target buffer (used to encode into) - Offset within target buffer. - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Offset within target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Drains decoder by reading all bytes which are ready. - Decoder. - Target buffer. - Offset within target buffer. - Offset in decoder relatively to decoder's head. - Please note, it should be negative value. - Number of bytes. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Source buffer length. - Target buffer (to drained into). - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Offset within source buffer. - Source buffer length. - Target buffer (to drained into). - Offset within target buffer. - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - - LZ4 encoder using dependent blocks with fast compression. - - - - Creates new instance of - Block size. - Number of extra blocks. - - - - - - - - - - - - - LZ4 encoder using dependent blocks with high compression. - - - - Creates new instance of - Compression level. - Block size. - Number of extra blocks. - - - - - - - - - - - - Utility class with memory related functions. - - - 1 KiB - - - 2 KiB - - - 4 KiB - - - 8 KiB - - - 16 KiB - - - 32 KiB - - - 64 KiB - - - 128 KiB - - - 256 KiB - - - 512 KiB - - - 1 MiB - - - 4 MiB - - - Empty byte array. - - - Rounds integer value up to nearest multiple of step. - A value. - A step. - Value rounded up. - - - - Copies memory block for to . - Even though it is called "copy" it actually behaves like "move" which - might be potential problem, although it shouldn't as I cannot think about - any situation when "copy" invalid behaviour (forward copy of overlapping blocks) - can be a desired. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to . - It handle "move" semantic properly handling overlapping blocks properly. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to - up to (around) . - It does not handle overlapping blocks and may copy up to 8 bytes more than expected. - - The target block address. - The source block address. - The limit (in target block). - - - Fill block of memory with zeroes. - Address. - Length. - - - Fills memory block with repeating pattern of a single byte. - Address. - A pattern. - Length. - - - - Copies memory block for to . - This is proper implementation of memcpy (with all then weird behaviour for - overlapping blocks). It is slower than "Copy" but may be required if "Copy" - causes problems. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block backwards from to . - This is needed to implement memmove It is slower than "Move" but is needed for .NET 4.5, - which does not implement Buffer.MemoryCopy. - - The target block address. - The source block address. - Length in bytes. - - - - Moves memory block for to . - It handles overlapping block properly. - - The target block address. - The source block address. - Length in bytes. - - - Copies exactly 8 bytes from source to target. - Target address. - Source address. - - - Copies exactly 16 bytes from source to target. - Target address. - Source address. - - - Copies exactly 18 bytes from source to target. - Target address. - Source address. - - - Allocated block of memory. It is NOT initialized with zeroes. - Size in bytes. - Pointer to allocated block. - - - Allocated block of memory and fills it with zeroes. - Size in bytes. - Pointer to allocated block. - - - - Free memory allocated previously with or - - - - - Reads exactly 1 byte from given address. - Address. - Byte at given address. - - - Reads exactly 2 bytes from given address. - Address. - 2 bytes at given address. - - - Reads exactly 4 bytes from given address. - Address. - 4 bytes at given address. - - - Reads exactly 8 bytes from given address. - Address. - 8 bytes at given address. - - - Writes exactly 1 byte to given address. - Address. - Value. - - - Writes exactly 2 bytes to given address. - Address. - Value. - - - Writes exactly 4 bytes to given address. - Address. - Value. - - - Writes exactly 8 bytes to given address. - Address. - Value. - - - - Skeleton for class with unmanaged resources. - Implements but also handles proper release in - case was not called. - - - - Determines if object was already disposed. - - - Throws exception is object has been disposed already. Convenience method. - Thrown if object is already disposed. - - - Method releasing unmanaged resources. - - - Method releasing managed resources. - - - - Disposed resources. - - true if dispose was explicitly called, - false if called from GC. - - - - - - Destructor. - - - - Static class exposing LZ4 block compression methods. - - - - Maximum size after compression. - Length of input buffer. - Maximum length after compression. - - - Compresses data from one buffer into another. - Input buffer. - Length of input buffer. - Output buffer. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Output buffer. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer length. - Output buffer. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Output buffer. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Compression level. - - - Fast compression. - - - High compression, level 3. - - - High compression, level 4. - - - High compression, level 5. - - - High compression, level 6. - - - High compression, level 7. - - - High compression, level 8. - - - High compression, level 9. - - - Optimal compression, level 10. - - - Optimal compression, level 11. - - - Maximum compression, level 12. - - - - Pickling support with LZ4 compression. - - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Input buffer offset. - Input buffer length. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Length of input data. - Compression level. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer length. - Output buffer. - - - diff --git a/AUTS_Studio/bin/Release/K4os.Hash.xxHash.dll b/AUTS_Studio/bin/Release/K4os.Hash.xxHash.dll deleted file mode 100644 index b4cb8d9..0000000 Binary files a/AUTS_Studio/bin/Release/K4os.Hash.xxHash.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/K4os.Hash.xxHash.xml b/AUTS_Studio/bin/Release/K4os.Hash.xxHash.xml deleted file mode 100644 index 2b84147..0000000 --- a/AUTS_Studio/bin/Release/K4os.Hash.xxHash.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - K4os.Hash.xxHash - - - - - Adapter implementing - - - - - Creates new . - - Hash size (in bytes) - Reset function. - Update function. - Digest function. - - - - - - - - - - - - - - - - - - - Base class for both and . Do not use directly. - - - - Protected constructor to prevent instantiation. - - - - xxHash 32-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - - xxHash 64-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - diff --git a/AUTS_Studio/bin/Release/MySql.Data.dll b/AUTS_Studio/bin/Release/MySql.Data.dll deleted file mode 100644 index eb11cd9..0000000 Binary files a/AUTS_Studio/bin/Release/MySql.Data.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/MySql.Data.xml b/AUTS_Studio/bin/Release/MySql.Data.xml deleted file mode 100644 index 09316cf..0000000 --- a/AUTS_Studio/bin/Release/MySql.Data.xml +++ /dev/null @@ -1,18808 +0,0 @@ - - - - MySql.Data - - - - - The implementation of the caching_sha2_password authentication plugin. - - - - - Generates a byte array set with the password of the user in the expected format based on the - SSL settings of the current connection. - - A byte array that contains the password of the user in the expected format. - - - - Defines the stage of the authentication. - - - - - Allows connections to a user account set with the mysql_clear_password authentication plugin. - - - - - The GSSAPI mechanism. - - - - - Obtain credentials to be used to create a security context - - username - password - host - - - - Processes the challenge data. - - A byte array containing the challenge data from the server - A byte array containing the response to be sent to the server - - - - Security context already established. - - A byte array containing the challenge data from the server - A non-null byte array containing the response to be sent to the server - - - - Enables connections to a user account set with the authentication_kerberos authentication plugin. - - - - - Defines the default behavior for an authentication plugin. - - - - - Gets or sets the authentication data returned by the server. - - - - - This is a factory method that is used only internally. It creates an auth plugin based on the method type - - - - - - - - - Gets the connection option settings. - - - - - Gets the server version associated with this authentication plugin. - - - - - Gets the encoding assigned to the native driver. - - - - - Sets the authentication data required to encode, encrypt, or convert the password of the user. - - A byte array containing the authentication data provided by the server. - This method may be overriden based on the requirements by the implementing authentication plugin. - - - - Defines the behavior when checking for constraints. - - This method is intended to be overriden. - - - - Throws a that encapsulates the original exception. - - The exception to encapsulate. - - - - Defines the behavior when authentication is successful. - - This method is intended to be overriden. - - - - Defines the behavior when more data is required from the server. - - The data returned by the server. - The data to return to the server. - This method is intended to be overriden. - - - - Gets the plugin name based on the authentication plugin type defined during the creation of this object. - - - - - Gets the user name associated to the connection settings. - - The user name associated to the connection settings. - - - - Gets the encoded, encrypted, or converted password based on the authentication plugin type defined during the creation of this object. - This method is intended to be overriden. - - An object containing the encoded, encrypted, or converted password. - - - - Provides functionality to read, decode and convert PEM files to objects supported in .NET. - - - - - Converts the binary data of a PEM file to an object. - - A binary representation of the public key provided by the server. - An object containing the data found in the public key. - - - - Allows connections to a user account set with the authentication_ldap_sasl authentication plugin. - - - - - Determines if the character is a non-ASCII space. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.1.2 - - true if the character is a non-ASCII space; otherwise, false. - The character. - - - - Determines if the character is commonly mapped to nothing. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-B.1 - - true if the character is commonly mapped to nothing; otherwise, false. - The character. - - - - Determines if the character is prohibited. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.3 - - true if the character is prohibited; otherwise, false. - The string. - The character index. - - - - Prepares the user name or password string. - - The string to prepare. - The prepared string. - - - - Allows connections to a user account set with the mysql_native_password authentication plugin. - - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Base class to handle SCRAM authentication methods - - - - - Defines the state of the authentication process. - - - - - Gets the name of the method. - - - - - Parses the server's challenge token and returns the next challenge response. - - The next challenge response. - - - - Builds up the client-first message. - - An array of bytes containig the client-first message. - - - - Processes the server response from the client-first message and - builds up the client-final message. - - Response from the server. - An array of bytes containing the client-final message. - - - - Validates the server response. - - Server-final message - - - - Creates the HMAC SHA1 context. - - The HMAC context. - The secret key. - - - - Apply the HMAC keyed algorithm. - - The results of the HMAC keyed algorithm. - The key. - The string. - - - - Applies the cryptographic hash function. - - The results of the hash. - The string. - - - - Applies the exclusive-or operation to combine two octet strings. - - The alpha component. - The blue component. - - - - The SCRAM-SHA-1 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-1 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-1 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The SCRAM-SHA-256 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-256 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-256 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The implementation of the sha256_password authentication plugin. - - - - - The byte array representation of the public key provided by the server. - - - - - Applies XOR to the byte arrays provided as input. - - A byte array that contains the results of the XOR operation. - - - - - - - - - Defines the type of the security buffer. - - - - - Defines a security handle. - - - - - Describes a buffer allocated by a transport to pass to a security package. - - - - - Specifies the size, in bytes, of the buffer. - - - - - Bit flags that indicate the type of the buffer. - - - - - Pointer to a buffer. - - - - - Hold a numeric value used in defining other data types. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Holds a pointer used to define a security handle. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Indicates the sizes of important structures used in the message support functions. - - - - - Specifies the maximum size of the security token used in the authentication changes. - - - - - Specifies the maximum size of the signature created by the MakeSignature function. - This member must be zero if integrity services are not requested or available. - - - - - Specifies the preferred integral size of the messages. - - - - - Size of the security trailer to be appended to messages. - This member should be zero if the relevant services are not requested or available. - - - - - Allows importing large amounts of data into a database with bulk loading. - - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the field terminator. - - The field terminator. - - - - Gets or sets the line terminator. - - The line terminator. - - - - Gets or sets the name of the table. - - The name of the table. - - - - Gets or sets the character set. - - The character set. - - - - Gets or sets the name of the file. - - The name of the file. - - - - Gets or sets the timeout. - - The timeout. - - - - Gets or sets a value indicating whether the file name that is to be loaded - is local to the client or not. The default value is false. - - true if local; otherwise, false. - - - - Gets or sets the number of lines to skip. - - The number of lines to skip. - - - - Gets or sets the line prefix. - - The line prefix. - - - - Gets or sets the field quotation character. - - The field quotation character. - - - - Gets or sets a value indicating whether [field quotation optional]. - - - true if [field quotation optional]; otherwise, false. - - - - - Gets or sets the escape character. - - The escape character. - - - - Gets or sets the conflict option. - - The conflict option. - - - - Gets or sets the priority. - - The priority. - - - - Gets the columns. - - The columns. - - - - Gets the expressions. - - The expressions. - - - - Executes the load operation. - - The number of rows inserted. - - - - Asynchronous version of the load operation. - - The number of rows inserted. - - - - Executes the load operation asynchronously while the cancellation isn't requested. - - The cancellation token. - The number of rows inserted. - - - - Represents the priority set for bulk loading operations. - - - - - This is the default and indicates normal priority - - - - - Low priority will cause the load operation to wait until all readers of the table - have finished. This only affects storage engines that use only table-level locking - such as MyISAM, Memory, and Merge. - - - - - Concurrent priority is only relevant for MyISAM tables and signals that if the table - has no free blocks in the middle that other readers can retrieve data from the table - while the load operation is happening. - - - - - Represents the behavior when conflicts arise during bulk loading operations. - - - - - This is the default and indicates normal operation. In the event of a LOCAL load, this - is the same as ignore. When the data file is on the server, then a key conflict will - cause an error to be thrown and the rest of the data file ignored. - - - - - Replace column values when a key conflict occurs. - - - - - Ignore any rows where the primary key conflicts. - - - - - Summary description for CharSetMap. - - - - - Returns the text encoding for a given MySQL character set name - - Version of the connection requesting the encoding - Name of the character set to get the encoding for - Encoding object for the given character set name - - - - Initializes the mapping. - - - - - Represents a character set object. - - - - Represents a SQL statement to execute against a MySQL database. This class cannot be inherited. - The object includes the following methods for executing commands at a MySQL database: - - - Item - Description - - - - - - Executes commands that return rows. - - - - - - Executes commands such as SQL INSERT, DELETE, and UPDATE statements. - - - - - - Retrieves a single value (for example, an aggregate value) from a database. - - - - You can reset the property and reuse the - object. However, you must close the object before you can execute a new or previous command. - - If an exception of type is generated by the method executing , - the instance remains open. It is the responsibility of the programmer to close the connection. - - - Using the '@' symbol for paramters is now the preferred approach although the old pattern of using - '?' is still supported. Please be aware that using '@' can cause conflicts when user variables - are also used. For more information, see the documentation on the AllowUserVariables connection string option. - - - The following example creates an instance each of and . - The object opens a connection and then is set as the - property for the . The example then calls the method, - passes to it a connection string and a query string that consists of a SQL INSERT statement, and closes the connection. - - Public Sub InsertRow(myConnectionString As String) - " If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - - Initializes a new instance of the MySqlCommand class. - - - The following example creates a MySqlCommand and sets some of its properties. - - - This example shows how to use one of the overloaded - versions of the MySqlCommand constructor. For other examples that might be available, - see the individual overload topics. - - - - Public Sub CreateMySqlCommand() - Dim myConnection As New MySqlConnection _ - ("Persist Security Info=False;database=test;server=myServer") - myConnection.Open() - Dim myTrans As MySqlTransaction = myConnection.BeginTransaction() - Dim mySelectQuery As String = "SELECT * FROM MyTable" - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection, myTrans) - myCommand.CommandTimeout = 20 - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection myConnection = new MySqlConnection("Persist Security Info=False; - database=test;server=myServer"); - myConnection.Open(); - MySqlTransaction myTrans = myConnection.BeginTransaction(); - string mySelectQuery = "SELECT * FROM myTable"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection,myTrans); - myCommand.CommandTimeout = 20; - } - - - public: - void CreateMySqlCommand() - { - MySqlConnection* myConnection = new MySqlConnection(S"Persist Security Info=False; - database=test;server=myServer"); - myConnection->Open(); - MySqlTransaction* myTrans = myConnection->BeginTransaction(); - String* mySelectQuery = S"SELECT * FROM myTable"; - MySqlCommand* myCommand = new MySqlCommand(mySelectQuery, myConnection, myTrans); - myCommand->CommandTimeout = 20; - }; - - - - Initializes a new instance of the MySqlCommand class. - - The base constructor initializes all fields to their default values. The - following table shows initial property values for an instance of . - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class with the text of the query. - The text of the query. - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query and a . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query, a , and the - . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - The in which the executes. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - conn.Open(); - Dim txn as MySqlTransaction = conn.BeginTransaction() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn, txn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - conn.Open(); - MySqlTransaction txn = conn.BeginTransaction(); - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn, txn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the last inserted id. - - - - - - Gets or sets the SQL statement to execute at the data source. - - The SQL statement or stored procedure to execute. The default is an empty string. - - - When the property is set to , - the property should be set to the name of the stored procedure. - The user may be required to use escape character syntax if the stored procedure name - contains any special characters. The command executes this stored procedure when - you call one of the execute methods. In Connector/NET 8.0 (and previous versions), having both a stored function - and stored procedure with the same name in the same database is not supported. It is - suggested that you provide unqiue names for your stored routines. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandText = "SELECT * FROM Mytable ORDER BY id" - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandText = "SELECT * FROM mytable ORDER BY id"; - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets or sets the wait time before terminating the attempt to execute a command - and generating an error. - - The time (in seconds) to wait for the command to execute. The default is 30 - seconds. - - CommandTimeout is dependent on the ability of MySQL to cancel an executing query. - Because of this, CommandTimeout is only supported when connected to MySQL - version 5.0.0 or higher. - - - - - Gets or sets a value indicating how the property is to be interpreted. - - One of the values. - The default is . - - - When you set the property to , you - should set the property to the name of the stored - procedure. The command executes this stored procedure when you call one of the - execute methods. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets a boolean value that indicates whether the Prepared method has been called. - - - - - - Gets or sets the object used by this instance of the - . - - The connection to a data source. The default value is a null reference - (Nothing in Visual Basic). - - - If you set Connection while a transaction is in progress and the - property is not null, an - is generated. If the Transaction property is not null and the transaction - has already been committed or rolled back, Transaction is set to - null. - - - The following example creates a and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim mySelectQuery As String = "SELECT * FROM mytable ORDER BY id" - Dim myConnectString As String = "Persist Security Info=False;database=test;server=myServer" - Dim myCommand As New MySqlCommand(mySelectQuery) - myCommand.Connection = New MySqlConnection(myConnectString) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string mySelectQuery = "SELECT * FROM mytable ORDER BY id"; - string myConnectString = "Persist Security Info=False;database=test;server=myServer"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery); - myCommand.Connection = new MySqlConnection(myConnectString); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the object. - - The parameters of the SQL statement or stored procedure. The default is - an empty collection. - - Connector/NET does not support unnamed parameters. Every parameter added to the collection must - have an associated name. - - Parameters can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and displays its parameters. - To accomplish this, the method is passed a , a query string - that is a SQL SELECT statement, and an array of objects. - - Public Sub CreateMySqlCommand(myConnection As MySqlConnection, _ - mySelectQuery As String, myParamArray() As MySqlParameter) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age" - myCommand.UpdatedRowSource = UpdateRowSource.Both - myCommand.Parameters.Add(myParamArray) - Dim j As Integer - For j = 0 To myCommand.Parameters.Count - 1 - myCommand.Parameters.Add(myParamArray(j)) - Next j - Dim myMessage As String = "" - Dim i As Integer - For i = 0 To myCommand.Parameters.Count - 1 - myMessage += myCommand.Parameters(i).ToString() & ControlChars.Cr - Next i - Console.WriteLine(myMessage) - End Sub - - - public void CreateMySqlCommand(MySqlConnection myConnection, string mySelectQuery, - MySqlParameter[] myParamArray) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age"; - myCommand.Parameters.Add(myParamArray); - for (int j=0; j<myParamArray.Length; j++) - { - myCommand.Parameters.Add(myParamArray[j]) ; - } - string myMessage = ""; - for (int i = 0; i < myCommand.Parameters.Count; i++) - { - myMessage += myCommand.Parameters[i].ToString() + "\n"; - } - MessageBox.Show(myMessage); - } - - - - - - Gets the object. - - The query attributes defined for the statement. The default is an empty collection. - - Connector/NET does not support unnamed query attributes. Every query attribute added to the collection must - have an associated name. - - Query Attributes can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and also a couple of - to be added later to the . Then, it prints out the values of . - - Public Sub CreateMySqlCommandWithQueryAttributes(ByVal myConnection As MySqlConnection) - Dim myCommand As MySqlCommand = New MySqlCommand() - myCommand.Connection = myConnection - Dim mySqlAttribute As MySqlAttribute = New MySqlAttribute("qa1", "qaValue") - Dim mySqlAttribute2 As MySqlAttribute = New MySqlAttribute("qa2", 2) - myCommand.Attributes.SetAttribute(mySqlAttribute) - myCommand.Attributes.SetAttribute(mySqlAttribute2) - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," & - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2" - - Using reader = myCommand.ExecuteReader() - While reader.Read() - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}") - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}") - End While - End Using - End Sub - - - public void CreateMySqlCommandWithQueryAttributes(MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = myConnection; - - MySqlAttribute mySqlAttribute = new MySqlAttribute("qa1", "qaValue"); - MySqlAttribute mySqlAttribute2 = new MySqlAttribute("qa2", 2); - - myCommand.Attributes.SetAttribute(mySqlAttribute); - myCommand.Attributes.SetAttribute(mySqlAttribute2); - - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," + - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2"; - - using (var reader = myCommand.ExecuteReader()) - { - while (reader.Read()) - { - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}"); - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}"); - } - } - } - - - - - - Gets or sets the instance of within which executes. - - The . The default value is a null reference (Nothing in Visual Basic). - - You cannot set the Transaction property if it is already set to a - specific value, and the command is in the process of executing. If you set the - transaction to use a object that is not connected - to the same as the object, - an exception will be thrown the next time you attempt to execute a statement. - - - - - Gets or sets a boolean value that indicates whether caching is enabled. - - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - - - - Gets or sets how command results are applied to the DataRow when used by the - Update method of the DbDataAdapter. - - - - - Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control. - - - - - Attempts to cancel the execution of a currently active command - - - Cancelling a currently active query only works with MySQL versions 5.0.0 and higher. - - - - - Creates a new instance of a object. - - - This method is a strongly-typed version of . - - A object. - - - - - Check the connection to make sure - - it is open - - it is not currently being used by a reader - - and we have the right version of MySQL for the requested command type - - - - - Executes a SQL statement against the connection and returns the number of rows affected. - Number of rows affected - You can use ExecuteNonQuery to perform any type of database operation, - however any resultsets returned will not be available. Any output parameters - used in calling a stored procedure will be populated with data and can be - retrieved after execution is complete. - For UPDATE, INSERT, and DELETE statements, the return value is the number - of rows affected by the command. For all other types of statements, the return - value is -1. - - The following example creates a MySqlCommand and then - executes it using ExecuteNonQuery. The example is passed a string that is a - SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to - connect to the data source. - - Public Sub CreateMySqlCommand(myExecuteQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myExecuteQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteNonQuery() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteNonQuery(); - myConnection.Close(); - } - - - - - - Reset reader to null, to avoid "There is already an open data reader" - on the next ExecuteReader(). Used in error handling scenarios. - - - - - Reset SQL_SELECT_LIMIT that could have been modified by CommandBehavior. - - - - - Sends the value to - and builds a object. - - A object. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of MySqlDataReader is called. - - - The following example creates an instance of , then executes it by - passing a string that is a SQL SELECT statement, and a string to use to connect to the - data source. - - Public Sub CreateMySqlDataReader(mySelectQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - Try - While myReader.Read() - Console.WriteLine(myReader.GetString(0)) - End While - Finally - myReader.Close - myConnection.Close - End Try - End Sub - - - public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myConnection.Open(); - MMySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - try - { - while(myReader.Read()) - { - Console.WriteLine(myReader.GetString(0)); - } - } - finally - { - myReader.Close(); - myConnection.Close(); - } - } - - - - - - Sends the to the Connection, - and builds a using one of the values. - - One of the values. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - The supports a special mode that enables large binary - values to be read efficiently. For more information, see the SequentialAccess - setting for . - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of the MySqlDataReader is called. - If the MySqlDataReader object is created with CommandBehavior set to - CloseConnection, closing the MySqlDataReader instance closes the connection - automatically. - - - When calling ExecuteReader with the SingleRow behavior, you should be aware that using a limit - clause in your SQL will cause all rows (up to the limit given) to be retrieved by the client. The - method will still return false after the first row but pulling all rows of data - into the client will have a performance impact. If the limit clause is not necessary, it should - be avoided. - - - A object. - - - - - Executes the query, and returns the first column of the first row in the - result set returned by the query. Extra columns or rows are ignored. - - The first column of the first row in the result set, or a null reference if the - result set is empty - - - Use the ExecuteScalar method to retrieve a single value (for example, - an aggregate value) from a database. This requires less code than using the - method, and then performing the operations necessary - to generate the single value using the data returned by a - - - The following example creates a and then - executes it using ExecuteScalar. The example is passed a string that is a - SQL statement that returns an aggregate result, and a string to use to - connect to the data source. - - - Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myScalarQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteScalar() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myScalarQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteScalar(); - myConnection.Close(); - } - - - public: - void CreateMySqlCommand(String* myScalarQuery, MySqlConnection* myConnection) - { - MySqlCommand* myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand->Connection->Open(); - myCommand->ExecuteScalar(); - myConnection->Close(); - } - - - - - - - - - - Creates a prepared version of the command on an instance of MySQL Server. - - - Prepared statements are only supported on MySQL version 4.1 and higher. Calling - prepare while connected to earlier versions of MySQL will succeed but will execute - the statement in the same way as unprepared. - - - The following example demonstrates the use of the Prepare method. - - public sub PrepareExample() - Dim cmd as New MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection) - cmd.Parameters.Add( "@val", 10 ) - cmd.Prepare() - cmd.ExecuteNonQuery() - - cmd.Parameters(0).Value = 20 - cmd.ExecuteNonQuery() - end sub - - - private void PrepareExample() - { - MySqlCommand cmd = new MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection); - cmd.Parameters.Add( "@val", 10 ); - cmd.Prepare(); - cmd.ExecuteNonQuery(); - - cmd.Parameters[0].Value = 20; - cmd.ExecuteNonQuery(); - } - - - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this , and retrieves one or more - result sets from the server. - - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this using one of the - CommandBehavior values. - - One of the values, indicating - options for statement execution and data retrieval. - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Finishes asynchronous execution of a SQL statement, returning the requested - . - - The returned by the call to - . - A MySqlDataReader object that can be used to retrieve the requested rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - - An delegate that is invoked when the command's - execution has completed. Pass a null reference (Nothing in Visual Basic) - to indicate that no callback is required. - A user-defined state object that is passed to the - callback procedure. Retrieve this object from within the callback procedure - using the property. - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Finishes asynchronous execution of a SQL statement. - - The returned by the call - to . - - - - - Verifies if a query is valid even if it has not spaces or is a stored procedure call - - Query to validate - If it is necessary to add call statement - - - - Creates a clone of this object. CommandText, Connection, and Transaction properties - are included as well as the entire parameter list. - - The cloned object. - - - - Summary description for API. - - - - - Summary description for CompressedStream. - - - - - Represents an open connection to a MySQL Server database. This class cannot be inherited. - - - A MySqlConnection object represents a session to a MySQL Server - data source. When you create an instance of MySqlConnection, all - properties are set to their initial values. For a list of these values, see the - MySqlConnection constructor. - - - - If the MySqlConnection goes out of scope, it is not closed. Therefore, - you must explicitly close the connection by calling - or . - - - The following example creates a and - a MySqlConnection. The MySqlConnection is opened and set as the - for the MySqlCommand. The example then calls - , and closes the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - - Public Sub InsertRow(myConnectionString As String) - ' If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - Occurs when MySQL returns warnings as a result of executing a command or query. - - - - - Initializes a new instance of the class. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class when given a string containing the connection string. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - The connection properties used to open the MySQL database. - - - - - Determines whether the connection is a clone of other connection. - - - - - Returns the id of the server thread this connection is executing on - - - - - Gets the name of the MySQL server to which to connect. - - - - - Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error. - The value set is less than 0. - A value of 0 indicates no limit, and should be avoided in a - because an attempt to connect - will wait indefinitely. - - The following example creates a MySqlConnection - and sets some of its properties in the connection string. - - Public Sub CreateSqlConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30" - myConnection.Open() - End Sub - - - public void CreateSqlConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30"; - myConnection.Open(); - } - - - - - Gets the name of the current database or the database to be used after a connection is opened.The name of the current database or the name of the database to be used after a connection is opened. The default value is an empty string. - - The Database property does not update dynamically. - If you change the current database using a SQL statement, then this property - may reflect the wrong value. If you change the current database using the - method, this property is updated to reflect the new database. - - - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Indicates if this connection should use compression when communicating with the server. - - - - Gets the current state of the connection. - A bitwise combination of the values. The default is Closed. - - The allowed state changes are: - - - From Closed to Open, using the Open method of the connection object. - - - From Open to Closed, using either the Close method or the Dispose method of the connection object. - - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - Gets a string containing the version of the MySQL server to which the client is connected.The version of the instance of MySQL.The connection is closed. - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Gets or sets the string used to connect to a MySQL Server database. - - - The ConnectionString returned may not be exactly like what was originally - set but will be indentical in terms of keyword/value pairs. Security information - will not be included unless the Persist Security Info value is set to true. - - - You can use the ConnectionString property to connect to a database. - The following example illustrates a typical connection string. - - "Persist Security Info=False;database=MyDB;server=MySqlServer;user id=myUser;Password=myPass" - - The ConnectionString property can be set only when the connection is - closed. Many of the connection string values have corresponding read-only - properties. When the connection string is set, all of these properties are - updated, except when an error is detected. In this case, none of the properties - are updated. properties return only those settings contained in the - ConnectionString. - - - To connect to a local machine, specify "localhost" for the server. If you do not - specify a server, localhost is assumed. - - - Resetting the ConnectionString on a closed connection resets all - connection string values (and related properties) including the password. For - example, if you set a connection string that includes "Database= MyDb", and - then reset the connection string to "Data Source=myserver;User Id=myUser;Password=myPass", - the property is no longer set to MyDb. - - - The connection string is parsed immediately after being set. If errors in - syntax are found when parsing, a runtime exception, such as , - is generated. Other errors can be found only when an attempt is made to open the - connection. - - - The basic format of a connection string consists of a series of keyword/value - pairs separated by semicolons. The equal sign (=) connects each keyword and its - value. To include values that contain a semicolon, single-quote character, or - double-quote character, the value must be enclosed in double quotes. If the - value contains both a semicolon and a double-quote character, the value can be - enclosed in single quotes. The single quote is also useful if the value begins - with a double-quote character. Conversely, the double quote can be used if the - value begins with a single quote. If the value contains both single-quote and - double-quote characters, the quote character used to enclose the value must be - doubled each time it occurs within the value. - - - To include preceding or trailing spaces in the string value, the value must - be enclosed in either single quotes or double quotes. Any leading or trailing - spaces around integer, Boolean, or enumerated values are ignored, even if - enclosed in quotes. However, spaces within a string literal keyword or value are - preserved. Using .NET Framework version 1.1, single or double quotes may be used - within a connection string without using delimiters (for example, Data Source= - my'Server or Data Source= my"Server), unless a quote character is the first or - last character in the value. - - - To include an equal sign (=) in a keyword or value, it must be preceded by - another equal sign. For example, in the hypothetical connection string - - "key==word=value" - - the keyword is "key=word" and the value is "value". - - If a specific keyword in a keyword= value pair occurs multiple times in a - connection string, the last occurrence listed is used in the value set. - - Keywords are not case sensitive. - - The following table lists the valid names for keyword values within the - ConnectionString. - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
- Connect Timeout -or- Connection Timeout - 15 - The length of time (in seconds) to wait for a connection to the server before - terminating the attempt and generating an error. -
- Host -or- Server -or- Data Source -or- - DataSource -or- Address -or- Addr -or- - Network Address - localhost - - The name or network address of the instance of MySQL to which to connect. Multiple hosts can be - specified separated by &. This can be useful where multiple MySQL servers are configured for replication - and you are not concerned about the precise server you are connecting to. No attempt is made by the provider to - synchronize writes to the database so care should be taken when using this option. - - - In Unix environment with Mono, this can be a fully qualified path to MySQL socket filename. With this configuration, the Unix socket will be used instead of TCP/IP socket. - Currently only a single socket name can be given so accessing MySQL in a replicated environment using Unix sockets is not currently supported. - -
Port3306 - The port MySQL is using to listen for connections. This value is ignored if the connection protocol - is anything but socket. -
Protocolsocket - Specifies the type of connection to make to the server.Values can be: - socket or tcp for a socket connection
- pipe for a named pipe connection
- unix for a Unix socket connection
- memory to use MySQL shared memory -
- CharSet -or Character Set - - - Specifies the character set that should be used to encode all queries sent to the server. - Resultsets are still returned in the character set of the data returned. -
LoggingfalseWhen true, various pieces of information is output to any configured TraceListeners.
Allow Batchtrue - When true, multiple SQL statements can be sent with one command execution.

- -Note-
- Starting with MySQL 4.1.1, batch statements should be separated by the server-defined seperator character.
- Commands sent to earlier versions of MySQL should be seperated with ';'. -
Encryptfalse - When true, SSL/TLS encryption is used for all data sent between the - client and server if the server has a certificate installed. Recognized values - are true, false, yes, and no. -
- Initial Catalog -or- Database - mysqlThe name of the database to use intially
- Password -or- pwd - - The password for the MySQL account being used.
Persist Security Infofalse - When set to false or no (strongly recommended), security-sensitive - information, such as the password, is not returned as part of the connection if - the connection is open or has ever been in an open state. Resetting the - connection string resets all connection string values including the password. - Recognized values are true, false, yes, and no. -
- User Id -or- Username -or- Uid -or- User name - - The MySQL login account being used.
Shared Memory NameMYSQLThe name of the shared memory object to use for communication if the connection protocol is set to memory.
Allow Zero Datetimefalse - True to have MySqlDataReader.GetValue() return a MySqlDateTime for date or datetime columns that have illegal values. - False will cause a DateTime object to be returned for legal values and an exception will be thrown for illegal values. -
Convert Zero Datetimefalse - True to have MySqlDataReader.GetValue() and MySqlDataReader.GetDateTime() - return DateTime.MinValue for date or datetime columns that have illegal values. -
- Pipe Name -or- Pipe - mysql - When set to the name of a named pipe, the MySqlConnection will attempt to connect to MySQL - on that named pipe.

This settings only applies to the Windows platform. -
- Use Performance Monitor -or- UsePerformanceMonitor - false - Posts performance data that can be tracked using perfmon -
- Procedure Cache Size - 25 - How many stored procedure definitions can be held in the cache -
Use Procedure Bodiestrue - Instructs the provider to attempt to call the procedure without first resolving the metadata. This - is useful in situations where the calling user does not have access to the mysql.proc table. To - use this mode, the parameters for the procedure must be added to the command in the same order - as they appear in the procedure definition and their types must be explicitly set. -
Auto Enlisttrue - Indicates whether the connection should automatically enlist in the current transaction, - if there is one. -
Respect Binary Flagstrue - Indicates whether the connection should respect all binary flags sent to the client - as part of column metadata. False will cause the connector to behave like - Connector/NET 5.0 and earlier. -
BlobAsUTF8IncludePatternnull - Pattern that should be used to indicate which blob columns should be treated as UTF-8. -
BlobAsUTF8ExcludePatternnull - Pattern that should be used to indicate which blob columns should not be treated as UTF-8. -
Default Command Timeout30 - The default timeout that new MySqlCommand objects will use unless changed. -
Allow User Variablesfalse - Should the provider expect user variables in the SQL. -
Interactive -or- Interactive Sessionfalse - Should this session be considered interactive? -
Functions Return Stringfalse - Set this option to true to force the return value of SQL functions to be string. -
Use Affected Rowsfalse - Set this option to true to cause the affected rows reported to reflect only the - rows that are actually changed. By default, the number of rows that are matched - is returned. -
-
- - The following table lists the valid names for connection pooling values within - the ConnectionString. For more information about connection pooling, see - Connection Pooling for the MySql Data Provider. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
Connection Lifetime0 - When a connection is returned to the pool, its creation time is compared with - the current time, and the connection is destroyed if that time span (in seconds) - exceeds the value specified by Connection Lifetime. This is useful in - clustered configurations to force load balancing between a running server and a - server just brought online. - - A value of zero (0) causes pooled connections to have the maximum connection - timeout. - -
Max Pool Size100The maximum number of connections allowed in the pool.
Min Pool Size0The minimum number of connections allowed in the pool.
Poolingtrue - When true, the MySqlConnection object is drawn from the appropriate - pool, or if necessary, is created and added to the appropriate pool. Recognized - values are true, false, yes, and no. -
Connection Resetfalse - Specifies whether the database connection should be reset when being - drawn from the pool. Leaving this as false will yeild much faster - connection opens but the user should understand the side effects - of doing this such as temporary tables and user variables from the previous - session not being cleared out. -
Cache Server Propertiesfalse - Specifies whether the server variables are cached between pooled connections. - On systems where the variables change infrequently and there are lots of - connection attempts, this can speed up things dramatically. -
-
- - When setting keyword or connection pooling values that require a Boolean - value, you can use 'yes' instead of 'true', and 'no' instead of 'false'. - - - Note The MySql Data Provider uses the native socket protocol to - communicate with MySQL. Therefore, it does not support the use of an ODBC data source name (DSN) when - connecting to MySQL because it does not add an ODBC layer. - - - CAUTION In this release, the application should use caution when constructing a - connection string based on user input (for example when retrieving user ID and password information from a - dialog box, and appending it to the connection string). The application should - ensure that a user cannot embed extra connection string parameters in these - values (for example, entering a password as "validpassword;database=somedb" in - an attempt to attach to a different database). - -
- The following example creates a and sets some of its properties - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - - The following example creates a in Unix environment with Mono installed. MySQL socket filename used in this example is "/var/lib/mysql/mysql.sock". The actual filename depends on your MySQL configuration. - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - -
- - - Gets a boolean value that indicates whether the password associated to the connection is expired. - - - - Begins a database transaction.An object representing the new transaction.Parallel transactions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. Also - note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Begins a database transaction with the specified isolation level.The isolation level under which the transaction should run. The scope of the transaction. An object representing the new transaction.Parallel exceptions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. - Also note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Changes the current database for an open MySqlConnection.The name of the database to use. - - The value supplied in the database parameter must be a valid database - name. The database parameter cannot contain a null value, an empty - string, or a string with only blank characters. - - - - When you are using connection pooling against MySQL, and you close - the connection, it is returned to the connection pool. The next time the - connection is retrieved from the pool, the reset connection request - executes before the user performs any operations. - - The database name is not valid.The connection is not open.Cannot change the database. - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Pings the server. - - true if the ping was successful; otherwise, false. - - - Opens a database connection with the property settings specified by the ConnectionString.Cannot open a connection without specifying a data source or server.A connection-level error occurred while opening the connection. - - The draws an open connection from the connection pool if one is available. - Otherwise, it establishes a new connection to an instance of MySQL. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Creates and returns a object associated with the . - - A object. - - - - Closes the connection to the database. This is the preferred method of closing any open connection. - - The Close method rolls back any pending transactions. It then releases - the connection to the connection pool, or closes the connection if connection - pooling is disabled. - - - An application can call Close more than one time. No exception is - generated. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Cancels the query after the specified time interval. - - The length of time (in seconds) to wait for the cancelation of the command execution. - - - - Sets query timeout. If timeout has been set prior and not - yet cleared ClearCommandTimeout(), it has no effect. - - timeout in seconds - true if - - - - Clears query timeout, allowing next SetCommandTimeout() to succeed. - - - - - Gets a schema collection based on the provided restriction values. - - The name of the collection. - The values to restrict. - A schema collection object. - - - Empties the connection pool associated with the specified connection. - The associated with the pool to be cleared. - - - ClearPool clears the connection pool that is associated with the connection. - If additional connections associated with connection are in use at the time of the call, - they are marked appropriately and are discarded (instead of being returned to the pool) - when Close is called on them. - - - - - Clears all connection pools. - - ClearAllPools essentially performs a on all current connection - pools. - - - - - - Initiates the asynchronous execution of a transaction. - - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - The cancellation token. - - - - - Asynchronous version of the Close method. - - - - - Asynchronous version of the Close method. - - The cancellation token. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - The cancellation token. - - - - Asynchronous version of the ClearAllPools method. - - - - - Asynchronous version of the ClearAllPools method. - - The cancellation token. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - A collection of schema objects. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - The cancellation token. - A collection of schema objects. - - - - Returns schema information for the data source of this . - - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name. - - Specifies the name of the schema to return. - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name and the specified string array - for the restriction values. - - Specifies the name of the schema to return. - Specifies a set of restriction values for the requested schema. - A that contains schema information. - - - - Enlists in the specified transaction. - - - A reference to an existing in which to enlist. - - - - - Creates a new MySqlConnection object with the exact same ConnectionString value - - A cloned MySqlConnection object - - - - Represents the method that will handle the event of a - . - - - - - Provides data for the InfoMessage event. This class cannot be inherited. - - - - - Gets or sets an array of objects set with the errors found. - - - - - IDisposable wrapper around SetCommandTimeout and ClearCommandTimeout functionality. - - - - - Summary description for Crypt. - - - - - Simple XOR scramble - - Source array - Index inside source array - Destination array - Index inside destination array - Password used to xor the bits - Number of bytes to scramble - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Encrypts a password using the MySql encryption scheme - - The password to encrypt - The encryption seed the server gave us - Indicates if we should use the old or new encryption scheme - - - - - Hashes a password using the algorithm from Monty's code. - The first element in the return is the result of the "old" hash. - The second element is the rest of the "new" hash. - - Password to be hashed - Two element array containing the hashed values - - - - Provides a means of reading a forward-only stream of rows from a MySQL database. This class cannot be inherited. - - - To create a MySQLDataReader, you must call the - method of the object, rather than directly using a constructor. - - - While the MySqlDataReader is in use, the associated - is busy serving the MySqlDataReader, and no other operations can be performed - on the MySqlConnection other than closing it. This is the case until the - method of the MySqlDataReader is called. - - - and - are the only properties that you can call after the MySqlDataReader is - closed. Though the RecordsAffected property may be accessed at any time - while the MySqlDataReader exists, always call Close before returning - the value of RecordsAffected to ensure an accurate return value. - - - For optimal performance, MySqlDataReader avoids creating - unnecessary objects or making unnecessary copies of data. As a result, multiple calls - to methods such as return a reference to the - same object. Use caution if you are modifying the underlying value of the objects - returned by methods such as GetValue. - - - The following example creates a , - a , and a MySqlDataReader. The example reads through - the data, writing it out to the console. Finally, the example closes the MySqlDataReader, then the - MySqlConnection. - - Public Sub ReadMyData(myConnString As String) - Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders" - Dim myConnection As New MySqlConnection(myConnString) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - ' Always call Read before accessing data. - While myReader.Read() - Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1))) - End While - ' always call Close when done reading. - myReader.Close() - ' Close the connection when done with it. - myConnection.Close() - End Sub 'ReadMyData - - - public void ReadMyData(string myConnString) { - string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; - MySqlConnection myConnection = new MySqlConnection(myConnString); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - myConnection.Open(); - MySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - // Always call Read before accessing data. - while (myReader.Read()) { - Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1)); - } - // always call Close when done reading. - myReader.Close(); - // Close the connection when done with it. - myConnection.Close(); - } - - - - - - Gets the number of columns in the current row. - - - - - Gets a value indicating whether the MySqlDataReader contains one or more rows. - - - - - Gets a value indicating whether the data reader is closed. - - - - - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - - - - - Overloaded. Gets the value of a column in its native format. - In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets the value of a column in its native format. - [C#] In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets a value indicating the depth of nesting for the current row. This method is not - supported currently and always returns 0. - - - - - Closes the MySqlDataReader object. - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset. - - The zero-based column ordinal. - The index within the field from which to begin the read operation. - The buffer into which to read the stream of bytes. - The index for buffer to begin the read operation. - The maximum length to copy into the buffer. - The actual number of bytes read. - - - - - Gets the value of the specified column as a single character. - - - - - - - Gets the value of the specified column as a single character. - - - - - - - Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset. - - - - - - - - - - - Gets the name of the source data type. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinalThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the Type that is the data type of the object. - - - - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a globally-unique identifier(GUID). - - The name of the column. - - - - - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; threfore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the name of the specified column. - - - - - - - Gets the column ordinal, given the name of the column. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column in its native format. - - - - - - - Gets all attribute columns in the collection for the current row. - - - - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets a value indicating whether the column contains non-existent or missing values. - - - - - - - Advances the data reader to the next result, when reading the results of batch SQL statements. - - - - - - Advances the MySqlDataReader to the next record. - - - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Returns an that iterates through the . - - - - - Returns a DataTable that describes the column metadata of the MySqlDataReader. - - - - - - Summary description for BaseDriver. - - - - - For pooled connections, time when the driver was - put into idle queue - - - - - Loads the properties from the connected server into a hashtable - - - - - - - Loads all the current character set names and ids for this server - into the charSets hashtable - - - - - The exception that is thrown when MySQL returns an error. This class cannot be inherited. - - - - This class is created whenever the MySql Data Provider encounters an error generated from the server. - - - Any open connections are not automatically closed when an exception is thrown. If - the client application determines that the exception is fatal, it should close any open - objects or objects. - - - The following example generates a MySqlException due to a missing server, - and then displays the exception. - - - Public Sub ShowException() - Dim mySelectQuery As String = "SELECT column1 FROM table1" - Dim myConnection As New MySqlConnection ("Data Source=localhost;Database=Sample;") - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - - Try - myCommand.Connection.Open() - Catch e As MySqlException - MessageBox.Show( e.Message ) - End Try - End Sub - - - public void ShowException() - { - string mySelectQuery = "SELECT column1 FROM table1"; - MySqlConnection myConnection = - new MySqlConnection("Data Source=localhost;Database=Sample;"); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - - try - { - myCommand.Connection.Open(); - } - catch (MySqlException e) - { - MessageBox.Show( e.Message ); - } - } - - - - - - Gets a number that identifies the type of error. - - - - - True if this exception was fatal and cause the closing of the connection, false otherwise. - - - - - Gets the SQL state. - - - - - Gets an integer that representes the MySQL error code. - - - - - Summary description for Field. - - - - - We are adding a custom installer class to our assembly so our installer - can make proper changes to the machine.config file. - - - - - We override Install so we can add our assembly to the proper - machine.config files. - - - - - - We override Uninstall so we can remove out assembly from the - machine.config files. - - - - - - Automatically generates single-table commands used to reconcile changes made to a DataSet with the associated MySQL database. This class cannot be inherited. - - - The does not automatically generate the SQL statements required to - reconcile changes made to a DataSet with the associated instance of MySQL. - However, you can create a MySqlCommandBuilder object to automatically generate SQL statements for - single-table updates if you set the SelectCommand property - of the MySqlDataAdapter. Then, any additional SQL statements that you do not set are generated by the - MySqlCommandBuilder. - - - - The MySqlCommandBuilder registers itself as a listener for RowUpdating - events whenever you set the property. You can only associate one - MySqlDataAdapter or MySqlCommandBuilder object with each other at one time. - - - - To generate INSERT, UPDATE, or DELETE statements, the MySqlCommandBuilder uses the - SelectCommand property to retrieve a required set of metadata automatically. If you change - the SelectCommand after the metadata has is retrieved (for example, after the first update), you - should call the method to update the metadata. - - - - The SelectCommand must also return at least one primary key or unique - column. If none are present, an InvalidOperation exception is generated, - and the commands are not generated. - - - - The MySqlCommandBuilder also uses the Connection, - CommandTimeout, and Transaction - properties referenced by the SelectCommand. The user should call - RefreshSchema if any of these properties are modified, or if the - SelectCommand itself is replaced. Otherwise the InsertCommand, - UpdateCommand, and - DeleteCommand properties retain - their previous values. - - - - If you call Dispose, the MySqlCommandBuilder is disassociated - from the MySqlDataAdapter, and the generated commands are no longer used. - - - - Caution must be used when using MySqlCOmmandBuilder on MySql 4.0 systems. With MySql 4.0, - database/schema information is not provided to the connector for a query. This means that - a query that pulls columns from two identically named tables in two or more different databases - will not cause an exception to be thrown but will not work correctly. Even more dangerous - is the situation where your select statement references database X but is executed in - database Y and both databases have tables with similar layouts. This situation can cause - unwanted changes or deletes. - This note does not apply to MySQL versions 4.1 and later. - - - - The following example uses the , along - and , to - select rows from a data source. The example is passed an initialized - , a connection string, a - query string that is a SQL SELECT statement, and a string that is the - name of the database table. The example then creates a MySqlCommandBuilder. - - - Public Shared Function SelectRows(myConnection As String, mySelectQuery As String, myTableName As String) As DataSet - Dim myConn As New MySqlConnection(myConnection) - Dim myDataAdapter As New MySqlDataAdapter() - myDataAdapter.SelectCommand = New MySqlCommand(mySelectQuery, myConn) - Dim cb As SqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter) - - myConn.Open() - - Dim ds As DataSet = New DataSet - myDataAdapter.Fill(ds, myTableName) - - ' Code to modify data in DataSet here - - ' Without the MySqlCommandBuilder this line would fail. - myDataAdapter.Update(ds, myTableName) - - myConn.Close() - End Function 'SelectRows - - - public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName) - { - MySqlConnection myConn = new MySqlConnection(myConnection); - MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); - myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn); - MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter); - - myConn.Open(); - - DataSet ds = new DataSet(); - myDataAdapter.Fill(ds, myTableName); - - //code to modify data in DataSet here - - //Without the MySqlCommandBuilder this line would fail - myDataAdapter.Update(ds, myTableName); - - myConn.Close(); - - return ds; - } - - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with the associated object. - - The to use. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Gets or sets a object for which SQL statements are automatically generated. - - A object. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Retrieves parameter information from the stored procedure specified - in the MySqlCommand and populates the Parameters collection of the - specified MySqlCommand object. - This method is not currently supported since stored procedures are - not available in MySql. - - The MySqlCommand referencing the stored - procedure from which the parameter information is to be derived. - The derived parameters are added to the Parameters collection of the - MySqlCommand. - The command text is not - a valid stored procedure name. - - - - Gets the delete command. - - - - - - Gets the update command. - - - - - - Gets the insert command. - - - - - - - - - - - - - Represents a set of data commands and a database connection that are used to fill a dataset and update a MySQL database. This class cannot be inherited. - - - The MySQLDataAdapter, serves as a bridge between a - and MySQL for retrieving and saving data. The MySQLDataAdapter provides this - bridge by mapping , which changes the data in the - DataSet to match the data in the data source, and , - which changes the data in the data source to match the data in the DataSet, - using the appropriate SQL statements against the data source. - - - When the MySQLDataAdapter fills a DataSet, it will create the necessary - tables and columns for the returned data if they do not already exist. However, primary - key information will not be included in the implicitly created schema unless the - property is set to . - You may also have the MySQLDataAdapter create the schema of the DataSet, - including primary key information, before filling it with data using . - - - MySQLDataAdapter is used in conjunction with - and to increase performance when connecting to a MySQL database. - - - The MySQLDataAdapter also includes the , - , , - , and - properties to facilitate the loading and updating of data. - - - When an instance of MySQLDataAdapter is created, the read/write properties - are set to initial values. For a list of these values, see the MySQLDataAdapter - constructor. - - - Please be aware that the class allows only - Int16, Int32, and Int64 to have the AutoIncrement property set. - If you plan to use autoincremement columns with MySQL, you should consider - using signed integer columns. - - - The following example creates a and a . - The MySqlConnection is opened and set as the for the - MySqlCommand. The example then calls , and closes - the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - Public Function SelectRows(dataSet As DataSet, connection As String, query As String) As DataSet - Dim conn As New MySqlConnection(connection) - Dim adapter As New MySqlDataAdapter() - adapter.SelectCommand = new MySqlCommand(query, conn) - adapter.Fill(dataset) - Return dataset - End Function - - - public DataSet SelectRows(DataSet dataset,string connection,string query) - { - MySqlConnection conn = new MySqlConnection(connection); - MySqlDataAdapter adapter = new MySqlDataAdapter(); - adapter.SelectCommand = new MySqlCommand(query, conn); - adapter.Fill(dataset); - return dataset; - } - - - - - - Occurs during Update before a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Occurs during Update after a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Initializes a new instance of the MySqlDataAdapter class. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.SelectCommand = New MySqlCommand("SELECT id, name FROM mytable", conn) - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter(); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.SelectCommand = new MySqlCommand("SELECT id, name FROM mytable", conn); - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - the specified as the - property. - - that is a SQL SELECT statement or stored procedure and is set - as the property of the . - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - When SelectCommand (or any of the other command properties) is assigned - to a previously created , the MySqlCommand is not cloned. - The SelectCommand maintains a reference to the previously created MySqlCommand - object. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim cmd as new MySqlCommand("SELECT id, name FROM mytable", conn) - Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlCommand cmd = new MySqlCommand("SELECT id, name FROM mytable", conn); - MySqlDataAdapter da = new MySqlDataAdapter(cmd); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a object. - - A String that is a SQL SELECT statement or stored procedure to be used by - the property of the . - - A that represents the connection. - - - This implementation of the opens and closes a - if it is not already open. This can be useful in a an application that must call the - method for two or more MySqlDataAdapter objects. - If the MySqlConnection is already open, you must explicitly call - or to close it. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", conn) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", conn); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a connection string. - - A that is a SQL SELECT statement or stored procedure to - be used by the property of the . - The connection string - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test") - Dim conn As MySqlConnection = da.SelectCommand.Connection - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test"); - MySqlConnection conn = da.SelectCommand.Connection; - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Gets or sets a SQL statement or stored procedure used to delete records from the data set. - - A used during to delete records in the - database that correspond to deleted rows in the . - - - During , if this property is not set and primary key information - is present in the , the DeleteCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When DeleteCommand is assigned to a previously created , - the MySqlCommand is not cloned. The DeleteCommand maintains a reference - to the previously created MySqlCommand object. - - - The following example creates a and sets the - and DeleteCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the DeleteCommand. - cmd = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - parm.SourceVersion = DataRowVersion.Original - - da.DeleteCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the DeleteCommand. - cmd = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - parm.SourceVersion = DataRowVersion.Original; - - da.DeleteCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to insert records into the data set. - - A used during to insert records into the - database that correspond to new rows in the . - - - During , if this property is not set and primary key information - is present in the , the InsertCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When InsertCommand is assigned to a previously created , - the MySqlCommand is not cloned. The InsertCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be added to the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to select records in the data source. - - A used during to select records from the - database for placement in the . - - - When SelectCommand is assigned to a previously created , - the MySqlCommand is not cloned. The SelectCommand maintains a reference to the - previously created MySqlCommand object. - - - If the SelectCommand does not return any rows, no tables are added to the - , and no exception is raised. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to updated records in the data source. - - A used during to update records in the - database with data from the . - - - During , if this property is not set and primary key information - is present in the , the UpdateCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When UpdateCommand is assigned to a previously created , - the MySqlCommand is not cloned. The UpdateCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be merged with the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and UpdateCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the UpdateCommand. - cmd = New MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - - parm = cmd.Parameters.Add("@oldId", MySqlDbType.VarChar, 15, "id") - parm.SourceVersion = DataRowVersion.Original - - da.UpdateCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the UpdateCommand. - cmd = new MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - parm = cmd.Parameters.Add( "@oldId", MySqlDbType.VarChar, 15, "id" ); - parm.SourceVersion = DataRowVersion.Original; - - da.UpdateCommand = cmd; - - return da; - } - - - - - - Open connection if it was closed. - Necessary to workaround "connection must be open and valid" error - with batched updates. - - Row state - list of opened connections - If connection is opened by this function, the list is updated - - true if connection was opened - - - - Overridden. See . - - - - - - - - - - Overridden. See . - - - - - - - - - - Overridden. Raises the RowUpdating event. - - A MySqlRowUpdatingEventArgs that contains the event data. - - - - Overridden. Raises the RowUpdated event. - - A MySqlRowUpdatedEventArgs that contains the event data. - - - - Asynchronous version of the Fill method. - - The to fill records with. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill records with. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The cancellation token. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Async version of FillSchema - - DataSet to use - Schema Type - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataReader to use - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - DBCommand to use - Source Table - Command Behavior - DataTable[] - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataReader to use - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DBCommand to use - Command Behavior - DataTable - - - - Async version of Update - - DataRow[] to use - int - - - - Async version of Update - - DataSet to use - int - - - - Async version of Update - - DataTable to use - int - - - - Async version of Update - - DataRow[] to use - Data Table Mapping - int - - - - Async version of Update - - DataSet to use - Source Table - - - - - Represents the method that will handle the event of a . - - - - - Represents the method that will handle the event of a . - - - - - Provides data for the RowUpdating event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatingEventArgs class. - - The to - . - The to execute during . - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand to execute when performing the Update. - - - - - Provides data for the RowUpdated event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatedEventArgs class. - - The sent through an . - The executed when is called. - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand executed when Update is called. - - - - - Enables the provider to help ensure that a user has a security level adequate for accessing data. - - - - - Adds a new connection string with set of restricted keywords to the MySqlClientPermission object - - Settings to be used for the connection - Keywords to define the restrictions - KeyRestrictionBehavior to be used - - - - Returns MySqlClientPermission as an IPermission - - - - - - Associates a security action with a custom security attribute. - - - - - Represents a section within a configuration file. - - - - - Gets the MySQL configuations associated to the current configuration. - - - - - Gets a collection of the exception interceptors available in the current configuration. - - - - - Gets a collection of the command interceptors available in the current configuration. - - - - - Gets a collection of the authentication plugins available in the current configuration. - - - - - Gets or sets the replication configurations. - - - - - Defines the configurations allowed for an authentication plugin. - - - - - Gets or sets the name of the authentication plugin. - - - - - Gets or sets the type of the authentication plugin. - - - - - Defines the configurations allowed for an interceptor. - - - - - Gets or sets the name of the interceptor. - - - - - Gets or sets the type of the interceptor. - - - - - Represents a generic configuration element. - - - - - - Gets an enumerator that iterates through the returned list. - - An enumerator that iterates through the returned list. - - - - Helper class that makes it easier to work with the provider. - - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The cancellation token. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Executes a single SQL command and returns the first row of the resultset. A new MySqlConnection object - is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - DataRow containing the first row of the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Updates the given table with data from the given - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of UpdateDataset - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Executes a single command against a MySQL database. The is assumed to be - open when the method is called and remains open after the method completes. - - The object to use - The SQL command to be executed. - An array of objects to use with the command. - The number of affected records. - - - - Executes a single command against a MySQL database. - - to use. - The SQL command to be executed. - An rray of objects to use with the command. - The number of affected records. - A new is created using the given. - - - - Executes a single command against a MySQL database, possibly inside an existing transaction. - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Execute a single command against a MySQL database. - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Escapes the string. - - The string to escape. - The string with all quotes escaped. - - - - Replaces quotes with double quotes. - - The string to modidify. - A string containing double quotes instead of single quotes. - - - - Async version of ExecuteNonQuery - - object to use - SQL command to be executed - Array of objects to use with the command. - Rows affected - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - An array of objects to use with the command. - The number of rows affected. - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - The cancellation token. - An array of objects to use with the command. - The number of rows affected. - - - - Async version of ExecuteReader - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteReader - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteScalar - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Represents a parameter to a , This class cannot be inherited. - - - - - Gets or sets the to use when loading . - - - - - CLoses this object. - - An object that is a clone of this object. - - - - Initializes a new instance of the class with the parameter name, the , the size, and the source column name. - - The name of the parameter to map. - One of the values. - The length of the parameter. - The name of the source column. - - - - Initializes a new instance of the class with the parameter name and a value of the new MySqlParameter. - - The name of the parameter to map. - An that is the value of the . - - - - Initializes a new instance of the class with the parameter name and the data type. - - The name of the parameter to map. - One of the values. - - - - Initializes a new instance of the class with the parameter name, the , and the size. - - The name of the parameter to map. - One of the values. - The length of the parameter. - - - - Initializes a new instance of the class with the parameter name, the type of the parameter, the size of the parameter, a , the precision of the parameter, the scale of the parameter, the source column, a to use, and the value of the parameter. - - The name of the parameter to map. - One of the values. - The length of the parameter. - One of the values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which is resolved. - The total number of decimal places to which is resolved. - The name of the source column. - One of the values. - An that is the value of the . - - - - - Gets or sets a value indicating whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter. - As of MySql version 4.1 and earlier, input-only is the only valid choice. - - - - - Gets or sets a value indicating whether the parameter accepts null values. - - - - - Gets or sets the of the parameter. - - - - - Gets or sets the maximum number of digits used to represent the property. - - - - - Gets or sets the number of decimal places to which is resolved. - - - - - Gets or sets the maximum size, in bytes, of the data within the column. - - - - - Gets or sets the value of the parameter. - - - - - Returns the possible values for this parameter if this parameter is of type - SET or ENUM. Returns null otherwise. - - - - - Gets or sets the name of the source column that is mapped to the and used for loading or returning the . - - - - - Sets or gets a value which indicates whether the source column is nullable. - This allows to correctly generate Update statements - for nullable columns. - - - - - Gets or sets the of the parameter. - - - - - Overridden. Gets a string containing the . - - - - - - Resets the DbType property to its original settings. - - - - - Represents a collection of parameters relevant to a as well as their respective mappings to columns in a . This class cannot be inherited. - - - The number of the parameters in the collection must be equal to the number of - parameter placeholders within the command text, or an exception will be generated. - - The following example creates multiple instances of - that are exposed as a collection through the - object within . - These parameters are used to select data within the data source and place the data in - the . This code example assumes that a DataSet - object and an instance of were created properly - with the appropriate schema, commands, and connection. - - Public Sub AddParameters() - ' ... - ' create myDataSet and myDataAdapter - ' ... - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters" - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239 - - myDataAdapter.Fill(myDataSet) - End Sub 'AddSqlParameters - - - public void AddSqlParameters() - { - // ... - // create myDataSet and myDataAdapter - // ... - - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters"; - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239; - myDataAdapter.Fill(myDataSet); - - } - - - - - - Gets a value that indicates whether the - has a fixed size. - - - - - Gets a value that indicates whether the - is read-only. - - - - - Gets a value that indicates whether the - is synchronized. - - - - - Gets the number of MySqlParameter objects in the collection. - - - - - Gets the at the specified index. - - Gets the with a specified attribute. - [C#] In C#, this property is the indexer for the class. - - - - - Gets the with the specified name. - - - - - Adds a to the with the parameter name, the data type, the column length, and the source column name. - - The name of the parameter. - One of the values. - The length of the column. - The name of the source column. - The newly added object. - - - - Adds the specified object to the . - - The to add to the collection. - The newly added object. - - - - Adds a parameter and its value. - - The name of the parameter. - The value of the parameter. - A object representing the provided values. - - - - Adds a to the given the parameter name and the data type. - - The name of the parameter. - One of the values. - The newly added object. - - - - Adds a to the with the parameter name, the data type, and the column length. - - The name of the parameter. - One of the values. - The length of the column. - The newly added object. - - - - Removes all items from the collection. - - - - - Gets the location of the in the collection with a specific parameter name. - - The name of the object to retrieve. - The zero-based location of the in the collection. - - - - Gets the location of a in the collection. - - The object to locate. - The zero-based location of the in the collection. - Gets the location of a in the collection. - - - - This method will update all the items in the index hashes when - we insert a parameter somewhere in the middle - - - - - - - Adds an array of values to the end of the . - - - - - - Retrieve the parameter with the given name. - - - - - - - Adds the specified object to the . - - The to add to the collection. - The index of the new object. - - - - Gets a value indicating whether a with the specified parameter name exists in the collection. - - The name of the object to find. - true if the collection contains the parameter; otherwise, false. - - - - Gets a value indicating whether a MySqlParameter exists in the collection. - - The value of the object to find. - true if the collection contains the object; otherwise, false. - Gets a value indicating whether a exists in the collection. - - - - Copies MySqlParameter objects from the MySqlParameterCollection to the specified array. - - - - - - - Returns an enumerator that iterates through the . - - - - - - Inserts a MySqlParameter into the collection at the specified index. - - - - - - - Removes the specified MySqlParameter from the collection. - - - - - - Removes the specified from the collection using the parameter name. - - The name of the object to retrieve. - - - - Removes the specified from the collection using a specific index. - - The zero-based index of the parameter. - Removes the specified from the collection. - - - - Gets an object that can be used to synchronize access to the - . - - - - - Represents a single(not nested) TransactionScope - - - - - Defines security permissions assigned to a MySQL object. - - - - - Creates a set of permissions. - - A flag indicating if the reflection permission should be included. - A object representing a collection of permissions. - - - - BaseCommandInterceptor is the base class that should be used for all userland - command interceptors - - - - - Gets the active connection. - - - - - Executes an SQL statements that returns a scalar value such as a calculation. - - The SQL statement to execute. - A scalar value that represents the result returned by the execution of the SQL statement. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that returns the number of affected rows. - - The SQL statement to execute. - The number of affected rows. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that will return a resultset. - - The SQL statement to execute. - A value that describes the results of the query and its effect on the database. - A object containing the result of the statement execution. - false. - This method is intended to be overriden. - - - - Sets the active connection. - - The active connection. - - - - CommandInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - BaseExceptionInterceptor is the base class that should be used for all userland - exception interceptors. - - - - - Returns the received exception. - - The exception to be returned. - The exception originally received. - - - - Gets the active connection. - - - - - Initilizes this object by setting the active connection. - - The connection to become active. - - - - StandardExceptionInterceptor is the standard interceptor that simply returns the exception. - It is the default action. - - - - - Returns the received exception, which is the default action - - The exception to be returned. - The exception originally received. - - - - ExceptionInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - Interceptor is the base class for the "manager" classes such as ExceptionInterceptor, - CommandInterceptor, etc - - - - - Return schema information about procedures and functions - Restrictions supported are: - schema, name, type - - - - - - - Return schema information about parameters for procedures and functions - Restrictions supported are: - schema, name, type, parameter name - - - - - Initializes a new row for the procedure parameters table. - - - - - Parses out the elements of a procedure parameter data type. - - - - - Implementation of memcached binary client protocol. - - According to http://code.google.com/p/memcached/wiki/BinaryProtocolRevamped - - - - Sends an store command (add, replace, set). - - - - - - - - - - - Sends a get command. - - - - - - - - - Sends a delete command. - - - - - - - - Sends a command without args (like flush). - - - - - - - - Sends a command with amount (INCR/DECR) - - - - - - - - - Encodes in the binary protocol the a command of the kind set, add or replace. - - - - - - - If true applies to set, add or replace commands; if false applies to append and prepend commands. - - - - - An interface of the client memcached protocol. This class is abstract for - implementation of the Memcached client interface see for the - text protocol version and for the binary protocol version. - - - - - The port used by the connection. - - - - - The server DNS or IP address used by the connection. - - - - - The network stream used by the connecition. - - - - - Factory method for creating instances of that implement a connection with the requested features. - The connection object returned must be explicitely opened see method . - - The Memcached server DNS or IP address. - The port for the Memcached server - A set of flags indicating characterestics requested. - An instance of a client connection ready to be used. - - - - Opens the client connection. - - - - - Closes the client connection. - - - - - Adds a new key/value pair with the given TimeSpan expiration. - - The key for identifying the entry. - The data to associate with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Appens the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Executes the Check-and-set Memcached operation. - - The key for identifying the entry. - The data to use in the CAS. - The interval of timespan, use TimeSpan.Zero for no expiration. - The CAS unique value to use. - - - - - Decrements the value associated with a key by the given amount. - - The key associated with the value to decrement. - The amount to decrement the value. - - - - Removes they pair key/value given the specified key. - - - - - - Removes all entries from the storage, effectively invalidating the whole cache. - - The interval after which the cache will be cleaned. Can be TimeSpan.Zero for immediately. - - - - Get the key/value pair associated with a given key. - - The key for which to returm the key/value. - The key/value associated with the key or a MemcachedException if it does not exists. - - - - Increments the value associated with a key by the given amount. - - The key associated with the value to increment. - The amount to increment the value. - - - - Prepends the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Replaces the value associated with the given key with another value. - - The key for identifying the entry. - The data to replace the value associated with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Set the value of a given key. - - The key for identifying the entry. - The data to associate with the given key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - A set of flags for requesting new instances of connections - - - - - Requests a connection implememting the text protocol. - - - - - Requests a connection implementing the binary protocol. - - - - - Requests a TCP connection. Currently UDP is not supported. - - - - - The base exception class for all Memcached exceptions. - - - - - Implementation of the Memcached text client protocol. - - - - - Sends a command to the memcached server. - - - - - - - This version is for commands that take a key, data, expiration and casUnique. - - - - Sends a command to the memcached server. - - - - - - This version is for commands that take a key, data and expiration - - - - Send a command to memcached server. - - - - - This version is for commands that don't need flags neither expiration fields. - - - - Sends a command to the server. - - - - This version is for commands that only require a key - - - - Sends a command to the server. - - - - - This version is for commands that only require a key and an integer value. - - - - Sends a command to the server. - - - - This version is for commands that only require a key and expiration. - - - - Represents a query attribute to a . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the attribute name and its value. - - Name of the attribute. - Value of the attribute. - - - - Name of the query attribute. - - - - - Value of the query attribute. - - - - - Gets or sets the of the attribute. - - - - - Sets the MySqlDbType from the Value - - - - - Gets the value for the attribute type. - - - - - Serialize the value of the query attribute. - - - - - Represents a collection of query attributes relevant to a . - - - The following example creates multiple instances of - that are exposed as a collection through the - object within . This code example assumes that an instance - of was created - properly. - - Public Sub AddQueryAttributes() - ' ... - ' create MySqlCommand - ' ... - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute") - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now) - End Sub - - - public void AddQueryAttributes() - { - // ... - // create MySqlCommand - // ... - - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute"); - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now); - } - - - - - - Gets the at the specified index. - - - - - Gets the number of objects in the collection. - - - - - Adds the specified object to the . - - object to add. - - - - Adds a query attribute and its value. - - Name of the query attribute. - Value of the query attribute. - - - - Removes all items from the collection. - - - - - Returns an enumerator that iterates through the . - - - - - Abstract class that provides common functionality for connection options that apply for all protocols. - - - - - Readonly field containing a collection of protocol shared connection options. - - - - - Gets or sets a flag indicating if the object has access to procedures. - - - - - Gets or sets a dictionary representing key-value pairs for each connection option. - - - - - Gets or sets the name of the server. - - The server. - - - - Gets or sets the name of the database for the initial connection. - - - - - Gets or sets the protocol that should be used for communicating - with MySQL. - - - - - Gets or sets the port number that is used when the socket - protocol is being used. - - - - - Gets or sets a boolean value that indicates whether this connection - should resolve DNS SRV records. - - - - - Gets or sets the user ID that should be used to connect with. - - - - - Gets or sets the password that should be used to make a connection. - - - - - Gets or sets the path to the certificate file to be used. - - - - - Gets or sets the password to be used in conjunction with the certificate file. - - - - - Gets or sets the location to a personal store where a certificate is held. - - - - - Gets or sets a certificate thumbprint to ensure correct identification of a certificate contained within a personal store. - - - - - Indicates whether to use SSL connections and how to handle server certificate errors. - - - - - Sets the TLS versions to use in a SSL connection to the server. - - - Tls version=TLSv1.1,TLSv1.2; - - - - - Gets or sets the path to a local key file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the path to a local certificate file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the idle connection time(seconds) for TCP connections. - - - - - Gets or sets the character set that should be used for sending queries to the server. - - - - - Analyzes the connection string for potential duplicated or invalid connection options. - - Connection string. - Flag that indicates if the connection is using X Protocol. - Flag that indicates if the default port is used. - - - - Represents a set of methods for creating instances of the MySQL client implementation of the data source classes. - - - - - Gets an instance of the . - This can be used to retrieve strongly typed data objects. - - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommand. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnection. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbParameter. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnectionStringBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommandBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbDataAdapter. - - - - Provide a simple caching layer - - - - - Aids in the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the Classic protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the name of the named pipe that should be used - for communicating with MySQL. - - - - - Gets or sets a boolean value that indicates whether this connection - should use compression. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - commands to send multiple SQL statements in one execution. - - - - - Gets or sets a boolean value that indicates whether logging is enabled. - - - - - Gets or sets the base name of the shared memory objects used to - communicate with MySQL when the shared memory protocol is being used. - - - - - Gets or sets the default command timeout. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - to load data local infile. - - - - - Gets or sets the safe path where files can be read and uploaded to the server. - - - - - Gets or sets a boolean value that indicates if the password should be persisted - in the connection string. - - - - - Gets or sets a boolean value that indicates if the connection should be encrypted. - - Obsolte. Use instead. - - - - Gets or sets a boolean value that indicates if RSA public keys should be retrieved from the server. - - This option is only relevant when SSL is disabled. Setting this option to true in - 8.0 servers that have the caching_sha2_password authentication plugin as the default plugin will - cause the connection attempt to fail if the user hasn't successfully connected to the server on a - previous occasion. - - - - Gets or sets the default authentication plugin to be used. This plugin takes precedence over - the server-side default authentication plugin when a valid authentication plugin is specified. - - - The default authentication plugin is mandatory for supporting user-less and password-less Kerberos authentications. - If no value is set, it uses the server-side default authentication plugin. - - - - - Gets or sets a boolean value that indicates if zero date time values are supported. - - Default value is false. - - - - Gets or sets a boolean value that indicates if zero datetime values should be - converted to DateTime.MinValue. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the Usage Advisor should be enabled. - - Default value is false. - - - - Gets or sets the size of the stored procedure cache. - - Default value is 25. - - - - Gets or sets a boolean value that indicates if the performance monitor hooks should be enabled. - - Default value is false. - - - - Gets or sets a boolean value that indicates if an opened connection should particiapte in the current scope. - - Default value is true. - - - - Gets or sets a boolean value that indicates if security asserts must be included. - - Must be set to true when using the class in a partial trust environment, - with the library installed in the GAC of the hosting environment. Not supported in .NET Core. - Default value is false. - - - - Gets or sets a boolean value that indicates if column binary flags set by the server are ignored. - - Default value is true. - - - - Gets or sets a boolean value that indicates if TINYINT(1) shound be treated as a BOOLEAN. - - Default value is true. - - - - Gets or sets a boolean value that indicates if the provider expects user variables in the SQL. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the session should be interactive. - - Default value is false. - - - - Gets or sets a boolean value that indicates if server functions should be treated as returning a string. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the server should report affected rows instead of found rows. - - Default value is false. - - - - Gets or sets a boolean value that indicates if items of data type BINARY(16) should be treated as guids. - - Default value is false. - - - - Gets or sets a boolean value that indicates if SQL Server syntax should be allowed by supporting square brackets - around symbols instead of backticks. - - Default value is false. - - - - Gets or sets a boolean value that indicates if caching of TableDirect commands is enabled. - - Default value is false. - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - Default value is 0. - - - - Gets or sets a boolean value that indicates if stored routine parameters should be checked against the server. - - Default value is true. - - - - Gets or sets a boolean value that indicates if this connection will use replication. - - Default value is false. - - - - Gets or sets the list of interceptors that can triage thrown MySqlExceptions. - - - - - Gets or sets the list of interceptors that can intercept command operations. - - - - - Gets or sets the lifetime of a pooled connection. - - Default value is 0. - - - - Gets or sets a boolean value indicating if connection pooling is enabled. - - Default value is true. - - - - Gets the minimum connection pool size. - - Default value is 0. - - - - Gets or sets the maximum connection pool setting. - - Default value is 100. - - - - Gets or sets a boolean value that indicates if the connection should be reset when retrieved - from the pool. - - Default value is false. - - - - Gets or sets a boolean value that indicates whether the server variable settings are updated by a - SHOW VARIABLES command each time a pooled connection is returned. - - Default value is false. - - - - Indicates whether the driver should treat binary BLOBs as UTF8. - - Default value is false. - - - - Gets or sets the pattern to match for the columns that should be treated as UTF8. - - - - - Gets or sets the pattern to match for the columns that should not be treated as UTF8. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Summary description for ClientParam. - - - - - DB Operations Code - - - - - Specifies MySQL specific data type of a field, property, for use in a . - - - - - - A fixed precision and scale numeric value between -1038 - -1 and 10 38 -1. - - - - - The signed range is -128 to 127. The unsigned - range is 0 to 255. - - - - - A 16-bit signed integer. The signed range is - -32768 to 32767. The unsigned range is 0 to 65535 - - - - - Specifies a 24 (3 byte) signed or unsigned value. - - - - - A 32-bit signed integer - - - - - A 64-bit signed integer. - - - - - A small (single-precision) floating-point - number. Allowable values are -3.402823466E+38 to -1.175494351E-38, - 0, and 1.175494351E-38 to 3.402823466E+38. - - - - - A normal-size (double-precision) - floating-point number. Allowable values are -1.7976931348623157E+308 - to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to - 1.7976931348623157E+308. - - - - - A timestamp. The range is '1970-01-01 00:00:00' to sometime in the - year 2037 - - - - - Date The supported range is '1000-01-01' to '9999-12-31'. - - - - - Time The range is '-838:59:59' to '838:59:59'. - - - - - DateTime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - Datetime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - A year in 2- or 4-digit format (default is 4-digit). The - allowable values are 1901 to 2155, 0000 in the 4-digit year - format, and 1970-2069 if you use the 2-digit format (70-69). - - - - - Obsolete Use Datetime or Date type - - - - - A variable-length string containing 0 to 65535 characters - - - - - Bit-field data type - - - - - JSON - - - - - New Decimal - - - - - An enumeration. A string object that can have only one value, - chosen from the list of values 'value1', 'value2', ..., NULL - or the special "" error value. An ENUM can have a maximum of - 65535 distinct values - - - - - A set. A string object that can have zero or more values, each - of which must be chosen from the list of values 'value1', 'value2', - ... A SET can have a maximum of 64 members. - - - - - A binary column with a maximum length of 255 (2^8 - 1) - characters - - - - - A binary column with a maximum length of 16777215 (2^24 - 1) bytes. - - - - - A binary column with a maximum length of 4294967295 or - 4G (2^32 - 1) bytes. - - - - - A binary column with a maximum length of 65535 (2^16 - 1) bytes. - - - - - A variable-length string containing 0 to 255 bytes. - - - - - A fixed-length string. - - - - - Geometric (GIS) data type. - - - - - Unsigned 8-bit value. - - - - - Unsigned 16-bit value. - - - - - Unsigned 24-bit value. - - - - - Unsigned 32-bit value. - - - - - Unsigned 64-bit value. - - - - - Fixed length binary string. - - - - - Variable length binary string. - - - - - A text column with a maximum length of 255 (2^8 - 1) characters. - - - - - A text column with a maximum length of 16777215 (2^24 - 1) characters. - - - - - A text column with a maximum length of 4294967295 or - 4G (2^32 - 1) characters. - - - - - A text column with a maximum length of 65535 (2^16 - 1) characters. - - - - - A guid column. - - - - - Allows the user to specify the type of connection that should - be used. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - SSL options for connection. - - - - - Do not use SSL. - - - - - Use SSL, if server supports it. This option is only available for the classic protocol. - - - - - Always use SSL. Deny connection if server does not support SSL. - Do not perform server certificate validation. - This is the default SSL mode when the same isn't specified as part of the connection string. - - - - - Always use SSL. Validate server SSL certificate, but different host name mismatch. - - - - - Always use SSL and perform full certificate validation. - - - - - Specifies the connection types supported - - - - - Use TCP/IP sockets. - - - - - Use client library. - - - - - Use MySQL embedded server. - - - - - Defines the location of the certificate store. - - - - - Do not use certificate store. - - - - - Use certificate store for the current user. - - - - - User certificate store for the machine. - - - - - Specifies the authentication mechanism that should be used. - - - - - If SSL is enabled or Unix sockets are being used, sets PLAIN as the authentication mechanism; - otherwise, it tries to use MYSQL41 and then SHA256_MEMORY. - - - - - Authenticate using PLAIN. - - - - - Authenticate using MYSQL41. - - - - - Authenticate using EXTERNAL. - - - - - Authenticate using SHA256_MEMORY. - - - - - Defines waiting options that may be used with row locking options. - - - - - Waits until the blocking transaction releases the row lock. - - - - - Never waits to acquire a row lock. The query executes immediately, - failing with an error if a requested row is locked. - - - - - Never waits to acquire a row lock. The query executes immediately, - removing locked rows from the result set. - - - - - Defines the type of compression used when data is exchanged between client and server. - - - - - Uses compression if client and server are able to reach a concensus. Otherwise, compression - is not used. - - - - - Enforces the use of compression. If no concensus is reached, an error is raised. - - - - - Disables compression. - - - - - Defines the compression algorithms that can be used. - - - - - The warnings that cause a connection to close. - - - - - Controls which column type should be read as type System.Guid. - - - - - Same as Char36 when OldGuids equals False, otherwise, the same as LittleEndianBinary16. - - - - - No column types are read or written as type Guid. - - - - - Char(36) columns are read or written as type Guid using lowercase hex with hyphens, which match UUID(). - - - - - Char(32) columns are read or written as type Guid using lowercase hex without hyphens. - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order, which matches UUID_TO_BIN(x). - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order - with time parts swapped, which matches UUID_TO_BIN(x,1). - - - - - Binary(16) columns are read or written as type Guid using little-endian byte order, - that is, the byte order used by System.Guid.ToByteArray and System.Guid.#ctor(System.Byte[]). - - - - - Collection of error codes that can be returned by the server - - - - - - - - - - - Error level - - - - - Error code - - - - - Error message - - - - - Provides a reference to error codes returned by MySQL. - - - - - ER_HASHCHK - - - - ER_NISAMCHK - - - - ER_NO - - - - ER_YES - - - The file couldn't be created. - ER_CANT_CREATE_FILE - - - The table couldn't be created. - ER_CANT_CREATE_TABLE - - - The database couldn't be created. - ER_CANT_CREATE_DB - - - The database couldn't be created, it already exists. - ER_DB_CREATE_EXISTS - - - The database couldn't be dropped, it doesn't exist. - ER_DB_DROP_EXISTS - - - The database couldn't be dropped, the file can't be deleted. - ER_DB_DROP_DELETE - - - The database couldn't be dropped, the directory can't be deleted. - ER_DB_DROP_RMDIR - - - The file couldn't be deleted. - ER_CANT_DELETE_FILE - - - The record couldn't be read from the system table. - ER_CANT_FIND_SYSTEM_REC - - - The status couldn't be retrieved. - ER_CANT_GET_STAT - - - The working directory couldn't be retrieved. - ER_CANT_GET_WD - - - The file couldn't be locked. - ER_CANT_LOCK - - - The file couldn't be opened. - ER_CANT_OPEN_FILE - - - The file couldn't be found. - ER_FILE_NOT_FOUND - - - The directory couldn't be read. - ER_CANT_READ_DIR - - - The working directory couldn't be entered. - ER_CANT_SET_WD - - - The record changed since it was last read. - ER_CHECKREAD - - - The disk is full. - ER_DISK_FULL - - - - There is already a key with the given values. - - - - An error occurred when closing the file. - ER_ERROR_ON_CLOSE - - - An error occurred when reading from the file. - ER_ERROR_ON_READ - - - An error occurred when renaming then file. - ER_ERROR_ON_RENAME - - - An error occurred when writing to the file. - ER_ERROR_ON_WRITE - - - The file is in use. - ER_FILE_USED - - - Sorting has been aborted. - ER_FILSORT_ABORT - - - The view doesn't exist. - ER_FORM_NOT_FOUND - - - Got the specified error from the table storage engine. - ER_GET_ERRNO - - - The table storage engine doesn't support the specified option. - ER_ILLEGAL_HA - - - - The specified key was not found. - - - - The file contains incorrect information. - ER_NOT_FORM_FILE - - - The key file is incorrect for the table, it should be repaired. - ER_NOT_KEYFILE - - - The key file is old for the table, it should be repaired. - ER_OLD_KEYFILE - - - The table is read-only - ER_OPEN_AS_READONLY - - - The server is out of memory, it should be restarted. - ER_OUTOFMEMORY - - - The server is out of sort-memory, the sort buffer size should be increased. - ER_OUT_OF_SORTMEMORY - - - An unexpected EOF was found when reading from the file. - ER_UNEXPECTED_EOF - - - Too many connections are open. - ER_CON_COUNT_ERROR - - - The server is out of resources, check if MySql or some other process is using all available memory. - ER_OUT_OF_RESOURCES - - - - Given when the connection is unable to successfully connect to host. - - - - The handshake was invalid. - ER_HANDSHAKE_ERROR - - - Access was denied for the specified user using the specified database. - ER_DBACCESS_DENIED_ERROR - - - - Normally returned when an incorrect password is given - - - - No database has been selected. - ER_NO_DB_ERROR - - - The command is unknown. - ER_UNKNOWN_COM_ERROR - - - The specified column cannot be NULL. - ER_BAD_NULL_ERROR - - - The specified database is not known. - - - The specified table already exists. - ER_TABLE_EXISTS_ERROR - - - The specified table is unknown. - ER_BAD_TABLE_ERROR - - - The specified column is ambiguous. - ER_NON_UNIQ_ERROR - - - The server is currently being shutdown. - ER_SERVER_SHUTDOWN - - - The specified columns is unknown. - ER_BAD_FIELD_ERROR - - - The specified column isn't in GROUP BY. - ER_WRONG_FIELD_WITH_GROUP - - - The specified columns cannot be grouped on. - ER_WRONG_GROUP_FIELD - - - There are sum functions and columns in the same statement. - ER_WRONG_SUM_SELECT - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT - - - The identifier name is too long. - ER_TOO_LONG_IDENT - - - The column name is duplicated. - ER_DUP_FIELDNAME - - - - Duplicate Key Name - - - - - Duplicate Key Entry - - - - The column specifier is incorrect. - ER_WRONG_FIELD_SPEC - - - An error occurred when parsing the statement. - ER_PARSE_ERROR - - - The statement is empty. - ER_EMPTY_QUERY - - - The table alias isn't unique. - ER_NONUNIQ_TABLE - - - The default value is invalid for the specified field. - ER_INVALID_DEFAULT - - - The table has multiple primary keys defined. - ER_MULTIPLE_PRI_KEY - - - Too many keys were defined for the table. - ER_TOO_MANY_KEYS - - - Too many parts to the keys were defined for the table. - ER_TOO_MANY_KEY_PARTS - - - The specified key is too long - ER_TOO_LONG_KEY - - - The specified key column doesn't exist in the table. - ER_KEY_COLUMN_DOES_NOT_EXITS - - - The BLOB column was used as a key, this can't be done. - ER_BLOB_USED_AS_KEY - - - The column length is too big for the specified column type. - ER_TOO_BIG_FIELDLENGTH - - - There can only be one auto-column, and it must be defined as a PK. - ER_WRONG_AUTO_KEY - - - The server is ready to accept connections. - ER_READY - - - - ER_NORMAL_SHUTDOWN - - - The server received the specified signal and is aborting. - ER_GOT_SIGNAL - - - The server shutdown is complete. - ER_SHUTDOWN_COMPLETE - - - The server is forcing close of the specified thread. - ER_FORCING_CLOSE - - - An error occurred when creating the IP socket. - ER_IPSOCK_ERROR - - - The table has no index like the one used in CREATE INDEX. - ER_NO_SUCH_INDEX - - - The field separator argument is not what is expected, check the manual. - ER_WRONG_FIELD_TERMINATORS - - - The BLOB columns must terminated, fixed row lengths cannot be used. - ER_BLOBS_AND_NO_TERMINATED - - - The text file cannot be read. - ER_TEXTFILE_NOT_READABLE - - - The specified file already exists. - ER_FILE_EXISTS_ERROR - - - Information returned by the LOAD statement. - ER_LOAD_INFO - - - Information returned by an UPDATE statement. - ER_ALTER_INFO - - - The prefix key is incorrect. - ER_WRONG_SUB_KEY - - - All columns cannot be removed from a table, use DROP TABLE instead. - ER_CANT_REMOVE_ALL_FIELDS - - - Cannot DROP, check that the column or key exists. - ER_CANT_DROP_FIELD_OR_KEY - - - Information returned by an INSERT statement. - ER_INSERT_INFO - - - The target table cannot be specified for update in FROM clause. - ER_UPDATE_TABLE_USED - - - The specified thread ID is unknown. - ER_NO_SUCH_THREAD - - - The thread cannot be killed, the current user is not the owner. - ER_KILL_DENIED_ERROR - - - No tables used in the statement. - ER_NO_TABLES_USED - - - Too many string have been used for the specified column and SET. - ER_TOO_BIG_SET - - - A unique filename couldn't be generated. - ER_NO_UNIQUE_LOGFILE - - - The specified table was locked with a READ lock, and can't be updated. - ER_TABLE_NOT_LOCKED_FOR_WRITE - - - The specified table was not locked with LOCK TABLES. - ER_TABLE_NOT_LOCKED - - - BLOB and Text columns cannot have a default value. - ER_BLOB_CANT_HAVE_DEFAULT - - - The specified database name is incorrect. - ER_WRONG_DB_NAME - - - The specified table name is incorrect. - ER_WRONG_TABLE_NAME - - - The SELECT command would examine more than MAX_JOIN_SIZE rows, check the WHERE clause and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is ok. - ER_TOO_BIG_SELECT - - - An unknown error occurred. - ER_UNKNOWN_ERROR - - - The specified procedure is unknown. - ER_UNKNOWN_PROCEDURE - - - The number of parameters provided for the specified procedure is incorrect. - ER_WRONG_PARAMCOUNT_TO_PROCEDURE - - - The parameters provided for the specified procedure are incorrect. - ER_WRONG_PARAMETERS_TO_PROCEDURE - - - The specified table is unknown. - ER_UNKNOWN_TABLE - - - The specified column has been specified twice. - ER_FIELD_SPECIFIED_TWICE - - - The group function has been incorrectly used. - ER_INVALID_GROUP_FUNC_USE - - - The specified table uses an extension that doesn't exist in this MySQL version. - ER_UNSUPPORTED_EXTENSION - - - The table must have at least one column. - ER_TABLE_MUST_HAVE_COLUMNS - - - The specified table is full. - ER_RECORD_FILE_FULL - - - The specified character set is unknown. - ER_UNKNOWN_CHARACTER_SET - - - Too many tables, MySQL can only use the specified number of tables in a JOIN. - ER_TOO_MANY_TABLES - - - Too many columns - ER_TOO_MANY_FIELDS - - - The row size is too large, the maximum row size for the used tables (not counting BLOBS) is specified, change some columns or BLOBS. - ER_TOO_BIG_ROWSIZE - - - A thread stack overrun occurred. Stack statistics are specified. - ER_STACK_OVERRUN - - - A cross dependency was found in the OUTER JOIN, examine the ON conditions. - ER_WRONG_OUTER_JOIN - - - The table handler doesn't support NULL in the given index, change specified column to be NOT NULL or use another handler. - ER_NULL_COLUMN_IN_INDEX - - - The specified user defined function cannot be loaded. - ER_CANT_FIND_UDF - - - The specified user defined function cannot be initialised. - ER_CANT_INITIALIZE_UDF - - - No paths are allowed for the shared library. - ER_UDF_NO_PATHS - - - The specified user defined function already exists. - ER_UDF_EXISTS - - - The specified shared library cannot be opened. - ER_CANT_OPEN_LIBRARY - - - The specified symbol cannot be found in the library. - ER_CANT_FIND_DL_ENTRY - - - The specified function is not defined. - ER_FUNCTION_NOT_DEFINED - - - The specified host is blocked because of too many connection errors, unblock with 'mysqladmin flush-hosts'. - ER_HOST_IS_BLOCKED - - - - The given host is not allowed to connect - - - - - The anonymous user is not allowed to connect - - - - - The given password is not allowed - - - - - The given password does not match - - - - Information returned by an UPDATE statement. - ER_UPDATE_INFO - - - A new thread couldn't be created. - ER_CANT_CREATE_THREAD - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT_ON_ROW - - - The specified table can't be re-opened. - ER_CANT_REOPEN_TABLE - - - The NULL value has been used incorrectly. - ER_INVALID_USE_OF_NULL - - - The regular expression contains an error. - ER_REGEXP_ERROR - - - GROUP columns (MIN(), MAX(), COUNT(), ...) cannot be mixes with no GROUP columns if there is not GROUP BY clause. - ER_MIX_OF_GROUP_FUNC_AND_FIELDS - - - - ER_NONEXISTING_GRANT - - - - ER_TABLEACCESS_DENIED_ERROR - - - - ER_COLUMNACCESS_DENIED_ERROR - - - - ER_ILLEGAL_GRANT_FOR_TABLE - - - - ER_GRANT_WRONG_HOST_OR_USER - - - - ER_NO_SUCH_TABLE - - - - ER_NONEXISTING_TABLE_GRANT - - - - ER_NOT_ALLOWED_COMMAND - - - - ER_SYNTAX_ERROR - - - - ER_DELAYED_CANT_CHANGE_LOCK - - - - ER_TOO_MANY_DELAYED_THREADS - - - - ER_ABORTING_CONNECTION - - - - An attempt was made to send or receive a packet larger than - max_allowed_packet_size - - - - - ER_NET_READ_ERROR_FROM_PIPE - - - - ER_NET_FCNTL_ERROR - - - - ER_NET_PACKETS_OUT_OF_ORDER - - - - ER_NET_UNCOMPRESS_ERROR - - - - ER_NET_READ_ERROR - - - - ER_NET_READ_INTERRUPTED - - - - ER_NET_ERROR_ON_WRITE - - - - ER_NET_WRITE_INTERRUPTED - - - - ER_TOO_LONG_STRING - - - - ER_TABLE_CANT_HANDLE_BLOB - - - - ER_TABLE_CANT_HANDLE_AUTO_INCREMENT - - - - ER_DELAYED_INSERT_TABLE_LOCKED - - - - ER_WRONG_COLUMN_NAME - - - - ER_WRONG_KEY_COLUMN - - - - ER_WRONG_MRG_TABLE - - - - ER_DUP_UNIQUE - - - - ER_BLOB_KEY_WITHOUT_LENGTH - - - - ER_PRIMARY_CANT_HAVE_NULL - - - - ER_TOO_MANY_ROWS - - - - ER_REQUIRES_PRIMARY_KEY - - - - ER_NO_RAID_COMPILED - - - - ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE - - - - ER_KEY_DOES_NOT_EXITS - - - - ER_CHECK_NO_SUCH_TABLE - - - - ER_CHECK_NOT_IMPLEMENTED - - - - ER_CANT_DO_THIS_DURING_AN_TRANSACTION - - - - ER_ERROR_DURING_COMMIT - - - - ER_ERROR_DURING_ROLLBACK - - - - ER_ERROR_DURING_FLUSH_LOGS - - - - ER_ERROR_DURING_CHECKPOINT - - - - ER_NEW_ABORTING_CONNECTION - - - - ER_DUMP_NOT_IMPLEMENTED - - - - ER_FLUSH_SOURCE_BINLOG_CLOSED - - - - ER_INDEX_REBUILD - - - - ER_SOURCE - - - - ER_SOURCE_NET_READ - - - - ER_SOURCE_NET_WRITE - - - - ER_FT_MATCHING_KEY_NOT_FOUND - - - - ER_LOCK_OR_ACTIVE_TRANSACTION - - - - ER_UNKNOWN_SYSTEM_VARIABLE - - - - ER_CRASHED_ON_USAGE - - - - ER_CRASHED_ON_REPAIR - - - - ER_WARNING_NOT_COMPLETE_ROLLBACK - - - - ER_TRANS_CACHE_FULL - - - - ER_REPLICA_MUST_STOP - - - - ER_REPLICA_NOT_RUNNING - - - - ER_BAD_REPLICA - - - - ER_SOURCE_INFO - - - - ER_REPLICA_THREAD - - - - ER_TOO_MANY_USER_CONNECTIONS - - - - ER_SET_CONSTANTS_ONLY - - - - ER_LOCK_WAIT_TIMEOUT - - - - ER_LOCK_TABLE_FULL - - - - ER_READ_ONLY_TRANSACTION - - - - ER_DROP_DB_WITH_READ_LOCK - - - - ER_CREATE_DB_WITH_READ_LOCK - - - - ER_WRONG_ARGUMENTS - - - - ER_NO_PERMISSION_TO_CREATE_USER - - - - ER_UNION_TABLES_IN_DIFFERENT_DIR - - - - ER_LOCK_DEADLOCK - - - - ER_TABLE_CANT_HANDLE_FT - - - - ER_CANNOT_ADD_FOREIGN - - - - ER_NO_REFERENCED_ROW - - - - ER_ROW_IS_REFERENCED - - - - ER_CONNECT_TO_SOURCE - - - - ER_QUERY_ON_SOURCE - - - - ER_ERROR_WHEN_EXECUTING_COMMAND - - - - ER_WRONG_USAGE - - - - ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT - - - - ER_CANT_UPDATE_WITH_READLOCK - - - - ER_MIXING_NOT_ALLOWED - - - - ER_DUP_ARGUMENT - - - - ER_USER_LIMIT_REACHED - - - - ER_SPECIFIC_ACCESS_DENIED_ERROR - - - - ER_LOCAL_VARIABLE - - - - ER_GLOBAL_VARIABLE - - - - ER_NO_DEFAULT - - - - ER_WRONG_VALUE_FOR_VAR - - - - ER_WRONG_TYPE_FOR_VAR - - - - ER_VAR_CANT_BE_READ - - - - ER_CANT_USE_OPTION_HERE - - - - ER_NOT_SUPPORTED_YET - - - - ER_SOURCE_FATAL_ERROR_READING_BINLOG - - - - ER_REPLICA_IGNORED_TABLE - - - - ER_INCORRECT_GLOBAL_LOCAL_VAR - - - - ER_WRONG_FK_DEF - - - - ER_KEY_REF_DO_NOT_MATCH_TABLE_REF - - - - ER_OPERAND_COLUMNS - - - - ER_SUBQUERY_NO_1_ROW - - - - ER_UNKNOWN_STMT_HANDLER - - - - ER_CORRUPT_HELP_DB - - - - ER_CYCLIC_REFERENCE - - - - ER_AUTO_CONVERT - - - - ER_ILLEGAL_REFERENCE - - - - ER_DERIVED_MUST_HAVE_ALIAS - - - - ER_SELECT_REDUCED - - - - ER_TABLENAME_NOT_ALLOWED_HERE - - - - ER_NOT_SUPPORTED_AUTH_MODE - - - - ER_SPATIAL_CANT_HAVE_NULL - - - - ER_COLLATION_CHARSET_MISMATCH - - - - ER_REPLICA_WAS_RUNNING - - - - ER_REPLICA_WAS_NOT_RUNNING - - - - ER_TOO_BIG_FOR_UNCOMPRESS - - - - ER_ZLIB_Z_MEM_ERROR - - - - ER_ZLIB_Z_BUF_ERROR - - - - ER_ZLIB_Z_DATA_ERROR - - - - ER_CUT_VALUE_GROUP_CONCAT - - - - ER_WARN_TOO_FEW_RECORDS - - - - ER_WARN_TOO_MANY_RECORDS - - - - ER_WARN_NULL_TO_NOTNULL - - - - ER_WARN_DATA_OUT_OF_RANGE - - - - WARN_DATA_TRUNCATED - - - - ER_WARN_USING_OTHER_HANDLER - - - - ER_CANT_AGGREGATE_2COLLATIONS - - - - ER_DROP_USER - - - - ER_REVOKE_GRANTS - - - - ER_CANT_AGGREGATE_3COLLATIONS - - - - ER_CANT_AGGREGATE_NCOLLATIONS - - - - ER_VARIABLE_IS_NOT_STRUCT - - - - ER_UNKNOWN_COLLATION - - - - ER_REPLICA_IGNORED_SSL_PARAMS - - - - ER_SERVER_IS_IN_SECURE_AUTH_MODE - - - - ER_WARN_FIELD_RESOLVED - - - - ER_BAD_REPLICA_UNTIL_COND - - - - ER_MISSING_SKIP_REPLICA - - - - ER_UNTIL_COND_IGNORED - - - - ER_WRONG_NAME_FOR_INDEX - - - - ER_WRONG_NAME_FOR_CATALOG - - - - ER_WARN_QC_RESIZE - - - - ER_BAD_FT_COLUMN - - - - ER_UNKNOWN_KEY_CACHE - - - - ER_WARN_HOSTNAME_WONT_WORK - - - - ER_UNKNOWN_STORAGE_ENGINE - - - - ER_WARN_DEPRECATED_SYNTAX - - - - ER_NON_UPDATABLE_TABLE - - - - ER_FEATURE_DISABLED - - - - ER_OPTION_PREVENTS_STATEMENT - - - - ER_DUPLICATED_VALUE_IN_TYPE - - - - ER_TRUNCATED_WRONG_VALUE - - - - ER_TOO_MUCH_AUTO_TIMESTAMP_COLS - - - - ER_INVALID_ON_UPDATE - - - - ER_UNSUPPORTED_PS - - - - ER_GET_ERRMSG - - - - ER_GET_TEMPORARY_ERRMSG - - - - ER_UNKNOWN_TIME_ZONE - - - - ER_WARN_INVALID_TIMESTAMP - - - - ER_INVALID_CHARACTER_STRING - - - - ER_WARN_ALLOWED_PACKET_OVERFLOWED - - - - ER_CONFLICTING_DECLARATIONS - - - - ER_SP_NO_RECURSIVE_CREATE - - - - ER_SP_ALREADY_EXISTS - - - - ER_SP_DOES_NOT_EXIST - - - - ER_SP_DROP_FAILED - - - - ER_SP_STORE_FAILED - - - - ER_SP_LILABEL_MISMATCH - - - - ER_SP_LABEL_REDEFINE - - - - ER_SP_LABEL_MISMATCH - - - - ER_SP_UNINIT_VAR - - - - ER_SP_BADSELECT - - - - ER_SP_BADRETURN - - - - ER_SP_BADSTATEMENT - - - - ER_UPDATE_LOG_DEPRECATED_IGNORED - - - - ER_UPDATE_LOG_DEPRECATED_TRANSLATED - - - - ER_QUERY_INTERRUPTED - - - - ER_SP_WRONG_NO_OF_ARGS - - - - ER_SP_COND_MISMATCH - - - - ER_SP_NORETURN - - - - ER_SP_NORETURNEND - - - - ER_SP_BAD_CURSOR_QUERY - - - - ER_SP_BAD_CURSOR_SELECT - - - - ER_SP_CURSOR_MISMATCH - - - - ER_SP_CURSOR_ALREADY_OPEN - - - - ER_SP_CURSOR_NOT_OPEN - - - - ER_SP_UNDECLARED_VAR - - - - ER_SP_WRONG_NO_OF_FETCH_ARGS - - - - ER_SP_FETCH_NO_DATA - - - - ER_SP_DUP_PARAM - - - - ER_SP_DUP_VAR - - - - ER_SP_DUP_COND - - - - ER_SP_DUP_CURS - - - - ER_SP_CANT_ALTER - - - - ER_SP_SUBSELECT_NYI - - - - ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_SP_VARCOND_AFTER_CURSHNDLR - - - - ER_SP_CURSOR_AFTER_HANDLER - - - - ER_SP_CASE_NOT_FOUND - - - - ER_FPARSER_TOO_BIG_FILE - - - - ER_FPARSER_BAD_HEADER - - - - ER_FPARSER_EOF_IN_COMMENT - - - - ER_FPARSER_ERROR_IN_PARAMETER - - - - ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER - - - - ER_VIEW_NO_EXPLAIN - - - - ER_FRM_UNKNOWN_TYPE - - - - ER_WRONG_OBJECT - - - - ER_NONUPDATEABLE_COLUMN - - - - ER_VIEW_SELECT_DERIVED - - - - ER_VIEW_SELECT_CLAUSE - - - - ER_VIEW_SELECT_VARIABLE - - - - ER_VIEW_SELECT_TMPTABLE - - - - ER_VIEW_WRONG_LIST - - - - ER_WARN_VIEW_MERGE - - - - ER_WARN_VIEW_WITHOUT_KEY - - - - ER_VIEW_INVALID - - - - ER_SP_NO_DROP_SP - - - - ER_SP_GOTO_IN_HNDLR - - - - ER_TRG_ALREADY_EXISTS - - - - ER_TRG_DOES_NOT_EXIST - - - - ER_TRG_ON_VIEW_OR_TEMP_TABLE - - - - ER_TRG_CANT_CHANGE_ROW - - - - ER_TRG_NO_SUCH_ROW_IN_TRG - - - - ER_NO_DEFAULT_FOR_FIELD - - - - ER_DIVISION_BY_ZERO - - - - ER_TRUNCATED_WRONG_VALUE_FOR_FIELD - - - - ER_ILLEGAL_VALUE_FOR_TYPE - - - - ER_VIEW_NONUPD_CHECK - - - - ER_VIEW_CHECK_FAILED - - - - ER_PROCACCESS_DENIED_ERROR - - - - ER_RELAY_LOG_FAIL - - - - ER_PASSWD_LENGTH - - - - ER_UNKNOWN_TARGET_BINLOG - - - - ER_IO_ERR_LOG_INDEX_READ - - - - ER_BINLOG_PURGE_PROHIBITED - - - - ER_FSEEK_FAIL - - - - ER_BINLOG_PURGE_FATAL_ERR - - - - ER_LOG_IN_USE - - - - ER_LOG_PURGE_UNKNOWN_ERR - - - - ER_RELAY_LOG_INIT - - - - ER_NO_BINARY_LOGGING - - - - ER_RESERVED_SYNTAX - - - - ER_WSAS_FAILED - - - - ER_DIFF_GROUPS_PROC - - - - ER_NO_GROUP_FOR_PROC - - - - ER_ORDER_WITH_PROC - - - - ER_LOGGING_PROHIBIT_CHANGING_OF - - - - ER_NO_FILE_MAPPING - - - - ER_WRONG_MAGIC - - - - ER_PS_MANY_PARAM - - - - ER_KEY_PART_0 - - - - ER_VIEW_CHECKSUM - - - - ER_VIEW_MULTIUPDATE - - - - ER_VIEW_NO_INSERT_FIELD_LIST - - - - ER_VIEW_DELETE_MERGE_VIEW - - - - ER_CANNOT_USER - - - - ER_XAER_NOTA - - - - ER_XAER_INVAL - - - - ER_XAER_RMFAIL - - - - ER_XAER_OUTSIDE - - - - ER_XAER_RMERR - - - - ER_XA_RBROLLBACK - - - - ER_NONEXISTING_PROC_GRANT - - - - ER_PROC_AUTO_GRANT_FAIL - - - - ER_PROC_AUTO_REVOKE_FAIL - - - - ER_DATA_TOO_LONG - - - - ER_SP_BAD_SQLSTATE - - - - ER_STARTUP - - - - ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR - - - - ER_CANT_CREATE_USER_WITH_GRANT - - - - ER_WRONG_VALUE_FOR_TYPE - - - - ER_TABLE_DEF_CHANGED - - - - ER_SP_DUP_HANDLER - - - - ER_SP_NOT_VAR_ARG - - - - ER_SP_NO_RETSET - - - - ER_CANT_CREATE_GEOMETRY_OBJECT - - - - ER_FAILED_ROUTINE_BREAK_BINLOG - - - - ER_BINLOG_UNSAFE_ROUTINE - - - - ER_BINLOG_CREATE_ROUTINE_NEED_SUPER - - - - ER_EXEC_STMT_WITH_OPEN_CURSOR - - - - ER_STMT_HAS_NO_OPEN_CURSOR - - - - ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_NO_DEFAULT_FOR_VIEW_FIELD - - - - ER_SP_NO_RECURSION - - - - ER_TOO_BIG_SCALE - - - - ER_TOO_BIG_PRECISION - - - - ER_M_BIGGER_THAN_D - - - - ER_WRONG_LOCK_OF_SYSTEM_TABLE - - - - ER_CONNECT_TO_FOREIGN_DATA_SOURCE - - - - ER_QUERY_ON_FOREIGN_DATA_SOURCE - - - - ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST - - - - ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE - - - - ER_FOREIGN_DATA_STRING_INVALID - - - - ER_CANT_CREATE_FEDERATED_TABLE - - - - ER_TRG_IN_WRONG_SCHEMA - - - - ER_STACK_OVERRUN_NEED_MORE - - - - ER_TOO_LONG_BODY - - - - ER_WARN_CANT_DROP_DEFAULT_KEYCACHE - - - - ER_TOO_BIG_DISPLAYWIDTH - - - - ER_XAER_DUPID - - - - ER_DATETIME_FUNCTION_OVERFLOW - - - - ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG - - - - ER_VIEW_PREVENT_UPDATE - - - - ER_PS_NO_RECURSION - - - - ER_SP_CANT_SET_AUTOCOMMIT - - - - ER_MALFORMED_DEFINER - - - - ER_VIEW_FRM_NO_USER - - - - ER_VIEW_OTHER_USER - - - - ER_NO_SUCH_USER - - - - ER_FORBID_SCHEMA_CHANGE - - - - ER_ROW_IS_REFERENCED_2 - - - - ER_NO_REFERENCED_ROW_2 - - - - ER_SP_BAD_VAR_SHADOW - - - - ER_TRG_NO_DEFINER - - - - ER_OLD_FILE_FORMAT - - - - ER_SP_RECURSION_LIMIT - - - - ER_SP_PROC_TABLE_CORRUPT - - - - ER_SP_WRONG_NAME - - - - ER_TABLE_NEEDS_UPGRADE - - - - ER_SP_NO_AGGREGATE - - - - ER_MAX_PREPARED_STMT_COUNT_REACHED - - - - ER_VIEW_RECURSIVE - - - - ER_NON_GROUPING_FIELD_USED - - - - ER_TABLE_CANT_HANDLE_SPKEYS - - - - ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA - - - - ER_REMOVED_SPACES - - - - ER_AUTOINC_READ_FAILED - - - - ER_USERNAME - - - - ER_HOSTNAME - - - - ER_WRONG_STRING_LENGTH - - - - ER_NON_INSERTABLE_TABLE - - - - ER_ADMIN_WRONG_MRG_TABLE - - - - ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT - - - - ER_NAME_BECOMES_EMPTY - - - - ER_AMBIGUOUS_FIELD_TERM - - - - ER_FOREIGN_SERVER_EXISTS - - - - ER_FOREIGN_SERVER_DOESNT_EXIST - - - - ER_ILLEGAL_HA_CREATE_OPTION - - - - ER_PARTITION_REQUIRES_VALUES_ERROR - - - - ER_PARTITION_WRONG_VALUES_ERROR - - - - ER_PARTITION_MAXVALUE_ERROR - - - - ER_PARTITION_SUBPARTITION_ERROR - - - - ER_PARTITION_SUBPART_MIX_ERROR - - - - ER_PARTITION_WRONG_NO_PART_ERROR - - - - ER_PARTITION_WRONG_NO_SUBPART_ERROR - - - - ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR - - - - ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR - - - - ER_FIELD_NOT_FOUND_PART_ERROR - - - - ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR - - - - ER_INCONSISTENT_PARTITION_INFO_ERROR - - - - ER_PARTITION_FUNC_NOT_ALLOWED_ERROR - - - - ER_PARTITIONS_MUST_BE_DEFINED_ERROR - - - - ER_RANGE_NOT_INCREASING_ERROR - - - - ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR - - - - ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR - - - - ER_PARTITION_ENTRY_ERROR - - - - ER_MIX_HANDLER_ERROR - - - - ER_PARTITION_NOT_DEFINED_ERROR - - - - ER_TOO_MANY_PARTITIONS_ERROR - - - - ER_SUBPARTITION_ERROR - - - - ER_CANT_CREATE_HANDLER_FILE - - - - ER_BLOB_FIELD_IN_PART_FUNC_ERROR - - - - ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF - - - - ER_NO_PARTS_ERROR - - - - ER_PARTITION_MGMT_ON_NONPARTITIONED - - - - ER_FOREIGN_KEY_ON_PARTITIONED - - - - ER_DROP_PARTITION_NON_EXISTENT - - - - ER_DROP_LAST_PARTITION - - - - ER_COALESCE_ONLY_ON_HASH_PARTITION - - - - ER_REORG_HASH_ONLY_ON_SAME_NO - - - - ER_REORG_NO_PARAM_ERROR - - - - ER_ONLY_ON_RANGE_LIST_PARTITION - - - - ER_ADD_PARTITION_SUBPART_ERROR - - - - ER_ADD_PARTITION_NO_NEW_PARTITION - - - - ER_COALESCE_PARTITION_NO_PARTITION - - - - ER_REORG_PARTITION_NOT_EXIST - - - - ER_SAME_NAME_PARTITION - - - - ER_NO_BINLOG_ERROR - - - - ER_CONSECUTIVE_REORG_PARTITIONS - - - - ER_REORG_OUTSIDE_RANGE - - - - ER_PARTITION_FUNCTION_FAILURE - - - - ER_PART_STATE_ERROR - - - - ER_LIMITED_PART_RANGE - - - - ER_PLUGIN_IS_NOT_LOADED - - - - ER_WRONG_VALUE - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE - - - - ER_FILEGROUP_OPTION_ONLY_ONCE - - - - ER_CREATE_FILEGROUP_FAILED - - - - ER_DROP_FILEGROUP_FAILED - - - - ER_TABLESPACE_AUTO_EXTEND_ERROR - - - - ER_WRONG_SIZE_NUMBER - - - - ER_SIZE_OVERFLOW_ERROR - - - - ER_ALTER_FILEGROUP_FAILED - - - - ER_BINLOG_ROW_LOGGING_FAILED - - - - ER_BINLOG_ROW_WRONG_TABLE_DEF - - - - ER_BINLOG_ROW_RBR_TO_SBR - - - - ER_EVENT_ALREADY_EXISTS - - - - ER_EVENT_STORE_FAILED - - - - ER_EVENT_DOES_NOT_EXIST - - - - ER_EVENT_CANT_ALTER - - - - ER_EVENT_DROP_FAILED - - - - ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG - - - - ER_EVENT_ENDS_BEFORE_STARTS - - - - ER_EVENT_EXEC_TIME_IN_THE_PAST - - - - ER_EVENT_OPEN_TABLE_FAILED - - - - ER_EVENT_NEITHER_M_EXPR_NOR_M_AT - - - - ER_COL_COUNT_DOESNT_MATCH_CORRUPTED - - - - ER_CANNOT_LOAD_FROM_TABLE - - - - ER_EVENT_CANNOT_DELETE - - - - ER_EVENT_COMPILE_ERROR - - - - ER_EVENT_SAME_NAME - - - - ER_EVENT_DATA_TOO_LONG - - - - ER_DROP_INDEX_FK - - - - ER_WARN_DEPRECATED_SYNTAX_WITH_VER - - - - ER_CANT_WRITE_LOCK_LOG_TABLE - - - - ER_CANT_LOCK_LOG_TABLE - - - - ER_FOREIGN_DUPLICATE_KEY - - - - ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE - - - - ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR - - - - ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT - - - - ER_NDB_CANT_SWITCH_BINLOG_FORMAT - - - - ER_PARTITION_NO_TEMPORARY - - - - ER_PARTITION_CONST_DOMAIN_ERROR - - - - ER_PARTITION_FUNCTION_IS_NOT_ALLOWED - - - - ER_DDL_LOG_ERROR - - - - ER_NULL_IN_VALUES_LESS_THAN - - - - ER_WRONG_PARTITION_NAME - - - - ER_CANT_CHANGE_TRANSACTION_ISOLATION - - - - ER_DUP_ENTRY_AUTOINCREMENT_CASE - - - - ER_EVENT_MODIFY_QUEUE_ERROR - - - - ER_EVENT_SET_VAR_ERROR - - - - ER_PARTITION_MERGE_ERROR - - - - ER_CANT_ACTIVATE_LOG - - - - ER_RBR_NOT_AVAILABLE - - - - ER_BASE64_DECODE_ERROR - - - - ER_EVENT_RECURSION_FORBIDDEN - - - - ER_EVENTS_DB_ERROR - - - - ER_ONLY_INTEGERS_ALLOWED - - - - ER_UNSUPORTED_LOG_ENGINE - - - - ER_BAD_LOG_STATEMENT - - - - ER_CANT_RENAME_LOG_TABLE - - - - ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_STORED_FCT - - - - ER_NATIVE_FCT_NAME_COLLISION - - - - ER_DUP_ENTRY_WITH_KEY_NAME - - - - ER_BINLOG_PURGE_EMFILE - - - - ER_EVENT_CANNOT_CREATE_IN_THE_PAST - - - - ER_EVENT_CANNOT_ALTER_IN_THE_PAST - - - - ER_REPLICA_INCIDENT - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT - - - - ER_BINLOG_UNSAFE_STATEMENT - - - - ER_REPLICA_FATAL_ERROR - - - - ER_REPLICA_RELAY_LOG_READ_FAILURE - - - - ER_REPLICA_RELAY_LOG_WRITE_FAILURE - - - - ER_REPLICA_CREATE_EVENT_FAILURE - - - - ER_REPLICA_SOURCE_COM_FAILURE - - - - ER_BINLOG_LOGGING_IMPOSSIBLE - - - - ER_VIEW_NO_CREATION_CTX - - - - ER_VIEW_INVALID_CREATION_CTX - - - - ER_SR_INVALID_CREATION_CTX - - - - ER_TRG_CORRUPTED_FILE - - - - ER_TRG_NO_CREATION_CTX - - - - ER_TRG_INVALID_CREATION_CTX - - - - ER_EVENT_INVALID_CREATION_CTX - - - - ER_TRG_CANT_OPEN_TABLE - - - - ER_CANT_CREATE_SROUTINE - - - - ER_REPLICA_AMBIGOUS_EXEC_MODE - - - - ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT - - - - ER_REPLICA_CORRUPT_EVENT - - - - ER_LOAD_DATA_INVALID_COLUMN - - - - ER_LOG_PURGE_NO_FILE - - - - ER_XA_RBTIMEOUT - - - - ER_XA_RBDEADLOCK - - - - ER_NEED_REPREPARE - - - - ER_DELAYED_NOT_SUPPORTED - - - - WARN_NO_SOURCE_INFO - - - - WARN_OPTION_IGNORED - - - - WARN_PLUGIN_DELETE_BUILTIN - - - - WARN_PLUGIN_BUSY - - - - ER_VARIABLE_IS_READONLY - - - - ER_WARN_ENGINE_TRANSACTION_ROLLBACK - - - - ER_REPLICA_HEARTBEAT_FAILURE - - - - ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE - - - - ER_NDB_REPLICATION_SCHEMA_ERROR - - - - ER_CONFLICT_FN_PARSE_ERROR - - - - ER_EXCEPTIONS_WRITE_ERROR - - - - ER_TOO_LONG_TABLE_COMMENT - - - - ER_TOO_LONG_FIELD_COMMENT - - - - ER_FUNC_INEXISTENT_NAME_COLLISION - - - - ER_DATABASE_NAME - - - - ER_TABLE_NAME - - - - ER_PARTITION_NAME - - - - ER_SUBPARTITION_NAME - - - - ER_TEMPORARY_NAME - - - - ER_RENAMED_NAME - - - - ER_TOO_MANY_CONCURRENT_TRXS - - - - WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED - - - - ER_DEBUG_SYNC_TIMEOUT - - - - ER_DEBUG_SYNC_HIT_LIMIT - - - - ER_ERROR_LAST - - - - ER_CLIENT_INTERACTION_TIMEOUT - - - - WriteInteger - - - - - - - Summary description for MySqlPool. - - - - - It is assumed that this property will only be used from inside an active - lock. - - - - - Indicates whether this pool is being cleared. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - Removes a connection from the in use pool. The only situations where this method - would be called are when a connection that is in use gets some type of fatal exception - or when the connection is being returned to the pool and it's too old to be - returned. - - - - - - Clears this pool of all idle connections and marks this pool and being cleared - so all other connections are closed when they are returned. - - - - - Remove expired drivers from the idle pool - - - - Closing driver is a potentially lengthy operation involving network - IO. Therefore we do not close expired drivers while holding - idlePool.SyncRoot lock. We just remove the old drivers from the idle - queue and return them to the caller. The caller will need to close - them (or let GC close them) - - - - - Summary description for MySqlPoolManager. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove drivers that have been idle for too long. - - - - - Remove hosts that have been on the demoted list for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Provides a class capable of executing a SQL script containing - multiple SQL statements including CREATE PROCEDURE statements - that require changing the delimiter - - - - - Handles the event raised whenever a statement is executed. - - - - - Handles the event raised whenever an error is raised by the execution of a script. - - - - - Handles the event raised whenever a script execution is finished. - - - - - Initializes a new instance of the - class. - - - - - Initializes a new instance of the - class. - - The connection. - - - - Initializes a new instance of the - class. - - The query. - - - - Initializes a new instance of the - class. - - The connection. - The query. - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the query. - - The query. - - - - Gets or sets the delimiter. - - The delimiter. - - - - Executes this instance. - - The number of statements executed as part of the script. - - - - Initiates the asynchronous execution of SQL statements. - - The number of statements executed as part of the script inside. - - - - Initiates the asynchronous execution of SQL statements. - - The cancellation token. - The number of statements executed as part of the script inside. - - - - Represents the method that will handle errors when executing MySQL statements. - - - - - Represents the method that will handle errors when executing MySQL scripts. - - - - - Sets the arguments associated to MySQL scripts. - - - - - Gets the statement text. - - The statement text. - - - - Gets the line. - - The line. - - - - Gets the position. - - The position. - - - - Sets the arguments associated to MySQL script errors. - - - - - Initializes a new instance of the class. - - The exception. - - - - Gets the exception. - - The exception. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignore; otherwise, false. - - - - Summary description for MySqlStream. - - - - - ReadPacket is called by NativeDriver to start reading the next - packet on the stream. - - - - - Reads the specified number of bytes from the stream and stores them at given - offset in the buffer. - Throws EndOfStreamException if not all bytes can be read. - - Stream to read from - Array to store bytes read from the stream - The offset in buffer at which to begin storing the data read from the current stream. - Number of bytes to read - - - - LoadPacket loads up and decodes the header of the incoming packet. - - - - - Traces information about the client execution. - - - - - Gets the list of trace listeners. - - - - - Gets or sets the switch to control tracing and debugging. - - - - - Gets or sets a flag indicating if query analysis is enabled. - - - - - Enables query analysis. - - The host on which to enable query analysis. - The interval of time for logging trace information. - - - - Disables query analysis. - - - - - Specifies the types of warning flags. - - - - - No index exists. - - - - - Bad index exists. - - - - - Rows have been excluded from the result. - - - - - Columns have been excluded from the result. - - - - - Type conversions took place. - - - - - Specifies the event that triggered the trace. - - - - - A connection has been opened. - - - - - A connection has been closed. - - - - - A query has been executed. - - - - - Data has been retrieved from the resultset. - - - - - Data retrieval has ended. - - - - - Query execution has ended. - - - - - The statement to be executed has been created. - - - - - The statement has been executed. - - - - - The statement is no longer required. - - - - - The query provided is of a nonquery type. - - - - - Usage advisor warnings have been requested. - - - - - Noncritical problem. - - - - - An error has been raised during data retrieval. - - - - - The query has been normalized. - - - - - Summary description for Driver. - - - - - Sets the current database for the this connection - - - - - - Return the appropriate set of connection flags for our - server capabilities and our user requested options. - - - - - Query is the method that is called to send all queries to the server - - - - - Verify that the file to upload is in a valid directory - according to the safe path entered by a user under - "AllowLoadLocalInfileInPath" connection option. - - File to validate against the safe path. - - - - Sends the specified file to the server. - This supports the LOAD DATA LOCAL INFILE - - - - - - FetchDataRow is the method that the data reader calls to see if there is another - row to fetch. In the non-prepared mode, it will simply read the next data packet. - In the prepared mode (statementId > 0), it will - - - - - Execution timeout, in milliseconds. When the accumulated time for network IO exceeds this value - TimeoutException is thrown. This timeout needs to be reset for every new command - - - - - - Summary description for PreparedStatement. - - - - - Prepares CommandText for use with the Prepare method - - Command text stripped of all paramter names - - Takes the output of TokenizeSql and creates a single string of SQL - that only contains '?' markers for each parameter. It also creates - the parameterMap array list that includes all the paramter names in the - order they appeared in the SQL - - - - - Defines a replication configurarion element in the configuration file. - - - - - Gets a collection of objects representing the server groups. - - - - - Defines a replication server group in the configuration file. - - - - - Gets or sets the name of the replication server group configuration. - - - - - Gets or sets the group type of the replication server group configuration. - - - - - Gets or sets the number of seconds to wait for retry. - - - - - Gets a collection of objects representing the - server configurations associated to this group configuration. - - - - - Defines a replication server in configuration file. - - - - - Gets or sets the name of the replication server configuration. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets the connection string associated to this replication server. - - - - - Manager for Replication and Load Balancing features - - - - - Returns Replication Server Group List - - - - - Adds a Default Server Group to the list - - Group name - Time between reconnections for failed servers - Replication Server Group added - - - - Adds a Server Group to the list - - Group name - ServerGroup type reference - Time between reconnections for failed servers - Server Group added - - - - Gets the next server from a replication group - - Group name - True if the server to return must be a source - Replication Server defined by the Load Balancing plugin - - - - Gets a Server Group by name - - Group name - Server Group if found, otherwise throws an MySqlException - - - - Validates if the replication group name exists - - Group name to validate - true if the replication group name is found; otherwise, false - - - - Assigns a new server driver to the connection object - - Group name - True if the server connection to assign must be a source - MySqlConnection object where the new driver will be assigned - - - - Class that implements Round Robing Load Balancing technique. - - - - - Gets an available server based on Round Robin load balancing. - - Flag indicating if the server to return must be a source. - A object representing the next available server. - - - - Represents a server in a Replication environment. - - - - - Gets the server name. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets the connection string used to connect to the server. - - - - - Gets a flag indicating if the server is available to be considered in load balancing. - - - - - Base class used to implement load balancing features. - - - - - List of servers available for replication. - - - - The group name. - The number of seconds to perform a retry. - - - - Gets the group name. - - - - - Gets the retry time between connections to failed servers. - - - - - Gets the server list in the group. - - - - - Adds a server into the group. - - The server name. - A flag indicating if the server to add is source or replica. - The connection string used by this server. - A object representing the recently added object. - - - - Removes a server from the group. - - The server name. - - - - Gets a server by name. - - The server name. - The replication server. - - - - Must be implemented. Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - Currently not being used. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Handles a failed connection to a server. - - The failed server. - This method can be overrided to implement a custom failover handling. - - - - Handles a failed connection to a server. - - The failed server. - The exception that caused the failover. - - - - return the ordinal for the given column name - - - - - - - Retrieve the value as the given column index - - The column value to retrieve - The value as the given column - - - - Closes the current resultset, dumping any data still on the wire - - - - - Loads the column metadata for the current resultset - - - - - Represents a schema and its contents. - - - - - Gets or sets the name of the schema. - - - - - Gets the list of columns in the schema. - - - - - Gets the list of rows in the schema. - - - - - Represents a row within a schema. - - - - - Represents a column within a schema. - - - - - The name of the column. - - - - - The type of the column. - - - - - GetForeignKeysOnTable retrieves the foreign keys on the given table. - Since MySQL supports foreign keys on versions prior to 5.0, we can't use - information schema. MySQL also does not include any type of SHOW command - for foreign keys so we have to resort to use SHOW CREATE TABLE and parsing - the output. - - The table to store the key info in. - The table to get the foeign key info for. - Only get foreign keys that match this name. - Should column information be included in the table. - - - - Builds the initial part of the COM_QUERY packet - - Collection of parameters - Collection of attributes - A - - - - Serializes the given parameter to the given memory stream - - - This method is called by PrepareSqlBuffers to convert the given - parameter to bytes and write those bytes to the given memory stream. - - - True if the parameter was successfully serialized, false otherwise. - - - - Summary description for StoredProcedure. - - - - - Defines the basic operations to be performed on the table cache. - - - - - The maximum age allowed for cache entries. - - - - - Adds the given command and result set to the cache. - - The command to store in the cache. - The resultset associated to the stored command. - - - - Retrieves the specified command from the cache. - - The command to retrieve. - The allowed age for the cache entry. - - - - - Removes the specified command from the cache. - - The command to remove from the cache. - - - - Clears the cache. - - - - - Removes cache entries older than the value defined by . - - - - - Stream that supports timeout of IO operations. - This class is used is used to support timeouts for SQL command, where a - typical operation involves several network reads/writes. - Timeout here is defined as the accumulated duration of all IO operations. - - - - - Construct a TimedStream - - Undelying stream - - - - Figure out whether it is necessary to reset timeout on stream. - We track the current value of timeout and try to avoid - changing it too often, because setting Read/WriteTimeout property - on network stream maybe a slow operation that involves a system call - (setsockopt). Therefore, we allow a small difference, and do not - reset timeout if current value is slightly greater than the requested - one (within 0.1 second). - - - - - Common handler for IO exceptions. - Resets timeout to infinity if timeout exception is - detected and stops the times. - - original exception - - - - Represents a SQL transaction to be made in a MySQL database. This class cannot be inherited. - - The application creates a MySqlTransaction object by calling - on the object. All subsequent operations associated with the - transaction (for example, committing or aborting the transaction), are performed on the - MySqlTransaction object. - - The following example creates a and a MySqlTransaction. - It also demonstrates how to use the , - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub 'RunTransaction - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Gets the object associated with the transaction, or a null reference (Nothing in Visual Basic) if the transaction is no longer valid. - - The object associated with this transaction. - - A single application may have multiple database connections, each - with zero or more transactions. This property enables you to - determine the connection object associated with a particular - transaction created by . - - - - - Specifies the for this transaction. - - - The for this transaction. The default is ReadCommitted. - - - Parallel transactions are not supported. Therefore, the IsolationLevel - applies to the entire transaction. - - - - - Commits the database transaction. - - The Commit method is equivalent to the MySQL SQL statement - COMMIT. - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Rolls back a transaction from a pending state. - - The Rollback method is equivalent to the MySQL statement ROLLBACK. - The transaction can only be rolled back from a pending state - (after BeginTransaction has been called, but before Commit is - called). - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Defines the type of the column. - - - - - GSS API constants - - - - - GSS_C_NT_HOSTBASED_SERVICE (1.2.840.113554.1.2.1.4) - - - - - GSS_KRB5_NT_PRINCIPAL_NAME (1.2.840.113554.1.2.2.1) - - - - - GSS_C_NT_USER_NAME (1.2.840.113554.1.2.1.1) - - - - - GSS_KRB5_MECH_OID_DESC (1.2.840.113554.1.2.2) - - - - - GSS_KRB5_MECH_OID_DESC Set - - - - - Defines a security context - - - - - Sets the main properties to create and initiate a security context. - - Service Principal Name. - Credentials. - Requested flags. - - - - Initiate the security context - - Challenge received by the server. - A byte array containing the response to be sent to the server - - - - Unwrap a message. - - Message acquired from the server. - Unwrapped message. - - - - Wrap a message. - - Message to be wrapped. - A byte array containing the wrapped message. - - - - Allocate a clr byte array and copy the token data over - - Buffer. - A byte array - - - - Cleanups unmanaged resources - - - - - No flags provided - - - - - Delegates credentials to a remote peer. Do not delegate the credentials if the value is false. - - - - - Requests that the peer authenticate itself. If false, authenticate to the remote peer only. - - - - - Enables replay detection for messages protected with gss_wrap(3GSS) or gss_get_mic(3GSS). Do not attempt to detect replayed messages if false. - - - - - Enables detection of out-of-sequence protected messages. Do not attempt to detect out-of-sequence messages if false. - - - - - Requests that confidential service be made available by means of gss_wrap(3GSS). If false, no per-message confidential service is required. - - - - - Requests that integrity service be made available by means of gss_wrap(3GSS) or gss_get_mic(3GSS). If false, no per-message integrity service is required. - - - - - Does not reveal the initiator's identify to the acceptor. Otherwise, authenticate normally. - - - - - (Returned only) If true, the protection services specified by the states of GSS_C_CONF_FLAG and GSS_C_INTEG_FLAG are available - if the accompanying major status return value is either GSS_S_COMPLETE or GSS_S_CONTINUE_NEEDED. If false, the protection services are available - only if the accompanying major status return value is GSS_S_COMPLETE. - - - - - (Returned only) If true, the resultant security context may be transferred to other processes by means of a call to gss_export_sec_context(3GSS). If false, the security context cannot be transferred. - - - - - Credentials to use to establish the context - - - - - Acquires credentials for the supplied principal using the supplied password - - Username - Password - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires credentials for the supplied principal using material stored in a valid keytab - - Username - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires default credentials stored in the cache - - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Translates a name in internal form to a textual representation. - - Name in internal form (GSSAPI). - - - - size_t->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - - Converts a contiguous string name to GSS_API internal format - The gss_import_name() function converts a contiguous string name to internal form. In general, - the internal name returned by means of the output_name parameter will not be a mechanism name; the exception to this is if the input_name_type - indicates that the contiguous string provided by means of the input_name_buffer parameter is of type GSS_C_NT_EXPORT_NAME, in which case, - the returned internal name will be a mechanism name for the mechanism that exported the name. - - Status code returned by the underlying mechanism. - The gss_buffer_desc structure containing the name to be imported. - A gss_OID that specifies the format that the input_name_buffer is in. - The gss_name_t structure to receive the returned name in internal form. Storage associated with this name must be freed by the application after use with a call to gss_release_name(). - - The gss_import_name() function may return the following status codes: - GSS_S_COMPLETE: The gss_import_name() function completed successfully. - GSS_S_BAD_NAMETYPE: The input_name_type was unrecognized. - GSS_S_BAD_NAME: The input_name parameter could not be interpreted as a name of the specified type. - GSS_S_BAD_MECH: The input_name_type was GSS_C_NT_EXPORT_NAME, but the mechanism contained within the input_name is not supported. - - - - - Allows an application to acquire a handle for a pre-existing credential by name. GSS-API implementations must impose a local access-control - policy on callers of this routine to prevent unauthorized callers from acquiring credentials to which they are not entitled. - This routine is not intended to provide a "login to the network" function, as such a function would involve the creation of new credentials - rather than merely acquiring a handle to existing credentials - - Mechanism specific status code. - Name of principal whose credential should be acquired. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Acquires a credential for use in establishing a security context using a password. - - Mechanism specific status code. - Name of principal whose credential should be acquired. - The password. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred_with_password() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Obtains information about a credential. - - Mechanism specific status code. - A handle that refers to the target credential. - The name whose identity the credential asserts. - The number of seconds for which the credential remain valid. - If the credential has expired, this parameter is set to zero. - How the credential may be used. - Set of mechanisms supported by the credential. - - gss_init_sec_context() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: The referenced credentials could not be accessed. - GSS_S_DEFECTIVE_CREDENTIAL: The referenced credentials were invalid. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - If the lifetime parameter is not passed in as NULL, then its value is set to 0. - - - - - Initiates the establishment of a security context between the application and a remote peer. - Initially, the input_token parameter should be specified either as GSS_C_NO_BUFFER, or as a pointer to a gss_buffer_desc object whose length field - contains the value zero. The routine may return a output_token which should be transferred to the peer application, where the peer application will - present it to gss_accept_sec_context. If no token need be sent, gss_init_sec_context will indicate this by setting the length field of the output_token - argument to zero. To complete the context establishment, one or more reply tokens may be required from the peer application; if so, gss_init_sec_context - will return a status containing the supplementary information bit GSS_S_CONTINUE_NEEDED. In this case, gss_init_sec_context should be called again when the - reply token is received from the peer application, passing the reply token to gss_init_sec_context via the input_token parameters. - - Mechanism specific status code. - Handle for credentials claimed. Supply GSS_C_NO_CREDENTIAL to act as a default initiator principal. - If no default initiator is defined, the function will return GSS_S_NO_CRED. - Context handle for new context. Supply GSS_C_NO_CONTEXT for first call; use value returned by first call in continuation calls. - Resources associated with this context-handle must be released by the application after use with a call to gss_delete_sec_context(). - Name of target. - Object ID of desired mechanism. Supply GSS_C_NO_OID to obtain an implementation specific default. - Contains various independent flags, each of which requests that the context support a specific service option. - Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be logically-ORed together to form the bit-mask value. - Desired number of seconds for which context should remain valid. Supply 0 to request a default validity period. - Application-specified bindings. Allows application to securely bind channel identification information to the security context. - Specify GSS_C_NO_CHANNEL_BINDINGS if channel bindings are not used. - Token received from peer application. Supply GSS_C_NO_BUFFER, or a pointer to a buffer containing the value GSS_C_EMPTY_BUFFER on initial call. - Actual mechanism used. The OID returned via this parameter will be a pointer to static storage that should be treated as read-only; - In particular the application should not attempt to free it. Specify NULL if not required. - Token to be sent to peer application. If the length field of the returned buffer is zero, no token need be sent to the peer application. - Storage associated with this buffer must be freed by the application after use with a call to gss_release_buffer(). - Contains various independent flags, each of which indicates that the context supports a specific service option. - Specify NULL if not required. Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be - logically-ANDed with the ret_flags value to test whether a given option is supported by the context. - Number of seconds for which the context will remain valid. If the implementation does not support context expiration, - the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_init_sec_context() may return the following status codes: - - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTINUE_NEEDED: A token from the peer application is required to complete the context, and gss_init_sec_context() must be called again with that token. - GSS_S_DEFECTIVE_TOKEN: Consistency checks performed on the input_token failed. - GSS_S_DEFECTIVE_CREDENTIAL: Consistency checks performed on the credential failed. - GSS_S_NO_CRED: The supplied credentials are not valid for context acceptance, or the credential handle does not reference any credentials. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - GSS_S_BAD_BINDINGS: The input_token contains different channel bindings than those specified by means of the input_chan_bindings parameter. - GSS_S_BAD_SIG: The input_token contains an invalid MIC or a MIC that cannot be verified. - GSS_S_OLD_TOKEN: The input_token is too old. This is a fatal error while establishing context. - GSS_S_DUPLICATE_TOKEN: The input_token is valid, but it is a duplicate of a token already processed.This is a fatal error while establishing context. - GSS_S_NO_CONTEXT: The supplied context handle does not refer to a valid context. - GSS_S_BAD_NAMETYPE: The provided target_name parameter contains an invalid or unsupported name type. - GSS_S_BAD_NAME: The supplied target_name parameter is ill-formed. - GSS_S_BAD_MECH: The token received specifies a mechanism that is not supported by the implementation or the provided credential. - - - - - Allows an application to obtain a textual representation of a GSS-API status code, for display to the user or for logging purposes. - Since some status values may indicate multiple conditions, applications may need to call gss_display_status multiple times, - each call generating a single text string. The message_context parameter is used by gss_display_status to store state information about which - error messages have already been extracted from a given status_value; message_context must be initialized to 0 by the application prior to the first call, - and gss_display_status will return a non-zero value in this parameter if there are further messages to extract. - - Mechanism specific status code. - Status value to be converted. - GSS_C_GSS_CODE - status_value is a GSS status code. GSS_C_MECH_CODE - status_value is a mechanism status code. - Underlying mechanism (used to interpret a minor status value). Supply GSS_C_NO_OID to obtain the system default. - Should be initialized to zero by the application prior to the first call. - On return from gss_display_status(), a non-zero status_value parameter indicates that additional messages may be extracted from the status code via - subsequent calls to gss_display_status(), passing the same status_value, status_type, mech_type, and message_context parameters. - Textual interpretation of the status_value. Storage associated with this parameter must be freed by the application - after use with a call to gss_release_buffer(). - - gss_display_status() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Indicates that translation in accordance with an unsupported mechanism type was requested. - GSS_S_BAD_STATUS: The status value was not recognized, or the status type was neither GSS_C_GSS_CODE nor GSS_C_MECH_CODE. - - - - - Allows an application to obtain a textual representation of an opaque internal-form name for display purposes. - The syntax of a printable name is defined by the GSS-API implementation. - - Mechanism specific status code. - Name to be displayed. - Buffer to receive textual name string. - The type of the returned name. - - gss_display_name() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: input_name was ill-formed. - - - - - Free storage associated with a buffer. The storage must have been allocated by a GSS-API routine. - In addition to freeing the associated storage, the routine will zero the length field in the descriptor to which the buffer parameter refers, - and implementations are encouraged to additionally set the pointer field in the descriptor to NULL. Any buffer object returned by a GSS-API routine - may be passed to gss_release_buffer (even if there is no storage associated with the buffer). - - Mechanism-specific status code. - The storage associated with the buffer will be deleted. The gss_buffer_desc object will not be freed, - but its length field will be zeroed. - - The gss_release_buffer() function may return the following status codes: - GSS_S_COMPLETE: Successful completion - - - - - Delete a security context. gss_delete_sec_context will delete the local data structures associated with the specified security context, - and may generate an output_token, which when passed to the peer gss_process_context_token will instruct it to do likewise. - If no token is required by the mechanism, the GSS-API should set the length field of the output_token (if provided) to zero. - No further security services may be obtained using the context specified by context_handle. - - Mechanism specific status code. - Context handle identifying context to delete. After deleting the context, - the GSS-API will set this context handle to GSS_C_NO_CONTEXT. - - The gss_delete_sec_context() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CONTEXT: No valid context was supplied. - - - - - Free GSSAPI-allocated storage associated with an internal-form name. The name is set to GSS_C_NO_NAME on successful completion of this call. - - Mechanism specific status code. - The name to be deleted. - - The gss_release_name() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: The name parameter did not contain a valid name. - - - - - Informs GSS-API that the specified credential handle is no longer required by the application, and frees associated resources. - The cred_handle is set to GSS_C_NO_CREDENTIAL on successful completion of this call. - - Mechanism specific status code. - Opaque handle identifying credential to be released. If GSS_C_NO_CREDENTIAL is supplied, - the routine will complete successfully, but will do nothing. - - The gss_release_cred() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: Credentials could not be accessed. - - - - - Converts a message previously protected by gss_wrap back to a usable form, verifying the embedded MIC. - The conf_state parameter indicates whether the message was encrypted; the qop_state parameter indicates the strength of - protection that was used to provide the confidentiality and integrity services. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Protected message. - Buffer to receive unwrapped message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_DEFECTIVE_TOKEN: The token failed consistency checks. - GSS_S_BAD_SIG: The MIC was incorrect. - GSS_S_DUPLICATE_TOKEN: The token was valid, and contained a correct MIC for the message, but it had already been processed. - GSS_S_OLD_TOKEN: The token was valid, and contained a correct MIC for the message, but it is too old to check for duplication. - GSS_S_UNSEQ_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - a later token has already been received. - GSS_S_GAP_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - an earlier expected token has not yet been received. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - - - - - Attaches a cryptographic MIC and optionally encrypts the specified input_message. The output_message contains both the MIC and the message. - The qop_req parameter allows a choice between several cryptographic algorithms, if supported by the chosen mechanism. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Message to be protected. - Buffer to receive protected message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - GSS_S_BAD_QOP: The specified QOP is not supported by the mechanism. - - - - - MIT Kerberos 5 GSS Bindings Linux - - - - - Automatic dynamic disposable - - - - - Automatic dynamic disposable storing - - - - - Automatic dynamic disposable storing , will be called at dispose - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Automatic dynamic disposable - - - - - Original value, can be used with ref - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Returns stored value - - - - - Gets the Kerberos configuration from the "krb5.conf/krb5.ini" file - - - - - Memory pinned object - - - - - Create memory pinned object from - - Any class type - Value to pin - Pinned value - - - - Memory pinned object - - Any class type - - - - Original object value, can be used with ref - - - - - In memory address of the object - - - - - Create memory pinned object from - - Value to pin - - - - Returns address of object in memory - - - - - Returns original object value - - - - - DNS resolver that runs queries against a server. - - - - - Initializes a new instance of the class. - - - - - Gets the DNS SVR records of the service name that is provided. - - A list of s sorted as described in RFC2782. - - - - Sorts a list of DNS SRV records according to the sorting rules described in RFC2782. - - List of s to sort. - A new list of sorted s. - - - - Resets the DnsSrvResolver - - - - - Class that represents a DNS SRV record. - RFC 2782 (https://tools.ietf.org/html/rfc2782) - - - - - Gets the port. - - - - - Gets the priority. - - - - - Gets the target domain name. - - - - - Gets the weight. - - - - - Initializes a new instance of class. - - The port. - The priority. - The target. - The weight. - - - - Initializes a new instance of class. - - The DNS SRV record. - - - - Compare two objects. First, using their priority and - if both have the same, then using their weights. - - A to compare. - A to compare. - - - - - Initializes a new instance of the class from a . - - The DNS SRV record. - - - - This class is modeled after .NET Stopwatch. It provides better - performance (no system calls).It is however less precise than - .NET Stopwatch, measuring in milliseconds. It is adequate to use - when high-precision is not required (e.g for measuring IO timeouts), - but not for other tasks. - - - - - Wrapper around NetworkStream. - - MyNetworkStream is equivalent to NetworkStream, except - 1. It throws TimeoutException if read or write timeout occurs, instead - of IOException, to match behavior of other streams (named pipe and - shared memory). This property comes handy in TimedStream. - - 2. It implements workarounds for WSAEWOULDBLOCK errors, that can start - occuring after stream has times out. For a discussion about the CLR bug, - refer to http://tinyurl.com/lhgpyf. This error should never occur, as - we're not using asynchronous operations, but apparerntly it does occur - directly after timeout has expired. - The workaround is hinted in the URL above and implemented like this: - For each IO operation, if it throws WSAEWOULDBLOCK, we explicitely set - the socket to Blocking and retry the operation once again. - - - - - Determines whether the connection state is closed or open. - - true if connection is closed; otherwise, false. - - - - Set keepalive + timeout on socket. - - socket - keepalive timeout, in seconds - - - - Read a single quoted identifier from the stream - - - - - - - Helper class to encapsulate shared memory functionality - Also cares of proper cleanup of file mapping object and cew - - - - - Summary description for SharedMemoryStream. - - - - - By creating a private ctor, we keep the compiler from creating a default ctor - - - - - Mark - or + signs that are unary ops as no output - - - - - - Handles SSL connections for the Classic and X protocols. - - - - - Contains the connection options provided by the user. - - - - - A flag to establish how certificates are to be treated and validated. - - - - - Defines the supported TLS protocols. - - - - - Retrieves a collection containing the client SSL PFX certificates. - - Dependent on connection string settings. - Either file or store based certificates are used. - - - - Initiates the SSL connection. - - The base stream. - The encoding used in the SSL connection. - The connection string used to establish the connection. - A instance ready to initiate an SSL connection. - - - - Verifies the SSL certificates used for authentication. - - An object that contains state information for this validation. - The MySQL server certificate used to authenticate the remote party. - The chain of certificate authorities associated with the remote certificate. - One or more errors associated with the remote certificate. - true if no errors were found based on the selected SSL mode; false, otherwise. - - - - Gets the extension of the specified file. - - The path of the file. - Flag to indicate if the result should be converted to lower case. - The . character is ommited from the result. - - - - - Summary description for StreamCreator. - - - - - Set the keepalive timeout on the socket. - - The socket object. - The keepalive timeout, in seconds. - - - - Summary description for Version. - - - - - Provides functionality to read SSL PEM certificates and to perform multiple validations via Bouncy Castle. - - - - - Raises an exception if the specified connection option is null, empty or whitespace. - - The connection option to verify. - The name of the connection option. - - - - Reads the specified file as a byte array. - - The path of the file to read. - A byte array representing the read file. - - - - Reads the SSL certificate file. - - The path to the certificate file. - A instance representing the SSL certificate file. - - - - Reads the SSL certificate key file. - - The path to the certificate key file. - A instance representing the SSL certificate key file. - - - - Verifies that the certificate has not yet expired. - - The certificate to verify. - - - - Verifies a certificate CA status. - - The certificate to validate. - A flag indicating the expected CA status. - - - - Verifies that the certificate was signed using the private key that corresponds to the specified public key - - The client side certificate containing the public key. - The server certificate. - - - - Verifies that no SSL policy errors regarding the identitfy of the host were raised. - - A instance set with the raised SSL errors. - - - - Verifies that the issuer matches the CA by comparing the CA certificate issuer and the server certificate issuer. - - The CA certificate. - The server certificate. - - - - - Gets and sets the host list. - - - - - Gets the active host. - - - - - Active host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - object that represents the next available host. - - - - Implements common elements that allow to manage the hosts available for client side failover. - - - - - Gets and sets the failover group which consists of a host list. - - - - - Resets the manager. - - - - - Sets the host list to be used during failover operations. - - The host list. - The failover method. - - - - Attempts to establish a connection to a host specified from the list. - - The original connection string set by the user. - An out parameter that stores the updated connection string. - A object in case this is a pooling scenario. - A flag indicating if the default port is used in the connection. - An instance if the connection was succesfully established, a exception is thrown otherwise. - - - - - Creates a if more than one host is found. - - A string containing an unparsed list of hosts. - true if the connection is X Protocol; otherwise false. - true if the connection data is a URI; otherwise false. - The number of hosts found, -1 if an error was raised during parsing. - - - - Creates a object based on the provided parameters. - - The host string that can be a simple host name or a host name and port. - The priority of the host. - The port number of the host. - true if the connection data is a URI; otherwise false. - - - - - Attempts the next host in the list. Moves to the first element if the end of the list is reached. - - - - - Determines the next host on which to attempt a connection by checking the value of the Priority property in descending order. - - - - - Determines the next host on which to attempt a connection randomly. - - - - - Depicts a host which can be failed over to. - - - - - Gets and sets the name or address of the host. - - - - - Gets and sets the port number. - - - - - Gets a value between 0 and 100 which represents the priority of the host. - - - - - Flag to indicate if this host is currently being used. - - - - - Flag to indicate if this host has been attempted to connection. - - - - - Time since the host has been demoted. - - - - - Initializes a object. - - The host. - The port. - The priority. - - - - Compares two objects of type . - - FailoverServer object to compare. - True if host properties are the same. Otherwise, false. - - - - Manages the hosts available for client side failover using the Random Failover method. - The Random Failover method attempts to connect to the hosts specified in the list randomly until all the hosts have been attempted. - - - - - The initial host taken from the list. - - - - - The host for the current connection attempt. - - - - - Random object to get the next host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - Manages the hosts available for client side failover using the Sequential Failover method. - The Sequential Failover method attempts to connect to the hosts specified in the list one after another until the initial host is reached. - - - - - The initial host taken from the list. - - - - - The index of the current host. - - - - - The host for the current connection attempt. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter is null. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter's SelectCommand is null. - - - - - Looks up a localized string similar to Invalid attempt to access a field before calling Read(). - - - - - Looks up a localized string similar to Authentication to host '{0}' for user '{1}' using method '{2}' failed with message: {3}. - - - - - Looks up a localized string similar to Authentication method '{0}' not supported by any of the available plugins.. - - - - - Looks up a localized string similar to Authentication plugin '{0}' is currently not supported.. - - - - - Looks up a localized string similar to Version string not in acceptable format. - - - - - Looks up a localized string similar to The buffer cannot be null. - - - - - Looks up a localized string similar to The buffer is not large enough. - - - - - Looks up a localized string similar to Canceling an executing query requires MySQL 5.0 or higher.. - - - - - Looks up a localized string similar to Canceling an active query is only supported on MySQL 5.0.0 and above. . - - - - - Looks up a localized string similar to Parameters can only be derived for commands using the StoredProcedure command type.. - - - - - Looks up a localized string similar to MySqlCommandBuilder does not support multi-table statements. - - - - - Looks up a localized string similar to MySqlCommandBuilder cannot operate on tables with no unique or key columns. - - - - - Looks up a localized string similar to Chaos isolation level is not supported . - - - - - Looks up a localized string similar to Clear-password authentication is not supported over insecure channels.. - - - - - Looks up a localized string similar to The CommandText property has not been properly initialized.. - - - - - Looks up a localized string similar to Compression is not supported.. - - - - - Looks up a localized string similar to The connection is already open.. - - - - - Looks up a localized string similar to Connection unexpectedly terminated.. - - - - - Looks up a localized string similar to Connection must be valid and open. - - - - - Looks up a localized string similar to The connection is not open.. - - - - - Looks up a localized string similar to The connection property has not been set or is null.. - - - - - Looks up a localized string similar to Could not find specified column in results: {0}. - - - - - Looks up a localized string similar to Count cannot be negative. - - - - - Looks up a localized string similar to SetLength is not a valid operation on CompressedStream. - - - - - Looks up a localized string similar to The given value was not in a supported format.. - - - - - Looks up a localized string similar to There is already an open DataReader associated with this Connection which must be closed first.. - - - - - Looks up a localized string similar to The default connection encoding was not found. Please report this as a bug along with your connection string and system details.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not currently support distributed transactions.. - - - - - Looks up a localized string similar to Specifying multiple host names with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Specifying a port number with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Using Unix domain sockets with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Unable to locate any hosts for {0}.. - - - - - Looks up a localized string similar to Connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to SSL connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to Encoding error during validation.. - - - - - Looks up a localized string similar to Error creating socket connection. - - - - - Looks up a localized string similar to Verify that user '{0}'@'{1}' has enough privileges to execute.. - - - - - Looks up a localized string similar to Fatal error encountered during command execution.. - - - - - Looks up a localized string similar to Fatal error encountered during data read.. - - - - - Looks up a localized string similar to Fatal error encountered attempting to read the resultset.. - - - - - Looks up a localized string similar to File based certificates are only supported when connecting to MySQL Server 5.1 or greater.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a certificate.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a key.. - - - - - Looks up a localized string similar to Failed to read file at the specified location.. - - - - - Looks up a localized string similar to No file path has been provided for the connection option {0}.. - - - - - Looks up a localized string similar to From index and length use more bytes than from contains. - - - - - Looks up a localized string similar to From index must be a valid index inside the from buffer. - - - - - Looks up a localized string similar to Call to GetHostEntry failed after {0} while querying for hostname '{1}': SocketErrorCode={2}, ErrorCode={3}, NativeErrorCode={4}.. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from server.. - - - - - Looks up a localized string similar to Value has an unsupported format.. - - - - - Looks up a localized string similar to An incorrect response was received from the server.. - - - - - Looks up a localized string similar to Index and length use more bytes than to has room for. - - - - - Looks up a localized string similar to Index must be a valid position in the buffer. - - - - - Looks up a localized string similar to The provided key is invalid.. - - - - - Looks up a localized string similar to Certificate with Thumbprint '{0}' not found.. - - - - - Looks up a localized string similar to You have specified an invalid column ordinal.. - - - - - Looks up a localized string similar to The requested value '{0}' is invalid for the given keyword '{1}'.. - - - - - Looks up a localized string similar to The host name or IP address is invalid.. - - - - - Looks up a localized string similar to Microsecond must be a value between 0 and 999999.. - - - - - Looks up a localized string similar to Millisecond must be a value between 0 and 999. For more precision use Microsecond.. - - - - - Looks up a localized string similar to No other SSL options are accepted when SSL Mode is set to None.. - - - - - Looks up a localized string similar to Either provide a valid path for 'allowloadlocalinfileinpath' or enable 'allowloadlocalinfile'.. - - - - - Looks up a localized string similar to Procedure or function '{0}' cannot be found in database '{1}'.. - - - - - Looks up a localized string similar to The certificate is invalid.. - - - - - Looks up a localized string similar to Unable to validate the signature.. - - - - - Looks up a localized string similar to Unable to verify the signature.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to Option "tls-version" can not be specified when SSL connections are disabled.. - - - - - Looks up a localized string similar to '{0}' not recognized as a valid TLS protocol version (should be one of TLSv1, TLSv1.1, TLSv1.2{1}).. - - - - - Looks up a localized string similar to '{0}' is an illegal value for a boolean option.. - - - - - Looks up a localized string similar to Keyword does not allow null values.. - - - - - Looks up a localized string similar to Option not supported.. - - - - - Looks up a localized string similar to Server asked for stream in response to LOAD DATA LOCAL INFILE, but the functionality is disabled by the client setting 'allowlocalinfile' to 'false'.. - - - - - Looks up a localized string similar to Mixing named and unnamed parameters is not allowed.. - - - - - Looks up a localized string similar to INTERNAL ERROR: More than one output parameter row detected.. - - - - - Looks up a localized string similar to Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.. - - - - - Looks up a localized string similar to NamedPipeStream does not support seeking. - - - - - Looks up a localized string similar to NamedPipeStream doesn't support SetLength. - - - - - Looks up a localized string similar to The new value must be a MySqlParameter object.. - - - - - Looks up a localized string similar to Invalid attempt to call NextResult when the reader is closed.. - - - - - Looks up a localized string similar to When calling stored procedures and 'Use Procedure Bodies' is false, all parameters must have their type explicitly set.. - - - - - Looks up a localized string similar to Nested transactions are not supported.. - - - - - Looks up a localized string similar to The host {0} does not support SSL connections.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows.. - - - - - Looks up a localized string similar to Cannot retrieve Windows identity for current user. Connections that use IntegratedSecurity cannot be pooled. Use either 'ConnectionReset=true' or 'Pooling=false' in the connection string to fix.. - - - - - Looks up a localized string similar to The object is not open or has been disposed.. - - - - - Looks up a localized string similar to The offset cannot be negative. - - - - - Looks up a localized string similar to Offset must be a valid position in buffer. - - - - - Looks up a localized string similar to Authentication with old password no longer supported, use 4.1 style passwords.. - - - - - Looks up a localized string similar to The option '{0}' is not currently supported.. - - - - - Looks up a localized string similar to Parameter '{0}' has already been defined.. - - - - - Looks up a localized string similar to Parameter cannot have a negative value. - - - - - Looks up a localized string similar to Parameter cannot be null. - - - - - Looks up a localized string similar to Parameter '{0}' can't be null or empty.. - - - - - Looks up a localized string similar to Parameter index was not found in Parameter Collection.. - - - - - Looks up a localized string similar to Parameter is invalid.. - - - - - Looks up a localized string similar to Parameter '{0}' must be defined.. - - - - - Looks up a localized string similar to Parameter '{0}' was not found during prepare.. - - - - - Looks up a localized string similar to Parameter can't be null or empty.. - - - - - Looks up a localized string similar to Password must be valid and contain length characters. - - - - - Looks up a localized string similar to This category includes a series of counters for MySQL. - - - - - Looks up a localized string similar to .NET Data Provider for MySQL. - - - - - Looks up a localized string similar to The number of times a procedures metadata had to be queried from the server.. - - - - - Looks up a localized string similar to Hard Procedure Queries. - - - - - Looks up a localized string similar to The number of times a procedures metadata was retrieved from the client-side cache.. - - - - - Looks up a localized string similar to Soft Procedure Queries. - - - - - Looks up a localized string similar to same name are not supported.. - - - - - Looks up a localized string similar to MySQL Server {0} dos not support query attributes.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not support query attributes with prepared statements for this version of MySQL Server.. - - - - - Looks up a localized string similar to Packets larger than max_allowed_packet are not allowed.. - - - - - Looks up a localized string similar to Reading from the stream has failed.. - - - - - Looks up a localized string similar to Invalid attempt to read a prior column using SequentialAccess. - - - - - Looks up a localized string similar to Replicated connections allow only readonly statements.. - - - - - Looks up a localized string similar to Attempt to connect to '{0}' server failed.. - - - - - Looks up a localized string similar to No available server found.. - - - - - Looks up a localized string similar to Replication group '{0}' not found.. - - - - - Looks up a localized string similar to Replicated server not found: '{0}'. - - - - - Looks up a localized string similar to Routine '{0}' cannot be found. Either check the spelling or make sure you have sufficient rights to execute the routine.. - - - - - Looks up a localized string similar to Attempt to call stored function '{0}' without specifying a return parameter. - - - - - Looks up a localized string similar to Retrieval of the RSA public key is not enabled for insecure connections.. - - - - - Looks up a localized string similar to Connector/NET no longer supports server versions prior to 5.0. - - - - - Looks up a localized string similar to Snapshot isolation level is not supported.. - - - - - Looks up a localized string similar to Socket streams do not support seeking. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from procedure cache.. - - - - - Looks up a localized string similar to Stored procedures are not supported on this version of MySQL. - - - - - Looks up a localized string similar to The certificate authority (CA) does not match.. - - - - - Looks up a localized string similar to The host name does not match the name on the certificate.. - - - - - Looks up a localized string similar to The certificate is not a certificate authority (CA).. - - - - - Looks up a localized string similar to SSL Connection error.. - - - - - Looks up a localized string similar to Connection protocol '{0}' does not support SSL connections.. - - - - - Looks up a localized string similar to The stream has already been closed. - - - - - Looks up a localized string similar to The stream does not support reading. - - - - - Looks up a localized string similar to The stream does not support writing. - - - - - Looks up a localized string similar to String can't be empty.. - - - - - Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. - - - - - Looks up a localized string similar to error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} seconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to This connection is using {0}, which is now deprecated and will be removed in a future release of Connector/NET.. - - - - - Looks up a localized string similar to TLSv1.3 is supported in .NET Framework 4.8 or .NET Core 3.0.. - - - - - Looks up a localized string similar to No supported TLS protocol version found in the 'tls-versions' list.. - - - - - Looks up a localized string similar to {0}: Connection Closed. - - - - - Looks up a localized string similar to Unable to trace. There are more than Int32.MaxValue connections in use.. - - - - - Looks up a localized string similar to {0}: Error encountered during row fetch. Number = {1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Connection Opened: connection string = '{1}'. - - - - - Looks up a localized string similar to {0}: Error encountered attempting to open result: Number={1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Query Closed. - - - - - Looks up a localized string similar to {0}: Query Normalized: {2}. - - - - - Looks up a localized string similar to {0}: Query Opened: {2}. - - - - - Looks up a localized string similar to {0}: Resultset Opened: field(s) = {1}, affected rows = {2}, inserted id = {3}. - - - - - Looks up a localized string similar to {0}: Resultset Closed. Total rows={1}, skipped rows={2}, size (bytes)={3}. - - - - - Looks up a localized string similar to {0}: Set Database: {1}. - - - - - Looks up a localized string similar to {0}: Statement closed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement executed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement prepared: sql='{1}', statement id={2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query is using a bad index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The field '{2}' was converted to the following types: {3}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query does not use an index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The following columns were not accessed: {2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Skipped {2} rows. Consider a more focused query.. - - - - - Looks up a localized string similar to {0}: MySql Warning: Level={1}, Code={2}, Message={3}. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseCommandInterceptor. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseExceptionInterceptor. - - - - - Looks up a localized string similar to Unable to connect to any of the specified MySQL hosts.. - - - - - Looks up a localized string similar to Unable to create plugin for authentication method '{0}'. Please see inner exception for details.. - - - - - Looks up a localized string similar to Unable to derive stored routine parameters. The 'Parameters' information schema table is not available and access to the stored procedure body has been disabled.. - - - - - Looks up a localized string similar to Unable to enable query analysis. Be sure the MySql.Data.EMTrace assembly is properly located and registered.. - - - - - Looks up a localized string similar to An error occured attempting to enumerate the user-defined functions. Do you have SELECT privileges on the mysql.func table?. - - - - - Looks up a localized string similar to Unable to execute stored procedure '{0}'.. - - - - - Looks up a localized string similar to There was an error parsing the foreign key definition.. - - - - - Looks up a localized string similar to Error encountered reading the RSA public key.. - - - - - Looks up a localized string similar to Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string.. - - - - - Looks up a localized string similar to Unable to start a second async operation while one is running.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows. - - - - - Looks up a localized string similar to Unknown authentication method '{0}' was requested.. - - - - - Looks up a localized string similar to Unknown connection protocol. - - - - - Looks up a localized string similar to Trying to upload a file from outside the path set on 'allowloadlocalinfileinpath' is invalid.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to The requested column value could not be treated as or conveted to a Guid.. - - - - - Looks up a localized string similar to Windows authentication connections are not supported on {0}. - - - - - Looks up a localized string similar to Writing to the stream failed.. - - - - - Looks up a localized string similar to Parameter '{0}' is not found but a parameter with the name '{1}' is found. Parameter names must include the leading parameter marker.. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Appdata path is not defined.. - - - - - Looks up a localized string similar to Authentication failed using MYSQL41 and SHA256_MEMORY. Check the user name and password or try using a secure connection.. - - - - - Looks up a localized string similar to You can't get more sessions because Client is closed.. - - - - - Looks up a localized string similar to Client option '{0}' does not support value '{1}'.. - - - - - Looks up a localized string similar to Client option '{0}' is not recognized as valid.. - - - - - Looks up a localized string similar to {0} '{1}' does not exist in schema '{2}'.. - - - - - Looks up a localized string similar to Compression requested but the compression algorithm negotiation failed.. - - - - - Looks up a localized string similar to Compression using {0} is not supported.. - - - - - Looks up a localized string similar to Failed to load libzstd.dll. Removing zstd_stream from the client supported compression algorithms.. - - - - - Looks up a localized string similar to Compression using {0} is not supported in .NET Framework.. - - - - - Looks up a localized string similar to The connection property 'compression' acceptable values are: 'preferred', 'required' or 'disabled'. The value '{0}' is not acceptable.. - - - - - Looks up a localized string similar to Compression is not enabled.. - - - - - Looks up a localized string similar to Compression requested but the server does not support it.. - - - - - Looks up a localized string similar to There are still decompressed messages pending to be processed.. - - - - - Looks up a localized string similar to '{0}' cannot be set to false with DNS SRV lookup enabled.. - - - - - Looks up a localized string similar to Scheme '{0}' is not valid.. - - - - - Looks up a localized string similar to Duplicate key '{0}' used in "connection-attributes".. - - - - - Looks up a localized string similar to Key name in connection attribute cannot be an empty string.. - - - - - Looks up a localized string similar to At least one option must be specified.. - - - - - Looks up a localized string similar to This feature is currently not supported.. - - - - - Looks up a localized string similar to This functionality is only supported in MySQL {0} and higher.. - - - - - Looks up a localized string similar to Collation with id '{0}' not found.. - - - - - Looks up a localized string similar to The value of "connection-attributes" must be either a boolean or a list of key-value pairs.. - - - - - Looks up a localized string similar to Connection Data is incorrect.. - - - - - Looks up a localized string similar to The connection string is invalid.. - - - - - Looks up a localized string similar to '{0}' is not a valid connection string attribute.. - - - - - Looks up a localized string similar to The connection timeout value must be a positive integer (including 0).. - - - - - Looks up a localized string similar to Decimal (BCD) format is invalid.. - - - - - Looks up a localized string similar to Field type with name '{0}' not found.. - - - - - Looks up a localized string similar to Index type with name '{0}' not found.. - - - - - Looks up a localized string similar to The value provided is not a valid JSON document. {0}. - - - - - Looks up a localized string similar to {0} is not a valid column name in the row.. - - - - - Looks up a localized string similar to {0} is not a valid index for the row.. - - - - - Looks up a localized string similar to Session state is not valid.. - - - - - Looks up a localized string similar to Invalid Uri . - - - - - Looks up a localized string similar to Invalid uri query value. - - - - - Looks up a localized string similar to Key names in "connection-attributes" cannot start with "_".. - - - - - Looks up a localized string similar to Json configuration must contain 'uri' or 'host' but not both.. - - - - - Looks up a localized string similar to Keyword '{0}' not found.. - - - - - Looks up a localized string similar to Keyword not supported.. - - - - - Looks up a localized string similar to Field '{0}' is mandatory.. - - - - - Looks up a localized string similar to Missed required schema option.. - - - - - Looks up a localized string similar to More than one document id was generated. Please use the DocumentIds property instead.. - - - - - Looks up a localized string similar to There is no data at index {0}. - - - - - Looks up a localized string similar to No 'host' has been specified.. - - - - - Looks up a localized string similar to No more data in resultset.. - - - - - Looks up a localized string similar to Object '{0}' not found. - - - - - Looks up a localized string similar to No placeholders.. - - - - - Looks up a localized string similar to Connection closed. Reason: connection idle was too long. - - - - - Looks up a localized string similar to Connection closed. Reason: connection was killed by a different session. - - - - - Looks up a localized string similar to Connection closed. Reason: server was shutdown. - - - - - Looks up a localized string similar to {0} must be a value greater than 0.. - - - - - Looks up a localized string similar to Path not found '{0}'.. - - - - - Looks up a localized string similar to Queue timeout expired. The timeout period elapsed prior to getting a session from the pool.. - - - - - Looks up a localized string similar to Providing a port number as part of the host address isn't supported when using connection strings in basic format or anonymous objects. Use URI format instead.. - - - - - Looks up a localized string similar to You must either assign no priority to any of the hosts or give a priority for every host.. - - - - - Looks up a localized string similar to The priority must be between 0 and 100.. - - - - - Looks up a localized string similar to ProgramData path is not defined.. - - - - - Looks up a localized string similar to Replacement document has an '_id' that is - different from the matched document.. - - - - - Looks up a localized string similar to The server doesn't support the requested operation. Please update the MySQL Server, client library, or both.. - - - - - Looks up a localized string similar to The process of closing the resultset and resulted in results being lost.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} milliseconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout was exceeded for each selected server.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout of {0} milliseconds was exceeded.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout was exceeded.. - - - - - Looks up a localized string similar to Unable to connect to any specified host.. - - - - - Looks up a localized string similar to Unable to read or decode data value.. - - - - - Looks up a localized string similar to Unable to open a session.. - - - - - Looks up a localized string similar to Unexpected end of packet found while reading data values. - - - - - Looks up a localized string similar to Field name '{0}' is not allowed.. - - - - - Looks up a localized string similar to Unknown placeholder :{0}. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Summary description for MySqlUInt64. - - - - - An exception thrown by MySQL when a type conversion does not succeed. - - - - Initializes a new instance of the class with a specified error message. - Message describing the error. - - - - Represents a datetime data type object in a MySql database. - - - - - Defines whether the UTF or local timezone will be used. - - - - - Constructs a new MySqlDateTime object by setting the individual time properties to - the given values. - - The year to use. - The month to use. - The day to use. - The hour to use. - The minute to use. - The second to use. - The microsecond to use. - - - - Constructs a new MySqlDateTime object by using values from the given object. - - The object to copy. - - - - Constructs a new MySqlDateTime object by copying the current value of the given object. - - The MySqlDateTime object to copy. - - - - Enables the contruction of a MySqlDateTime object by parsing a string. - - - - - Indicates if this object contains a value that can be represented as a DateTime - - - - Returns the year portion of this datetime - - - Returns the month portion of this datetime - - - Returns the day portion of this datetime - - - Returns the hour portion of this datetime - - - Returns the minute portion of this datetime - - - Returns the second portion of this datetime - - - - Returns the milliseconds portion of this datetime - expressed as a value between 0 and 999 - - - - - Returns the microseconds portion of this datetime (6 digit precision) - - - - - Returns true if this datetime object has a null value - - - - - Retrieves the value of this as a DateTime object. - - - - Returns this value as a DateTime - - - Returns a MySQL specific string representation of this value - - - - - - - - - Represents a decimal data type object in a MySql database. - - - - - Gets a boolean value signaling if the type is null. - - - - - Gets or sets the decimal precision of the type. - - - - - Gets or sets the scale of the type. - - - - - Gets the decimal value associated to this type. - - - - - Converts this decimal value to a double value. - - The value of this type converted to a dobule value. - - - - Represents a geometry data type object in a MySql database. - - - - - Gets the x coordinate. - - - - - Gets the y coordinate. - - - - - Gets the SRID value. - - - - - Gets a boolean value that signals if the type is null. - - - - - Gets the value associated to this type. - - - - - Gets the value associated to this type. - - - - Returns the Well-Known Text representation of this value - POINT({0} {1})", longitude, latitude - http://dev.mysql.com/doc/refman/4.1/en/gis-wkt-format.html - - - - Get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - - - - Try to get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - Out mysqlGeometryValue - - - - Sets the DSInfo when GetSchema is called for the DataSourceInformation collection. - - - - - Gets the well-known text representation of the geomtry object. - - A string representation of the WKT. - - - - Enables X Protocol packets from the network stream to be retrieved and processed - - - - - The instance of the stream that holds the network connection with MySQL Server. - - - - - This field is used to enable compression and decompression actions in the communication channel. - - - - - A Queue to store the pending packets removed from the - - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - The XCompressionController to be used for compression actions. - - - - Identifies the kind of packet received over the network and execute - the corresponding processing. - - - - - Reads data from the network stream and create a packet of type . - - A . - - - - Sends the read/write actions to the MyNetworkStream class. - - - - - Reads the pending packets present in the network channel and processes them accordingly. - - - - - Implementation of EXTERNAL authentication type. - - - - - Implementation of MySQL41 authentication type. - - - - - Implementation of PLAIN authentication type. - - - - - Compares two Guids in string format. - - The first string to compare. - The first string to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Compares two objects. - - The first to compare. - The second to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Provides functionality for loading unmanaged libraries. - - - - - Loads the specified unmanaged library from the embedded resources. - - The application name. - The library name. - - - - Provides support for configuring X Protocol compressed messages. - - - - - The capabilities sub-key used to specify the compression algorithm. - - - - - The capabilities key used to specify the compression capability. - - - - - Messages with a value lower than this threshold will not be compressed. - - - - - Default value for enabling or disabling combined compressed messages. - - - - - Default value for the maximum number of combined compressed messages contained in a compression message. - - - - - The capabilities sub-key used to specify if combining compressed messages is permitted. - - - - - The capabilities sub-key used to specify the maximum number of compressed messages contained in a compression message. - - - - - Buffer used to store the data received from the server. - - - - - Deflate stream used for compressing data. - - - - - Deflate stream used for decompressing data. - - - - - Flag indicating if the initialization is for compression or decompression. - - - - - Stores the communication packet generated the last time ReadNextBufferedMessage method was called. - - - - - Indicates if the libzstd.dll has been loaded. - - - - - Stream used to store multiple X Protocol messages. - - - - - ZStandard stream used for decompressing data. - - - - - Main constructor used to set the compression algorithm and initialize the list of messages to - be compressed by the client. - - The compression algorithm to use. - Flag indicating if the initialization is for compression or decompression. - - - - Gets or sets the list of messages that should be compressed by the client when compression is enabled. - - - - - Gets or sets the compression algorithm. - - - - - Flag indicating if compression is enabled. - - - - - Flag indicating if the last decompressed message contains multiple messages. - - - - - General method used to compress data using the compression algorithm defined in the constructor. - - The data to compress. - A compressed byte array. - - - - Compresses data using the deflate_stream algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the lz4_message algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the zstd_stream algorithm. - - The data to compress. - A compressed byte array. - - - - General method used to decompress data using the compression algorithm defined in the constructor. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the deflate_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the lz4_message compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the zstd_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Closes and disposes of any open streams. - - - - - Gets the byte array representing the next X Protocol frame that is stored in cache. - - A byte array representing an X Protocol frame. - - - - Gets a representing the next X Protocol frame that is stored in cache. - - A with the next X Protocol frame. - - - - Loads the libzstd.dll assembly. - - - - - Constructor that sets the stream used to read or write data. - - The stream used to read or write data. - - - - Constructor that sets the stream used to read or write data and the compression controller. - - The stream used to read or write data. - The compression controller. - - - - Gets or sets the compression controller uses to manage compression operations. - - - - - Writes X Protocol frames to the X Plugin. - - The integer representation of the client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Writes X Protocol frames to the X Plugin. - - The client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Reads X Protocol frames incoming from the X Plugin. - - A instance representing the X Protocol frame that was read. - - - - Abstract class for the protocol base operations in client/server communication. - - - - - Expression parser for MySQL-X protocol. - - - string being parsed. - - - Token stream produced by lexer. - - - Parser's position in token stream. - - - Mapping of names to positions for named placeholders. Used for both string values ":arg" and numeric values ":2". - - - Number of positional placeholders. - - - Are relational columns identifiers allowed? - - - Token types used by the lexer. - - - Token. Includes type and string value of the token. - - - Mapping of reserved words to token types. - - - Does the next character equal the given character? (respects bounds) - - - Helper function to match integer or floating point numbers. This function should be called when the position is on the first character of the number (a - digit or '.'). - - @param i The current position in the string - @return the next position in the string after the number. - - - Lexer for MySQL-X expression language. - - - Assert that the token at pos is of type type. - - - Does the current token have type `t'? - - - Does the next token have type `t'? - - - Does the token at position `pos' have type `t'? - - - Consume token. - - @return the string value of the consumed token - - - Parse a paren-enclosed expression list. This is used for function params or IN params. - - @return a List of expressions - - - Parse a function call of the form: IDENTIFIER PAREN_EXPR_LIST. - - @return an Expr representing the function call. - - - Parse an identifier for a function call: [schema.]name - - - Parse a document path member. - - - Parse a document path array index. - - - Parse a JSON-style document path, like WL#7909, but prefix by @. instead of $. - - - Parse a document field. - - - Parse a column identifier (which may optionally include a JSON document path). - - - Build a unary operator expression. - - - Parse an atomic expression. (c.f. grammar at top) - - - Parse a left-associated binary operator. - - @param types - The token types that denote this operator. - @param innerParser - The inner parser that should be called to parse operands. - @return an expression tree of the binary operator or a single operand - - - Parse the entire string as an expression. - - @return an X-protocol expression tree - - - - Parse an ORDER BY specification which is a comma-separated list of expressions, each may be optionally suffixed by ASC/DESC. - - - Parse a SELECT projection which is a comma-separated list of expressions, each optionally suffixed with a target alias. - - - Parse an INSERT field name. - @todo unit test - - - Parse an UPDATE field which can include can document paths. - - - Parse a document projection which is similar to SELECT but with document paths as the target alias. - - - Parse a list of expressions used for GROUP BY. - - - @return the number of positional placeholders in the expression. - - - @return a mapping of parameter names to positions. - - - Proto-buf helper to build a LITERAL Expr with a Scalar NULL type. - - - Proto-buf helper to build a LITERAL Expr with a Scalar DOUBLE type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar SINT (signed int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar UINT (unsigned int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar STRING type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar OCTETS type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar BOOL type (wrapped in Any). - - - Wrap an Any value in a LITERAL expression. - - - Build an Any with a string value. - - - - Parses an anonymous object into a dictionary. - - The object to parse. - A dictionary if the provided object is an anonymous object; otherwise, null. - - - List of operators which will be serialized as infix operators. - - - Scalar to string. - - - JSON document path to string. - - - Column identifier (or JSON path) to string. - - - Function call to string. - - - Create a string from a list of (already stringified) parameters. Surround by parens and separate by commas. - - - Convert an operator to a string. Includes special cases for chosen infix operators (AND, OR) and special forms such as LIKE and BETWEEN. - - - Escape a string literal. - - - Quote a named identifer. - - - Serialize an expression to a string. - - - - Build the message to be sent to MySQL Server to execute statement "Create" or "Modify" collection with schema options - - The namespace - The name of the command to be executed on MySql Server - Array of KeyValuePairs with the parameters required to build the message - void. - - - - Sends the delete documents message - - - - - Sends the CRUD modify message - - - - - Class implementation for a default communication kind. - - - - - Constructor method for the communication routing service - - A MySqlXConnectionStringBuilder setted with the information to use in the connection - - - - Gets the current connection base on the connection mode - - One of the values of ConnectionMode Offline, ReadOnly, WriteOnly, ReadWrite - - - - - Abstract class used to define the kind of server in environments with multiple types of distributed systems. - - - - - Main class for parsing json strings. - - - - - Initializes a new instance of the JsonParser class. - - - - - Parses the received string into a dictionary. - - The string to parse. - A object that represents the parsed string. - - - - Abstract class to manage and encapsulate one or more actual connections. - - - - - Creates a new session object with the values of the settings parameter. - - Settings to be used in the session object - - - - Sets the connection's charset default collation. - - The opened session. - The character set. - - - - Gets the version of the server. - - An instance of containing the server version. - - - - Gets the thread Id of the connection. - - Thread Id - - - - Implementation class for object that manages low-level work of queuing tasks onto threads. - - - - - Implementation class of InternalSession to manage connections using the Xprotocol type object. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Reorder the list of algorithms retrieved from server to the preferred order - - - - - Validate the algorithms given in the connection string are valid compared with enum CompressionAlgorithms - - - - - Negotiates compression capabilities with the server. - - An array containing the compression algorithms supported by the server. - An array containing the compression algorithms given by user/client. - - - - Prepare the dictionary of arguments required to create a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Prepare the dictionary of arguments required to Modify a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to Modify the collection. - - - - - Gets the compression algorithm being used to compress or decompress data. - - Flag to indicate if the compression algorithm should be - retrieved from the reader or writer controller. - The name of the compression algorithm being used if any. - null if no compression algorithm is being used. - - - - Represents a base class for a Session. - - - - - Flag to set if prepared statements are supported. - - - - - Gets the connection settings for this session. - - - - - Gets the currently active schema. - - - - - Gets the default schema provided when creating the session. - - - - - Gets the connection uri representation of the connection options provided during the creation of the session. - - - - - Initializes a new instance of the BaseSession class based on the specified connection string. - - The connection used to create the session. - A object. - is null. - Unable to parse the when - in URI format. - - When using Unix sockets the protocol=unix or protocol=unixsocket connection option is required. - This will enable elements passed in the server connection option to be treated as Unix sockets. The user is also required - to explicitly set sslmode to none since X Plugin does not support SSL when using Unix sockets. Note that - protocol=unix and protocol=unixsocket are synonyms. -   - Multiple hosts can be specified as part of the , - which enables client-side failover when trying to establish a connection. -   - Connection URI examples: - - mysqlx://test:test@[192.1.10.10,localhost] - - mysqlx://test:test@[192.1.10.10,127.0.0.1] - - mysqlx://root:@[../tmp/mysqlx.sock,/tmp/mysqld.sock]?protocol=unix&sslmode=none - - mysqlx://test:test@[192.1.10.10:33060,127.0.0.1:33060] - - mysqlx://test:test@[192.1.10.10,120.0.0.2:22000,[::1]:33060]/test?connectiontimeout=10 - - mysqlx://test:test@[(address=server.example,priority=20),(address=127.0.0.1,priority=100)] - - mysqlx://test:test@[(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25)] - -   - Connection string examples: - - server=10.10.10.10,localhost;port=33060;uid=test;password=test; - - host=10.10.10.10,192.101.10.2,localhost;port=5202;uid=test;password=test; - - host=./tmp/mysqld.sock,/var/run/mysqldx.sock;port=5202;uid=root;protocol=unix;sslmode=none; - - server=(address=server.example,priority=20),(address=127.0.0.1,priority=100);port=33060;uid=test;password=test; - - server=(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25);port=33060;uid=test;password=test; - -   - Failover methods - - Sequential: Connection attempts will be performed in a sequential order, that is, one after another until - a connection is successful or all the elements from the list have been tried. - - - Priority based: If a priority is provided, the connection attemps will be performed in descending order, starting - with the host with the highest priority. Priority must be a value between 0 and 100. Additionally, it is required to either - give a priority for every host or no priority to any host. - - - - - - Initializes a new instance of the BaseSession class based on the specified anonymous type object. - - The connection data as an anonymous type used to create the session. - A object. - is null. - - Multiple hosts can be specified as part of the , which enables client-side failover when trying to - establish a connection. -   - To assign multiple hosts, create a property similar to the connection string examples shown in - . Note that the value of the property must be a string. - - - - - - Drops the database/schema with the given name. - - The name of the schema. - is null. - - - - Creates a schema/database with the given name. - - The name of the schema/database. - A object that matches the recently created schema/database. - - - - Gets the schema with the given name. - - The name of the schema. - A object set with the provided schema name. - - - - Gets a list of schemas (or databases) in this session. - - A list containing all existing schemas (or databases). - - - - Starts a new transaction. - - - - - Commits the current transaction. - - A object containing the results of the commit operation. - - - - Rolls back the current transaction. - - - - - Closes this session or releases it to the pool. - - - - - Closes this session - - - - - Sets a transaction savepoint with an autogenerated name. - - The autogenerated name of the transaction savepoint. - - - - Sets a named transaction savepoint. - - The name of the transaction savepoint. - The name of the transaction savepoint. - - - - Removes the named savepoint from the set of savepoints within the current transaction. - - The name of the transaction savepoint. - - - - Rolls back a transaction to the named savepoint without terminating the transaction. - - The name of the transaction savepoint. - - - - Parses the connection data. - - The connection string or connection URI. - A object. - An updated connection string representation of the provided connection string or connection URI. - - - - Parses a connection URI. - - The connection URI to parse. - The connection string representation of the provided . - - - - Validates if the string provided is a Unix socket file. - - The Unix socket to evaluate. - true if is a valid Unix socket; otherwise, false. - - - - Converts the URI object into a connection string. - - An instance with the values for the provided connection options. - The path of the Unix socket file. - If true the replaces the value for the server connection option; otherwise, false - Flag indicating if this is a connection using DNS SRV. - A connection string. - - - - Parses a connection string. - - The connection string to parse. - The parsed connection string. - - - - Normalizes the Unix socket by removing leading and ending parenthesis as well as removing special characters. - - The Unix socket to normalize. - A normalized Unix socket. - - - - Disposes the current object. Disposes of the managed state if the flag is set to true. - - Flag to indicate if the managed state is to be disposed. - - - - Disposes the current object. Code added to correctly implement the disposable pattern. - - - - - Describes the state of the session. - - - - - The session is closed. - - - - - The session is open. - - - - - The session object is connecting to the data source. - - - - - The session object is executing a command. - - - - - Class encapsulating a session pooling functionality. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove hosts from the demoted list that have already been there for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Get a session from pool or create a new one. - - - - - - Closes all sessions the Client object created and destroys the managed pool. - - - - - Represents a collection of documents. - - - - - Creates an containing the provided objects that can be used to add - one or more items to a collection. - - The objects to add. - An object containing the objects to add. - is null. - This method can take anonymous objects, domain objects, or just plain JSON strings. - The statement can be further modified before execution. - - - - Creates a with the given condition that can be used to remove - one or more documents from a collection.The statement can then be further modified before execution. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Removes the document with the given identifier. - - The unique identifier of the document to replace. - A object containing the results of the execution. - is null or white space. - This is a direct execution method. - - - - Creates a with the given condition that can be used to modify one or more - documents from a collection. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Replaces the document matching the given identifier. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - is null or whitespace. - is null. - This is a direct execution method. Operation succeeds even if no matching document was found; - in which case, the Result.RecordsAffected property is zero. If the new document contains an identifier, the value - is ignored. - - - - Adds the given document to the collection unless the identifier or any other field that has a unique index - already exists, in which case it will update the matching document. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - The server version is lower than 8.0.3. - is null or white space. - is null. - The is different from the one in . - This is a direct execution method. - - - - Returns the number of documents in this collection on the server. - - The number of documents found. - - - - Creates a with the given condition which can be used to find documents in a - collection. - - An optional condition to match documents. - A object set with the given condition. - The statement can then be further modified before execution. - - - - Creates an index based on the properties provided in the JSON document. - - The index name. - JSON document describing the index to be created. - - is a JSON document with the following fields: - - - fields: array of IndexField objects, each describing a single document member to be - included in the index (see below). - - type: string, (optional) the type of index. One of INDEX or SPATIAL. Default is INDEX and may - be omitted. - -   - A single IndexField description consists of the following fields: - - - field: string, the full document path to the document member or field to be indexed. - - type: string, one of the supported SQL column types to map the field into (see the following list). - For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for - indexing may be added. - - required: bool, (optional) true if the field is required to exist in the document. defaults to - false, except for GEOJSON where it defaults to true. - - options: int, (optional) special option flags for use when decoding GEOJSON data. - - srid: int, (optional) srid value for use when decoding GEOJSON data. - -   - Supported SQL column types: - - - INT [UNSIGNED] - - TINYINT [UNSIGNED] - - SMALLINT [UNSIGNED] - - MEDIUMINT [UNSIGNED] - - INTEGER [UNSIGNED] - - BIGINT [UNSIGNED] - - REAL [UNSIGNED] - - FLOAT [UNSIGNED] - - DOUBLE [UNSIGNED] - - DECIMAL [UNSIGNED] - - NUMERIC [UNSIGNED] - - DATE - - TIME - - TIMESTAMP - - DATETIME - - TEXT[(length)] - - CHAR[(lenght)] - - GEOJSON (extra options: options, srid) - - - - - - Drops a collection index. - - The index name. - is null or white space. - - - - Verifies if the current collection exists in the server schema. - - true if the collection exists; otherwise, false. - - - - Returns the document with the given identifier. - - The unique identifier of the document to replace. - A object if a document matching given identifier exists; otherwise, null. - is null or white space. - This is a direct execution method. - - - - Base abstract class that defines elements inherited by all result types. - - - - - Gets the number of records affected by the statement that generated this result. - - - - - Gets the object of the session. - - - - - Gets a read-only collection of objects derived from statement execution. - - - - - Gets the number of warnings in the collection derived from statement execution. - - - - - No action is performed by this method. It is intended to be overriden by child classes if required. - - - - - Base abstract class for API statement. - - - - - - Initializes a new instance of the BaseStatement class based on the specified session. - - The session where the statement will be executed. - - - - Gets the that owns the statement. - - - - - Executes the base statements. This method is intended to be defined by child classes. - - A result object containing the details of the execution. - - - - Executes a statement asynchronously. - - A result object containing the details of the execution. - - - - Validates if the session is open and valid. - - - - - Sets the status as Changed for prepared statement validation. - - - - - Converts a statement to prepared statement for a second execution - without any change but Bind, Limit, or Offset. - - - - - Abstract class for buffered results. - - Generic result type. - - - - Index of the current item. - - - - - List of generic items in this buffered result. - - - - - Flag that indicates if all items have been read. - - - - - Gets a dictionary containing the column names and their index. - - - - - Gets the page size set for this buffered result. - - - - - Loads the column data into the field. - - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - Retrieves one element from the generic items associated to this buffered result. - - A generic object that corresponds to the current or default item. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Gets the current item. - - All items have already been read. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Resets the value of the field to zero. - - - - - Gets an representation of this object. - - An representation of this object. - - - - Gets an representation of this object. - - An representation of this object. - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - No body has been defined for this method. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - If false, throws an exception if the collection exists. - - - - - Object which hold the Level and Schema parameters. - - - - - This object store the required parameters to modify a Collection with schema validation. - - - - - This object store the required parameters to Modify a Collection with schema validation. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - It can be STRICT to enable schema validation or OFF to disable . - - - - - The JSON which define the rules to be validated in the collection. - - - - - The possible values for parameter Level in Validation object. - - - - - Class to represent an error in this result. - - - - - Numeric code. - - - - - Return code indicating the outcome of the executed SQL statement. - - - - - Error message. - - - - - Initializes a new instance of the ErrorInfo class. - - - - - Abstract class for filterable statements. - - The filterable statement. - The database object. - The type of result. - - - - Initializes a new instance of the FiltarableStatement class based on the target and condition. - - The database object. - The optional filter condition. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Sets the number of items to be returned by the operation. - - The number of items to be returned. - The implementing statement type. - is equal or lower than 0. - - - - Sets the number of items to be skipped before including them into the result. - - The number of items to be skipped. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameter name. - The value of the parameter. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a DbDoc object. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a JSON string. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as an anonymous object: new { param1 = value1, param2 = value2, ... }. - The implementing statement type. - - - - Executes the statement. - - The function to execute. - The generic object to use. - A generic result object containing the results of the execution. - - - - Clones the filterable data but Session and Target remain the - same. - - A clone of this filterable statement. - - - - Represents a general statement result. - - - - - Gets the last inserted identifier (if there is one) by the statement that generated this result. - - - - - Gets the list of generated identifiers in the order of the Add() calls. - - - - - Abstract class to select a database object target. - - The database object. - The execution result. - - - - Initializes a new instance of the TargetedBaseStatement class based on the provided target. - - The database object. - - - - Gets the database target. - - - - - Represents a warning in this result. - - - - - Numeric value associated to the warning message. - - - - - Error message. - - - - - Strict level for the warning. - - - - - Initializes a new instance of the WarningInfo class based on the code and msg. - - The code for the warning. - The error message for the warning. - - - - Represents a chaining collection insert statement. - - - - - Adds documents to the collection. - - The documents to add. - This object. - The array is null. - - - - Executes the Add statement. - - A object containing the results of the execution. - - - - Implementation class for CRUD statements with collections using an index. - - - - - Executes this statement. - - A object containing the results of the execution. - - - - Represents a collection statement. - - - - - - Converts base s into objects. - - Array of objects to be converted to objects. - An enumerable collection of objects. - - - - Represents the result of an operation that includes a collection of documents. - - - - - Represents a chaining collection find statement. - - - - - List of column projections that shall be returned. - - List of columns. - This object set with the specified columns or fields. - - - - Executes the Find statement. - - A object containing the results of execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with the lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the collection aggregation. - - The field list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Represents a chaining collection modify statement. - - - - - Sets key and value. - - The document path key. - The new value. - This object. - - - - Changes value for a key. - - The document path key. - The new value. - This object. - - - - Removes keys or values from a document. - - An array of document paths representing the keys to be removed. - This object. - - - - Creates a object set with the changes to be applied to all matching documents. - - The JSON-formatted object describing the set of changes. - A object set with the changes described in . - can be a object, an anonymous object, or a JSON string. - is null. - is null or white space. - - - - Inserts an item into the specified array. - - The document path key including the index on which the item will be inserted. - The value to insert into the array. - A object containing the updated array. - - - - Appends an item to the specified array. - - The document path key. - The value to append to the array. - A object containing the updated array. - - - - Allows the user to set the sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the modify statement. - - A object containing the results of the execution. - - - - Represents a chaining collection remove statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the remove statement. - - A object containing the results of the execution. - - - - Represents a database object. - - - - - Gets the session that owns the database object. - - - - - Gets the schema that owns the database object. - - - - - Gets the database object name. - - - - - Verifies that the database object exists in the database. - - True if the object exists in database, false otherwise. - - - - Represents a generic document in JSON format. - - - - - Initializes a new instance of the DbDoc class based on the object provided. The value can be a domain object, anonymous object, or JSON string. - - The value for this DbDoc. - - - - Gets the value of a document property. - - The key path for the property. - - - - - Gets the identifier of the document. - - - - - Gets a value indicating if this document has an identifier (property named _id with a value). - - - - - Sets a property on this document. - - The key of the property. - The new property value. - - - - Returns this document in Json format. - - A Json formatted string. - - - - Compares this DbDoc with another one. - - The DbDoc to compare to. - True if they are equal, false otherwise. - - - - Gets a value that serves as a hash function for a particular type. - - A hash code for the current object. - - - - Represents a collection of documents with a generic type. - - - - - Initializes a new instance of the generic Collection class based on the specified schema - and name. - - The object associated to this collection. - The name of the collection. - - - - Creates an containing the provided generic object. The add - statement can be further modified before execution. - - The generic object to add. - An object containing the object to add. - - - - Defines elements that allow to iterate through the contents of various items. - - - - - Initializes a new instance of the Iterator class. - - - - - This method is not yet implemented. - - - - Exception is always thrown since the body of the method is not yet implemented. - - - - Defines a MySql expression. - - - - - Main class for session operations related to Connector/NET implementation of the X DevAPI. - - - - - Opens a session to the server given or to the first available server if multiple servers were specified. - - The connection string or URI string format. - - A object representing the established session. - Multiple hosts can be specified as part of the which - will enable client side failover when trying to establish a connection. For additional details and syntax - examples refer to the remarks section. - - - - Opens a session to the server given. - - The connection data for the server. - - A object representing the established session. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Enables the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the X protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - A flag indicating if the default port is used in the connection. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets the connection attributes. - - - - - Path to a local file containing certificate revocation lists. - - - - - Gets or sets the compression type between client and server. - - - - - Gets or sets the compression algorithm. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Represents a table column. - - - - - Gets the original column name. - - - - - Gets the alias of the column name. - - - - - Gets the table name the column orginates from. - - - - - Gets the alias of the table name . - - - - - Gets the schema name the column originates from. - - - - - Gets the catalog the schema originates from. - In MySQL protocol this is `def` by default. - - - - - Gets the collation used for this column. - - - - - Gets the character set used for this column. - - - - - Gets the column length. - - - - - Gets the fractional decimal digits for floating point and fixed point numbers. - - - - - Gets the Mysql data type. - - - - - Gets the .NET Clr data type. - - - - - True if it's a signed number. - - - - - True if column is UINT zerofill or BYTES rightpad. - - - - - Initializes a new instance of the Column class. - - - - - Represents a resultset that contains rows of data. - - - - - Gets the columns in this resultset. - - - - - Gets the number of columns in this resultset. - - - - - Gets a list containing the column names in this resultset. - - - - - Gets the rows of this resultset. This collection will be incomplete unless all the rows have been read - either by using the Next method or the Buffer method. - - - - - Gets the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Allows getting the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Returns the index of the given column name. - - The name of the column to find. - The numeric index of column. - - - - Represents a single row of data in a table. - - - - - Gets the value of the row at the given index. - - The column index to retrieve the value. - The value at the index. - - - - Gets the value of the column as a string. - - The name of the column. - The value of the column as a string. - - - - Gets a string based indexer into the row. Returns the value as a CLR type. - - The column index to get. - The CLR value for the column. - - - - Inherits from . Creates a resultset that contains rows of data. - - - - - Represents a resultset that contains rows of data for relational operations. - - - - - Gets a boolean value indicating if this result has data. - - - - - Moves to next resultset. - - True if there is a new resultset, false otherwise. - - - - Represents a sql statement. - - - - - Initializes a new instance of the SqlStament class bassed on the session and sql statement. - - The session the Sql statement belongs to. - The Sql statement. - - - - Gets the current Sql statement. - - - - - Gets the list of parameters associated to this Sql statement. - - - - - Executes the current Sql statement. - - A object with the resultset and execution status. - - - - Binds the parameters values by position. - - The parameter values. - This set with the binded parameters. - - - - Represents a server Table or View. - - - - - Gets a value indicating whether the object is - a View (True) or a Table (False). - - - - - Creates a set with the columns to select. The table select - statement can be further modified before execution. This method is intended to select a set - of table rows. - - The optional column names to select. - A object for select chain operations. - - - - Creates a set with the fileds to insert to. The table - insert statement can be further modified before exeuction. This method is intended to - insert one or multiple rows into a table. - - The list of fields to insert. - A object for insert chain operations. - - - - Creates a . This method is intended to update table rows - values. - - A object for update chain operations. - - - - Creates a . This method is intended to delete rows from a - table. - - A object for delete chain operations. - - - - Returns the number of rows in the table on the server. - - The number of rows. - - - - Verifies if the table exists in the database. - - true if the table exists; otherwise, false. - - - - Represents a chaining table delete statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Executes the delete statement. - - A object containing the results of the delete execution. - - - - Represents a chaining table insert statement. - - - - - Executes the insert statement. - - A object containing the results of the insert statement. - - - - Values to be inserted. - Multiple rows supported. - - The values to be inserted. - This same object. - - - - Represents a chaining table select statement. - - - - - Executes the select statement. - - A object containing the results of the execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the table aggregation. - - The column list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a chaining table update statement. - - - - - Executes the update statement. - - A object ocntaining the results of the update statement execution. - - - - Column and value to be updated. - - Column name. - Value to be updated. - This same object. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a schema or database. - - - - - Session related to current schema. - - - - - Returns a list of all collections in this schema. - - A list representing all found collections. - - - - Returns a list of all tables in this schema. - - A list representing all found tables. - - - - Gets a collection by name. - - The name of the collection to get. - Ensures the collection exists in the schema. - A object matching the given name. - - - - Gets a typed collection object. This is useful for using domain objects. - - The type of collection returned. - The name of collection to get. - A generic object set with the given name. - - - - Gets the given collection as a table. - - The name of the collection. - A object set with the given name. - - - - Gets a table object. Upon return the object may or may not be valid. - - The name of the table object. - A object set with the given name. - - - - Creates a collection. - - The name of the collection to create. - If false, throws an exception if the collection exists. - Collection referente. - - - - Creates a collection including a schema validation. - - The name of the collection to create. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Modify a collection adding or removing schema validation parameters. - - The name of the collection to create. - This object encapsulate the Validation parameters level and schema. - Collection referente. - - - - Drops the given collection. - - The name of the collection to drop. - is null. - - - - Determines if this schema actually exists. - - True if exists, false otherwise. - - - - Represents a single server session. - - - - - Returns a object that can be used to execute the given SQL. - - The SQL to execute. - A object set with the provided SQL. - - - - Sets the schema in the database. - - The schema name to be set. - - - - Executes a query in the database to get the current schema. - - Current database object or null if no schema is selected. - - - - Closes the current session properly after it was closed by the server. - - - - Holder for reflection information generated from mysqlx.proto - - - File descriptor for mysqlx.proto - - - - IDs of messages that can be sent from client to the server - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ClientMessages message type. - - - - IDs of messages that can be sent from server to client - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ServerMessages message type. - - - - NOTICE has to stay at 11 forever - - - - - generic Ok message - - - - Field number for the "msg" field. - - - - generic Error message - - A ``severity`` of ``ERROR`` indicates the current message sequence is - aborted for the given error and the session is ready for more. - - In case of a ``FATAL`` error message the client should not expect - the server to continue handling any further messages and should - close the connection. - - :param severity: severity of the error message - :param code: error-code - :param sql_state: SQL state - :param msg: human readable error message - - - - Field number for the "severity" field. - - - Field number for the "code" field. - - - Field number for the "sql_state" field. - - - Field number for the "msg" field. - - - Container for nested types declared in the Error message type. - - - Holder for reflection information generated from mysqlx_connection.proto - - - File descriptor for mysqlx_connection.proto - - - - a Capability - - a tuple of a ``name`` and a :protobuf:msg:`Mysqlx.Datatypes::Any` - - - - Field number for the "name" field. - - - Field number for the "value" field. - - - - Capabilities - - - - Field number for the "capabilities" field. - - - - get supported connection capabilities and their current state - - :returns: :protobuf:msg:`Mysqlx.Connection::Capabilities` or :protobuf:msg:`Mysqlx::Error` - - - - - sets connection capabilities atomically - - only provided values are changed, other values are left unchanged. - If any of the changes fails, all changes are discarded. - - :precond: active sessions == 0 - :returns: :protobuf:msg:`Mysqlx::Ok` or :protobuf:msg:`Mysqlx::Error` - - - - Field number for the "capabilities" field. - - - - announce to the server that the client wants to close the connection - - it discards any session state of the server - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "uncompressed_size" field. - - - Field number for the "server_messages" field. - - - Field number for the "client_messages" field. - - - Field number for the "payload" field. - - - Holder for reflection information generated from mysqlx_crud.proto - - - File descriptor for mysqlx_crud.proto - - - - DataModel to use for filters, names, ... - - - - - ViewAlgorithm defines how MySQL Server processes the view - - - - - MySQL chooses which algorithm to use - - - - - the text of a statement that refers to the view and the view definition are merged - - - - - the view are retrieved into a temporary table - - - - - ViewSqlSecurity defines the security context in which the view is going to be - executed, this means that VIEW can be executed with current user permissions or - with permissions of the uses who defined the VIEW - - - - - ViewCheckOption limits the write operations done on a `VIEW` - (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE` - - - - - the view WHERE clause is checked, but no underlying views are checked - - - - - the view WHERE clause is checked, then checking recurses to underlying views - - - - - column definition - - - - Field number for the "name" field. - - - - optional - - - - Field number for the "alias" field. - - - - optional - - - - Field number for the "document_path" field. - - - - a projection - - :param source: the expression identifying an element from the source data - which can include a column identifier or any expression - :param alias: optional alias. Required for DOCUMENTs (clients may use - the source string as default) - - - - Field number for the "source" field. - - - - required - - - - Field number for the "alias" field. - - - - optional - - - - - collection - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema" field. - - - - optional - - - - - limit - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - limit expression - - LimitExpr in comparison to Limit, is able to specify that row_count and - offset are placeholders. - This message support expressions of following types Expr/literal/UINT, - Expr/PLACEHOLDER. - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - sort order - - - - Field number for the "expr" field. - - - - required - - - - Field number for the "direction" field. - - - - optional//[ default=ASC ] - - - - Container for nested types declared in the Order message type. - - - - update operations - - :param source: specification of the value to be updated - if data_model is TABLE, a column name may be specified and also a document path, if the column has type JSON - if data_model is DOCUMENT, only document paths are allowed - in both cases, schema and table must be not set - :param operation: the type of operation to be performed - :param value: an expression to be computed as the new value for the operation - - - - Field number for the "source" field. - - - - required - - - - Field number for the "operation" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - Container for nested types declared in the UpdateOperation message type. - - - - only allowed for TABLE - - - - - no value (removes the identified path from a object or array) - - - - - sets the new value on the identified path - - - - - replaces a value if the path exists - - - - - source and value must be documents - - - - - insert the value in the array at the index identified in the source path - - - - - append the value on the array at the identified path - - - - - merge JSON object value with the provided patch expression - - - - - Find Documents/Rows in a Collection/Table - - .. uml:: - - client -> server: Find - ... one or more Resultset ... - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: list of column projections that shall be returned - :param args: values for parameters used in filter expression - :param criteria: filter criteria - :param limit: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :param order: sort-order in which the rows/document shall be returned in - :param grouping: column expression list for aggregation (GROUP BY) - :param grouping_criteria: filter criteria for aggregated groups - :param locking: perform row locking on matches - :param locking_options: additional options how to handle locked rows - :param limit_expr: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "grouping" field. - - - Field number for the "grouping_criteria" field. - - - - optional - - - - Field number for the "locking" field. - - - - optional - - - - Field number for the "locking_options" field. - - - - optional - - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Container for nested types declared in the Find message type. - - - - Lock matching rows against updates - - - - - Lock matching rows so no other transaction can read or write to it - - - - - Do not wait to acquire row lock, fail with an error if a requested row is locked - - - - - Do not wait to acquire a row lock, remove locked rows from the result set - - - - - Insert documents/rows into a collection/table - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: name of the columns to insert data into (empty if data_model is DOCUMENT) - :param row: set of rows to insert into the collection/table (a single expression with a JSON document literal or an OBJECT expression) - :param args: values for parameters used in row expressions - :param upsert: true if this should be treated as an Upsert (that is, update on duplicate key) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "row" field. - - - Field number for the "args" field. - - - Field number for the "upsert" field. - - - - optional//[default = false] - - - - Container for nested types declared in the Insert message type. - - - Field number for the "field" field. - - - - Update documents/rows in a collection/table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param operation: list of operations to be applied. Valid operations will depend on the data_model. - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "operation" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - - Delete documents/rows from a Collection/Table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional//[default = UNDEFINED] - - - - Field number for the "security" field. - - - - optional//[default = DEFINER] - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "replace_existing" field. - - - - optional//[default = false] - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional - - - - Field number for the "security" field. - - - - optional - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "if_exists" field. - - - - optional//[ default = false ] - - - - Holder for reflection information generated from mysqlx_cursor.proto - - - File descriptor for mysqlx_cursor.proto - - - - Open a cursor - - .. uml:: - - client -> server: Open - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, the ID is going to represent new cursor and assigned to it statement - :param stmt: statement which resultset is going to be iterated through the cursor - :param fetch_rows: number of rows which should be retrieved from sequential cursor - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - Container for nested types declared in the Open message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "prepare_execute" field. - - - - optional - - - - Container for nested types declared in the OneOfMessage message type. - - - - Fetch next portion of data from a cursor - - .. uml:: - - client -> server: Fetch - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be already open - :param fetch_rows: number of rows which should be retrieved from sequential cursor - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - - Close cursor - - .. uml:: - - client -> server: Close - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be allocated/open - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "cursor_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_datatypes.proto - - - File descriptor for mysqlx_datatypes.proto - - - - a scalar - - - - Field number for the "type" field. - - - - required - - - - Field number for the "v_signed_int" field. - - - Field number for the "v_unsigned_int" field. - - - Field number for the "v_octets" field. - - - - 4 is unused, was Null which doesn't have a storage anymore - - - - Field number for the "v_double" field. - - - Field number for the "v_float" field. - - - Field number for the "v_bool" field. - - - Field number for the "v_string" field. - - - Enum of possible cases for the "DefaultOneOf" oneof. - - - Container for nested types declared in the Scalar message type. - - - - a string with a charset/collation - - - - Field number for the "value" field. - - - - required - - - - Field number for the "collation" field. - - - Enum of possible cases for the "String_present" oneof. - - - - an opaque octet sequence, with an optional content_type - See ``Mysqlx.Resultset.ColumnMetadata`` for list of known values. - - - - Field number for the "value" field. - - - - required - - - - Field number for the "content_type" field. - - - - a object - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array - - - - Field number for the "value" field. - - - - a helper to allow all field types - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scalar" field. - - - Field number for the "obj" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Any message type. - - - Holder for reflection information generated from mysqlx_expect.proto - - - File descriptor for mysqlx_expect.proto - - - - open an Expect block and set/unset the conditions that have to be fulfilled - - if any of the conditions fail, all enclosed messages will fail with - a Mysqlx.Error message. - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Field number for the "op" field. - - - - [ default = EXPECT_CTX_COPY_PREV ];//optional - - - - Field number for the "cond" field. - - - Container for nested types declared in the Open message type. - - - - copy the operations from the parent Expect-block - - - - - start with a empty set of operations - - - - Field number for the "condition_key" field. - - - - required - - - - Field number for the "condition_value" field. - - - - optional - - - - Field number for the "op" field. - - - - [ default = EXPECT_OP_SET ];//optional - - - - Container for nested types declared in the Condition message type. - - - - Change error propagation behaviour - - - - - Check if X Protocol field exists - - - - - Check if X Protocol support document _id generation - - - - - set the condition - - set, if not set - overwrite, if set - - - - - unset the condition - - - - - close a Expect block - - closing a Expect block restores the state of the previous Expect block - for the following messages - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Holder for reflection information generated from mysqlx_expr.proto - - - File descriptor for mysqlx_expr.proto - - - - Expressions - - the "root" of the expression tree - - .. productionlist:: - expr: `operator` | - : `identifier` | - : `function_call` | - : variable | - : `literal` | - : placeholder - - If expression type is PLACEHOLDER then it refers to the value of a parameter - specified when executing a statement (see `args` field of `StmtExecute` command). - Field `position` (which must be present for such an expression) gives 0-based - position of the parameter in the parameter list. - - - - Field number for the "type" field. - - - - required - - - - Field number for the "identifier" field. - - - Field number for the "variable" field. - - - Field number for the "literal" field. - - - Field number for the "function_call" field. - - - Field number for the "operator" field. - - - Field number for the "position" field. - - - Field number for the "object" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Expr message type. - - - - identifier: name, schame.name - - .. productionlist:: - identifier: string "." string | - : string - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema_name" field. - - - - DocumentPathItem - - .. productionlist:: - document_path: path_item | path_item document_path - path_item : member | array_index | "**" - member : "." string | "." "*" - array_index : "[" number "]" | "[" "*" "]" - - - - Field number for the "type" field. - - - - required - - - - Field number for the "value" field. - - - Field number for the "index" field. - - - Container for nested types declared in the DocumentPathItem message type. - - - - .member - - - - - .* - - - - - [index] - - - - - [*] - - - - - ** - - - - - col_identifier (table): col@doc_path, tbl.col@doc_path col, tbl.col, schema.tbl.col - col_identifier (document): doc_path - - .. productionlist:: - col_identifier: string "." string "." string | - : string "." string | - : string | - : string "." string "." string "@" document_path | - : string "." string "@" document_path | - : string "@" document_path | - : document_path - document_path: member | arrayLocation | doubleAsterisk - member = "." string | "." "*" - arrayLocation = "[" index "]" | "[" "*" "]" - doubleAsterisk = "**" - - - - Field number for the "document_path" field. - - - Field number for the "name" field. - - - Field number for the "table_name" field. - - - Field number for the "schema_name" field. - - - - function call: ``func(a, b, "1", 3)`` - - .. productionlist:: - function_call: `identifier` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - operator: ``<<(a, b)`` - - .. note:: - - Non-authoritative list of operators implemented (case sensitive): - - Nullary - * ``*`` - * ``default`` - - Unary - * ``!`` - * ``sign_plus`` - * ``sign_minus`` - * ``~`` - - Binary - * ``&&`` - * ``||`` - * ``xor`` - * ``==`` - * ``!=`` - * ``>`` - * ``>=`` - * ``<`` - * ``<=`` - * ``&`` - * ``|`` - * ``^`` - * ``<<`` - * ``>>`` - * ``+`` - * ``-`` - * ``*`` - * ``/`` - * ``div`` - * ``%`` - * ``is`` - * ``is_not`` - * ``regexp`` - * ``not_regexp`` - * ``like`` - * ``not_like`` - * ``cast`` - * ``cont_in`` - * ``not_cont_in`` - - Using special representation, with more than 2 params - * ``in`` (param[0] IN (param[1], param[2], ...)) - * ``not_in`` (param[0] NOT IN (param[1], param[2], ...)) - - Ternary - * ``between`` - * ``between_not`` - * ``date_add`` - * ``date_sub`` - - Units for date_add/date_sub - * ``MICROSECOND`` - * ``SECOND`` - * ``MINUTE`` - * ``HOUR`` - * ``DAY`` - * ``WEEK`` - * ``MONTH`` - * ``QUARTER`` - * ``YEAR`` - * ``SECOND_MICROSECOND`` - * ``MINUTE_MICROSECOND`` - * ``MINUTE_SECOND`` - * ``HOUR_MICROSECOND`` - * ``HOUR_SECOND`` - * ``HOUR_MINUTE`` - * ``DAY_MICROSECOND`` - * ``DAY_SECOND`` - * ``DAY_MINUTE`` - * ``DAY_HOUR`` - - Types for cast - * ``BINARY[(N)]`` - * ``CHAR[(N)]`` - * ``DATE`` - * ``DATETIME`` - * ``DECIMAL[(M[,D])]`` - * ``JSON`` - * ``SIGNED [INTEGER]`` - * ``TIME`` - * ``UNSIGNED [INTEGER]`` - - .. productionlist:: - operator: `name` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - an object (with expression values) - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array of expressions - - - - Field number for the "value" field. - - - Holder for reflection information generated from mysqlx_notice.proto - - - File descriptor for mysqlx_notice.proto - - - - Common Frame for all Notices - - ===================================================== ===== - .type value - ===================================================== ===== - :protobuf:msg:`Mysqlx.Notice::Warning` 1 - :protobuf:msg:`Mysqlx.Notice::SessionVariableChanged` 2 - :protobuf:msg:`Mysqlx.Notice::SessionStateChanged` 3 - ===================================================== ===== - - :param type: the type of the payload - :param payload: the payload of the notification - :param scope: global or local notification - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scope" field. - - - - [ default = GLOBAL ];//optional - - - - Field number for the "payload" field. - - - - optional - - - - Container for nested types declared in the Frame message type. - - - - Server-side warnings and notes - - ``.scope`` == ``local`` - ``.level``, ``.code`` and ``.msg`` map the content of - - .. code-block:: sql - - SHOW WARNINGS - - ``.scope`` == ``global`` - (undefined) will be used for global, unstructured messages like: - - * server is shutting down - * a node disconnected from group - * schema or table dropped - - ========================================== ======================= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ======================= - ``.type`` 1 - ``.scope`` ``local`` or ``global`` - ========================================== ======================= - - :param level: warning level: Note or Warning - :param code: warning code - :param msg: warning message - - - - Field number for the "level" field. - - - - [ default = WARNING ];//optional - - - - Field number for the "code" field. - - - - required - - - - Field number for the "msg" field. - - - - required - - - - Container for nested types declared in the Warning message type. - - - - Notify clients about changes to the current session variables - - Every change to a variable that is accessible through: - - .. code-block:: sql - - SHOW SESSION VARIABLES - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 2 - ``.scope`` ``local`` - ========================================== ========= - - :param namespace: namespace that param belongs to - :param param: name of the variable - :param value: the changed value of param - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - - Notify clients about changes to the internal session state - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 3 - ``.scope`` ``local`` - ========================================== ========= - - :param param: parameter key - :param value: updated value - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - Container for nested types declared in the SessionStateChanged message type. - - - - .. more to be added - - - - Holder for reflection information generated from mysqlx_prepare.proto - - - File descriptor for mysqlx_prepare.proto - - - - Prepare a new statement - - .. uml:: - - client -> server: Prepare - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, which is going to identify the result of preparation - :param stmt: defines one of following messages to be prepared - Crud.Find, Crud.Insert, Crud.Delete, Crud.Upsert, Sql.StmtExecute - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Container for nested types declared in the Prepare message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "find" field. - - - - optional - - - - Field number for the "insert" field. - - - - optional - - - - Field number for the "update" field. - - - - optional - - - - Field number for the "delete" field. - - - - optional - - - - Field number for the "stmt_execute" field. - - - - optional - - - - Enum of possible cases for the "Type_present" oneof. - - - Container for nested types declared in the OneOfMessage message type. - - - - Determine which of optional fields was set by the client - (Workaround for missing "oneof" keyword in pb2.5) - - - - - Execute already prepared statement - - .. uml:: - - client -> server: Execute - alt Success - ... Resultsets... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :param args_list: Arguments to bind to the prepared statement - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - [ default = false ]; optional - - - - - Deallocate already prepared statement - - Deallocating the statement. - - .. uml:: - - client -> server: Deallocate - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_resultset.proto - - - File descriptor for mysqlx_resultset.proto - - - - a hint about the higher-level encoding of a BYTES field - - ====== ====== =========== - type value description - ====== ====== =========== - BYTES 0x0001 GEOMETRY (WKB encoding) - BYTES 0x0002 JSON (text encoding) - BYTES 0x0003 XML (text encoding) - ====== ====== =========== - - .. note:: - this list isn't comprehensive. As guideline: the field's value is expected - to pass a validator check on client and server if this field is set. - If the server adds more internal datatypes that rely on BLOB storage - like image manipulation, seeking into complex types in BLOBs, ... more - types will be added. - - - - - a hint about the higher-level encoding of a DATETIME field - - ====== ====== =========== - type value description - ======== ====== =========== - DATE 0x0001 DATETIME contains only date part - DATETIME 0x0002 DATETIME contains both date and time parts - ====== ====== =========== - - - - - resultsets are finished, OUT paramset is next - - - - - resultset and out-params are finished, but more resultsets available - - - - - all resultsets are finished - - - - - cursor is opened still the execution of PrepFetch or PrepExecute ended - - - - - meta data of a Column - - .. note:: the encoding used for the different ``bytes`` fields in the meta data is externally - controlled. - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html - - .. note:: - The server may not set the ``original_{table|name}`` fields if they are equal to the plain - ``{table|name}`` field. - - A client has to reconstruct it like:: - - if .original_name is empty and .name is not empty: - .original_name = .name - - if .original_table is empty and .table is not empty: - .original_table = .table - - .. note:: - ``compact metadata format`` can be requested by the client. In that case only ``.type`` is set and - all other fields are empty. - - :param type: - .. table:: Expected Datatype of Mysqlx.Resultset.Row per SQL Type for non NULL values - - ================= ============ ======= ========== ====== ======== - SQL Type .type .length .frac_dig .flags .charset - ================= ============ ======= ========== ====== ======== - TINY SINT x - TINY UNSIGNED UINT x x - SHORT SINT x - SHORT UNSIGNED UINT x x - INT24 SINT x - INT24 UNSIGNED UINT x x - INT SINT x - INT UNSIGNED UINT x x - LONGLONG SINT x - LONGLONG UNSIGNED UINT x x - DOUBLE DOUBLE x x x - FLOAT FLOAT x x x - DECIMAL DECIMAL x x x - VARCHAR,CHAR,... BYTES x x x - GEOMETRY BYTES - TIME TIME x - DATE DATETIME x - DATETIME DATETIME x - YEAR UINT x x - TIMESTAMP DATETIME x - SET SET x - ENUM ENUM x - NULL BYTES - BIT BIT x - ================= ============ ======= ========== ====== ======== - - .. note:: the SQL "NULL" value is sent as an empty field value in :protobuf:msg:`Mysqlx.Resultset::Row` - .. seealso:: protobuf encoding of primitive datatypes are decribed in https://developers.google.com/protocol-buffers/docs/encoding - - SINT - - ``.length`` - maximum number of displayable decimal digits (including minus sign) of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - =============== == - SQL Type max digits per type - =============== == - TINY SIGNED 4 - SHORT SIGNED 6 - INT24 SIGNED 8 - INT SIGNED 11 - LONGLONG SIGNED 20 - =============== == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded signed 64 integer - - UINT - - ``.flags & 1`` (zerofill) - the client has to left pad with 0's up to .length - - ``.length`` - maximum number of displayable decimal digits of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - ================= == - SQL Type max digits per type - ================= == - TINY UNSIGNED 3 - SHORT UNSIGNED 5 - INT24 UNSIGNED 8 - INT UNSIGNED 10 - LONGLONG UNSIGNED 20 - ================= == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - BIT - - ``.length`` - maximum number of displayable binary digits - - .. note:: valid range for M of the ``BIT`` type is 1 - 64 - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - DOUBLE - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'double' - - FLOAT - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'float' - - BYTES, ENUM - BYTES is used for all opaque byte strings that may have a charset - - * TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB - * TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT - * VARCHAR, VARBINARY - * CHAR, BINARY - * ENUM - - ``.length`` - the maximum length of characters of the underlying type - - ``.flags & 1`` (rightpad) - if the length of the field is less than ``.length``, the receiver is - supposed to add padding characters to the right end of the string. - If the ``.charset`` is "binary", the padding character is ``0x00``, - otherwise it is a space character as defined by that character set. - - ============= ======= ======== ======= - SQL Type .length .charset .flags - ============= ======= ======== ======= - TINYBLOB 256 binary - BLOB 65535 binary - VARCHAR(32) 32 utf8 - VARBINARY(32) 32 utf8_bin - BINARY(32) 32 binary rightpad - CHAR(32) 32 utf8 rightpad - ============= ======= ======== ======= - - ``value`` - sequence of bytes with added one extra '\0' byte at the end. To obtain the - original string, the extra '\0' should be removed. - .. note:: the length of the string can be acquired with protobuf's field length() method - length of sequence-of-bytes = length-of-field - 1 - .. note:: the extra byte allows to distinguish between a NULL and empty byte sequence - - TIME - A time value. - - ``value`` - the following bytes sequence: - - ``| negate [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * negate - one byte, should be one of: 0x00 for "+", 0x01 for "-" - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. seealso:: protobuf encoding in https://developers.google.com/protocol-buffers/docs/encoding - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - Example: 0x00 -> +00:00:00.000000 - - DATETIME - A date or date and time value. - - ``value`` - a sequence of variants, arranged as follows: - - ``| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * year - variable length encoded unsigned64 value for the year - * month - variable length encoded unsigned64 value for the month - * day - variable length encoded unsigned64 value for the day - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - ``.flags & 1`` (timestamp) - - ============= ======= - SQL Type .flags - ============= ======= - DATETIME - TIMESTAMP 1 - - DECIMAL - An arbitrary length number. The number is encoded as a single byte - indicating the position of the decimal point followed by the Packed BCD - encoded number. Packed BCD is used to simplify conversion to and - from strings and other native arbitrary precision math datatypes. - .. seealso:: packed BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal - - ``.length`` - maximum number of displayable decimal digits (*excluding* the decimal point and sign, but including ``.fractional_digits``) - - .. note:: should be in the range of 1 - 65 - - ``.fractional_digits`` - is the decimal digits to display out of length - - .. note:: should be in the range of 0 - 30 - - ``value`` - the following bytes sequence: - - ``| scale | BCD | sign | [0x0] |`` - - * scale - 8bit scale value (number of decimal digit after the '.') - * BCD - BCD encoded digits (4 bits for each digit) - * sign - sign encoded on 4 bits (0xc = "+", 0xd = "-") - * 0x0 - last 4bits if length(digits) % 2 == 0 - - Example: x04 0x12 0x34 0x01 0xd0 -> -12.3401 - - SET - A list of strings representing a SET of values. - - ``value`` - A sequence of 0 or more of protobuf's bytes (length prepended octets) or one of - the special sequences with a predefined meaning listed below. - - Example (length of the bytes array shown in brackets): - * ``[0]`` - the NULL value - * ``[1] 0x00`` - a set containing a blank string '' - * ``[1] 0x01`` - this would be an invalid value, but is to be treated as the empty set - * ``[2] 0x01 0x00`` - a set with a single item, which is the '\0' character - * ``[8] 0x03 F O O 0x03 B A R`` - a set with 2 items: FOO,BAR - - :param name: name of the column - :param original_name: name of the column before an alias was applied - :param table: name of the table the column orginates from - :param original_table: name of the table the column orginates from before an alias was applied - :param schema: schema the column originates from - :param catalog: - catalog the schema originates from - - .. note:: - as there is current no support for catalogs in MySQL, don't expect this field to be set. - In the MySQL C/S protocol the field had the value ``def`` all the time. - - :param fractional_digits: displayed factional decimal digits for floating point and fixed point numbers - :param length: maximum count of displayable characters of .type - :param flags: - ``.type`` specific flags - - ======= ====== =========== - type value description - ======= ====== =========== - UINT 0x0001 zerofill - DOUBLE 0x0001 unsigned - FLOAT 0x0001 unsigned - DECIMAL 0x0001 unsigned - BYTES 0x0001 rightpad - ======= ====== =========== - - ====== ================ - value description - ====== ================ - 0x0010 NOT_NULL - 0x0020 PRIMARY_KEY - 0x0040 UNIQUE_KEY - 0x0080 MULTIPLE_KEY - 0x0100 AUTO_INCREMENT - ====== ================ - - default: 0 - :param content_type: - a hint about the higher-level encoding of a BYTES field, for more informations - please refer to Mysqlx.Resultset.ContentType_BYTES enum. - - - - Field number for the "type" field. - - - - datatype of the field in a row - - - - Field number for the "name" field. - - - Field number for the "original_name" field. - - - Field number for the "table" field. - - - Field number for the "original_table" field. - - - Field number for the "schema" field. - - - Field number for the "catalog" field. - - - Field number for the "collation" field. - - - Field number for the "fractional_digits" field. - - - Field number for the "length" field. - - - Field number for the "flags" field. - - - Field number for the "content_type" field. - - - Container for nested types declared in the ColumnMetaData message type. - - - - Row in a Resultset - - a row is represented as a list of fields encoded as byte blobs. - Blob of size 0 represents the NULL value. Otherwise, if it contains at least - one byte, it encodes a non-null value of the field using encoding appropriate for the - type of the value given by ``ColumnMetadata``, as specified - in the :protobuf:msg:`Mysqlx.Resultset::ColumnMetaData` description. - - - - Field number for the "field" field. - - - Holder for reflection information generated from mysqlx_session.proto - - - File descriptor for mysqlx_session.proto - - - - the initial message send from the client to the server to start the - authentication proccess - - :param mech_name: authentication mechanism name - :param auth_data: authentication data - :param initial_response: initial response - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "mech_name" field. - - - - required - - - - Field number for the "auth_data" field. - - - Field number for the "initial_response" field. - - - - send by client or server after a :protobuf:msg:`Mysqlx.Session::AuthenticateStart` to - exchange more auth data - - :param auth_data: authentication data - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "auth_data" field. - - - - required - - - - - sent by the server after successful authentication - - :param auth_data: authentication data - - - - Field number for the "auth_data" field. - - - - reset the current session - param keep_open: if is true the session will be reset, but stays authenticated. - otherwise, the session will be closed and needs to be authenticated again. - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "keep_open" field. - - - - close the current session - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Holder for reflection information generated from mysqlx_sql.proto - - - File descriptor for mysqlx_sql.proto - - - - execute a statement in the given namespace - - .. uml:: - - client -> server: StmtExecute - ... zero or more Resultsets ... - server --> client: StmtExecuteOk - - Notices: - This message may generate a notice containing WARNINGs generated by its execution. - This message may generate a notice containing INFO messages generated by its execution. - - :param namespace: namespace of the statement to be executed - :param stmt: statement that shall be executed. - :param args: values for wildcard replacements - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :returns: - * zero or one :protobuf:msg:`Mysqlx.Resultset::` followed by :protobuf:msg:`Mysqlx.Sql::StmtExecuteOk` - - - - Field number for the "namespace" field. - - - - optional [ default = "sql" ] - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - optional [ default = false ] - - - - - statement executed successful - - -
-
diff --git a/AUTS_Studio/bin/Release/Newtonsoft.Json.dll b/AUTS_Studio/bin/Release/Newtonsoft.Json.dll deleted file mode 100644 index 7af125a..0000000 Binary files a/AUTS_Studio/bin/Release/Newtonsoft.Json.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/Newtonsoft.Json.xml b/AUTS_Studio/bin/Release/Newtonsoft.Json.xml deleted file mode 100644 index 008e0ca..0000000 --- a/AUTS_Studio/bin/Release/Newtonsoft.Json.xml +++ /dev/null @@ -1,11305 +0,0 @@ - - - - Newtonsoft.Json - - - - - Represents a BSON Oid (object id). - - - - - Gets or sets the value of the Oid. - - The value of the Oid. - - - - Initializes a new instance of the class. - - The Oid value. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. - - - - - Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. - - - true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. - - - - - Gets or sets a value indicating whether the root object will be read as a JSON array. - - - true if the root object will be read as a JSON array; otherwise, false. - - - - - Gets or sets the used when reading values from BSON. - - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. - - - - - Gets or sets the used when writing values to BSON. - When set to no conversion will occur. - - The used when writing values to BSON. - - - - Initializes a new instance of the class. - - The to write to. - - - - Initializes a new instance of the class. - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. - - - - - Writes the end. - - The token. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes the beginning of a JSON array. - - - - - Writes the beginning of a JSON object. - - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value that represents a BSON object id. - - The Object ID value to write. - - - - Writes a BSON regex. - - The regex pattern. - The regex options. - - - - Specifies how constructors are used when initializing objects during deserialization by the . - - - - - First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. - - - - - Json.NET will use a non-public default constructor before falling back to a parameterized constructor. - - - - - Converts a binary value to and from a base 64 string value. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Creates a custom object. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Creates an object which will then be populated by the serializer. - - Type of the object. - The created object. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Provides a base class for converting a to and from JSON. - - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a F# discriminated union type to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an Entity Framework to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). - - - - - Gets or sets the date time styles used when converting a date to and from JSON. - - The date time styles used when converting a date to and from JSON. - - - - Gets or sets the date time format used when converting a date to and from JSON. - - The date time format used when converting a date to and from JSON. - - - - Gets or sets the culture used when converting a date to and from JSON. - - The culture used when converting a date to and from JSON. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from its name string value. - - - - - Gets or sets a value indicating whether the written enum text should be camel case. - The default value is false. - - true if the written enum text will be camel case; otherwise, false. - - - - Gets or sets the naming strategy used to resolve how enum text is written. - - The naming strategy used to resolve how enum text is written. - - - - Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. - The default value is true. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - true if the written enum text will be camel case; otherwise, false. - - - - Initializes a new instance of the class. - - The naming strategy used to resolve how enum text is written. - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from Unix epoch time - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from a string (e.g. "1.2.3.4"). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts XML to and from JSON. - - - - - Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. - - The name of the deserialized root element. - - - - Gets or sets a value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - true if the array attribute is written to the XML; otherwise, false. - - - - Gets or sets a value indicating whether to write the root JSON object. - - true if the JSON root object is omitted; otherwise, false. - - - - Gets or sets a value indicating whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - true if special characters are encoded; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The calling serializer. - The value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Checks if the is a namespace attribute. - - Attribute name to test. - The attribute name prefix if it has one, otherwise an empty string. - true if attribute name is for a namespace attribute, otherwise false. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Specifies how dates are formatted when writing JSON text. - - - - - Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". - - - - - Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". - - - - - Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. - - - - - Date formatted strings are not parsed to a date type and are read as strings. - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Specifies how to treat the time value when converting between string and . - - - - - Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. - - - - - Treat as a UTC. If the object represents a local time, it is converted to a UTC. - - - - - Treat as a local time if a is being converted to a string. - If a string is being converted to , convert to a local time if a time zone is specified. - - - - - Time zone information should be preserved when converting. - - - - - The default JSON name table implementation. - - - - - Initializes a new instance of the class. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Adds the specified string into name table. - - The string to add. - This method is not thread-safe. - The resolved string. - - - - Specifies default value handling options for the . - - - - - - - - - Include members where the member value is the same as the member's default value when serializing objects. - Included members are written to JSON. Has no effect when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - so that it is not written to JSON. - This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, - decimals and floating point numbers; and false for booleans). The default value ignored can be changed by - placing the on the property. - - - - - Members with a default value but no JSON will be set to their default value when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - and set members to their default value when deserializing. - - - - - Specifies float format handling options when writing special floating point numbers, e.g. , - and with . - - - - - Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". - - - - - Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. - Note that this will produce non-valid JSON. - - - - - Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. - - - - - Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Floating point numbers are parsed to . - - - - - Floating point numbers are parsed to . - - - - - Specifies formatting options for the . - - - - - No special formatting is applied. This is the default. - - - - - Causes child objects to be indented according to the and settings. - - - - - Provides an interface for using pooled arrays. - - The array type content. - - - - Rent an array from the pool. This array must be returned when it is no longer needed. - - The minimum required length of the array. The returned array may be longer. - The rented array from the pool. This array must be returned when it is no longer needed. - - - - Return an array to the pool. - - The array that is being returned. - - - - Provides an interface to enable a class to return line and position information. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - The current line number or 0 if no line information is available (for example, when returns false). - - - - Gets the current line position. - - The current line position or 0 if no line information is available (for example, when returns false). - - - - Instructs the how to serialize the collection. - - - - - Gets or sets a value indicating whether null items are allowed in the collection. - - true if null items are allowed in the collection; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with a flag indicating whether the array can contain null items. - - A flag indicating whether the array can contain null items. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to use the specified constructor when deserializing that object. - - - - - Instructs the how to serialize the object. - - - - - Gets or sets the id. - - The id. - - - - Gets or sets the title. - - The title. - - - - Gets or sets the description. - - The description. - - - - Gets or sets the collection's items converter. - - The collection's items converter. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets a value that indicates whether to preserve object references. - - - true to keep object reference; otherwise, false. The default is false. - - - - - Gets or sets a value that indicates whether to preserve collection's items references. - - - true to keep collection's items object references; otherwise, false. The default is false. - - - - - Gets or sets the reference loop handling used when serializing the collection's items. - - The reference loop handling. - - - - Gets or sets the type name handling used when serializing the collection's items. - - The type name handling. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Provides methods for converting between .NET types and JSON types. - - - - - - - - Gets or sets a function that creates default . - Default settings are automatically used by serialization methods on , - and and on . - To serialize without using any default settings create a with - . - - - - - Represents JavaScript's boolean value true as a string. This field is read-only. - - - - - Represents JavaScript's boolean value false as a string. This field is read-only. - - - - - Represents JavaScript's null as a string. This field is read-only. - - - - - Represents JavaScript's undefined as a string. This field is read-only. - - - - - Represents JavaScript's positive infinity as a string. This field is read-only. - - - - - Represents JavaScript's negative infinity as a string. This field is read-only. - - - - - Represents JavaScript's NaN as a string. This field is read-only. - - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - The time zone handling when the date is converted to a string. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - The string escape handling. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Serializes the specified object to a JSON string. - - The object to serialize. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting. - - The object to serialize. - Indicates how the output should be formatted. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a collection of . - - The object to serialize. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting and a collection of . - - The object to serialize. - Indicates how the output should be formatted. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Deserializes the JSON to a .NET object. - - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to a .NET object using . - - The JSON to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The JSON to deserialize. - The of object being deserialized. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The type of the object to deserialize to. - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the given anonymous type. - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the given anonymous type using . - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The type of the object to deserialize to. - The JSON to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The type of the object to deserialize to. - The object to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The JSON to deserialize. - The type of the object to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The JSON to deserialize. - The type of the object to deserialize to. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Populates the object with values from the JSON string. - - The JSON to populate values from. - The target object to populate values onto. - - - - Populates the object with values from the JSON string using . - - The JSON to populate values from. - The target object to populate values onto. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - - - - Serializes the to a JSON string. - - The node to serialize. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to serialize. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Serializes the to a JSON string. - - The node to convert to JSON. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to convert to JSON. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Converts an object to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can read JSON. - - true if this can read JSON; otherwise, false. - - - - Gets a value indicating whether this can write JSON. - - true if this can write JSON; otherwise, false. - - - - Converts an object to and from JSON. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. If there is no existing value then null will be used. - The existing value has a value. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Instructs the to use the specified when serializing the member or class. - - - - - Gets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - - - - - Initializes a new instance of the class. - - Type of the . - - - - Initializes a new instance of the class. - - Type of the . - Parameter list to use when constructing the . Can be null. - - - - Represents a collection of . - - - - - Instructs the how to serialize the collection. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Instructs the to deserialize properties with no matching class member into the specified collection - and write values during serialization. - - - - - Gets or sets a value that indicates whether to write extension data when serializing the object. - - - true to write extension data when serializing the object; otherwise, false. The default is true. - - - - - Gets or sets a value that indicates whether to read extension data when deserializing the object. - - - true to read extension data when deserializing the object; otherwise, false. The default is true. - - - - - Initializes a new instance of the class. - - - - - Instructs the not to serialize the public field or public read/write property value. - - - - - Base class for a table of atomized string objects. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Instructs the how to serialize the object. - - - - - Gets or sets the member serialization. - - The member serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified member serialization. - - The member serialization. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to always serialize the member with the specified name. - - - - - Gets or sets the type used when serializing the property's collection items. - - The collection's items type. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the null value handling used when serializing this property. - - The null value handling. - - - - Gets or sets the default value handling used when serializing this property. - - The default value handling. - - - - Gets or sets the reference loop handling used when serializing this property. - - The reference loop handling. - - - - Gets or sets the object creation handling used when deserializing this property. - - The object creation handling. - - - - Gets or sets the type name handling used when serializing this property. - - The type name handling. - - - - Gets or sets whether this property's value is serialized as a reference. - - Whether this property's value is serialized as a reference. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets a value indicating whether this property is required. - - - A value indicating whether this property is required. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified name. - - Name of the property. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously skips the children of the current token. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Specifies the state of the reader. - - - - - A read method has not been called. - - - - - The end of the file has been reached successfully. - - - - - Reader is at a property. - - - - - Reader is at the start of an object. - - - - - Reader is in an object. - - - - - Reader is at the start of an array. - - - - - Reader is in an array. - - - - - The method has been called. - - - - - Reader has just read a value. - - - - - Reader is at the start of a constructor. - - - - - Reader is in a constructor. - - - - - An error occurred that prevents the read operation from continuing. - - - - - The end of the file has been reached successfully. - - - - - Gets the current reader state. - - The current reader state. - - - - Gets or sets a value indicating whether the source should be closed when this reader is closed. - - - true to close the source when this reader is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether multiple pieces of JSON content can - be read from a continuous stream without erroring. - - - true to support reading multiple pieces of JSON content; otherwise false. - The default is false. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - Gets or sets how time zones are handled when reading JSON. - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Gets or sets how custom date formatted strings are parsed when reading JSON. - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets the type of the current JSON token. - - - - - Gets the text value of the current JSON token. - - - - - Gets the .NET type for the current JSON token. - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets or sets the culture used when reading JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Reads the next JSON token from the source. - - true if the next token was read successfully; false if there are no more tokens to read. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Skips the children of the current token. - - - - - Sets the current token. - - The new token. - - - - Sets the current token and value. - - The new token. - The value. - - - - Sets the current token and value. - - The new token. - The value. - A flag indicating whether the position index inside an array should be updated. - - - - Sets the state based on current token type. - - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Changes the reader's state to . - If is set to true, the source is also closed. - - - - - The exception thrown when an error occurs while reading JSON text. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Instructs the to always serialize the member, and to require that the member has a value. - - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Serializes and deserializes objects into and from the JSON format. - The enables you to control how objects are encoded into JSON. - - - - - Occurs when the errors during serialization and deserialization. - - - - - Gets or sets the used by the serializer when resolving references. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - - - - Gets or sets how reference loops (e.g. a class referencing itself) is handled. - The default value is . - - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets a collection that will be used during serialization. - - Collection that will be used during serialization. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. - The default value is false. - - - true if there will be a check for additional JSON content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Creates a new instance. - The will not use default settings - from . - - - A new instance. - The will not use default settings - from . - - - - - Creates a new instance using the specified . - The will not use default settings - from . - - The settings to be applied to the . - - A new instance using the specified . - The will not use default settings - from . - - - - - Creates a new instance. - The will use default settings - from . - - - A new instance. - The will use default settings - from . - - - - - Creates a new instance using the specified . - The will use default settings - from as well as the specified . - - The settings to be applied to the . - - A new instance using the specified . - The will use default settings - from as well as the specified . - - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Deserializes the JSON structure contained by the specified . - - The that contains the JSON structure to deserialize. - The being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The type of the object to deserialize. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is Auto to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Specifies the settings on a object. - - - - - Gets or sets how reference loops (e.g. a class referencing itself) are handled. - The default value is . - - Reference loop handling. - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - Missing member handling. - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - Null value handling. - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - The default value handling. - - - - Gets or sets a collection that will be used during serialization. - - The converters. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - The preserve references handling. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - The type name handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - The contract resolver. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets the used by the serializer when resolving references. - - The reference resolver. - - - - Gets or sets a function that creates the used by the serializer when resolving references. - - A function that creates the used by the serializer when resolving references. - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the error handler called during serialization and deserialization. - - The error handler called during serialization and deserialization. - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets a value indicating whether there will be a check for additional content after deserializing an object. - The default value is false. - - - true if there will be a check for additional content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Represents a reader that provides fast, non-cached, forward-only access to JSON text data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Initializes a new instance of the class with the specified . - - The containing the JSON data to read. - - - - Gets or sets the reader's property name table. - - - - - Gets or sets the reader's character buffer pool. - - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - - The current line number or 0 if no line information is available (for example, returns false). - - - - - Gets the current line position. - - - The current line position or 0 if no line information is available (for example, returns false). - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Gets or sets the writer's character array pool. - - - - - Gets or sets how many s to write for each level in the hierarchy when is set to . - - - - - Gets or sets which character to use to quote attribute values. - - - - - Gets or sets which character to use for indenting when is set to . - - - - - Gets or sets a value indicating whether object names will be surrounded with quotes. - - - - - Initializes a new instance of the class using the specified . - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying . - - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the specified end token. - - The end token to write. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Specifies the type of JSON token. - - - - - This is returned by the if a read method has not been called. - - - - - An object start token. - - - - - An array start token. - - - - - A constructor start token. - - - - - An object property name. - - - - - A comment. - - - - - Raw JSON. - - - - - An integer. - - - - - A float. - - - - - A string. - - - - - A boolean. - - - - - A null token. - - - - - An undefined token. - - - - - An object end token. - - - - - An array end token. - - - - - A constructor end token. - - - - - A Date. - - - - - Byte data. - - - - - - Represents a reader that provides validation. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Sets an event handler for receiving schema validation errors. - - - - - Gets the text value of the current JSON token. - - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - - Gets the type of the current JSON token. - - - - - - Gets the .NET type for the current JSON token. - - - - - - Initializes a new instance of the class that - validates the content returned from the given . - - The to read from while validating. - - - - Gets or sets the schema. - - The schema. - - - - Gets the used to construct this . - - The specified in the constructor. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a []. - - - A [] or null if the next JSON token is null. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously ets the state of the . - - The being written. - The value being written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Gets or sets a value indicating whether the destination should be closed when this writer is closed. - - - true to close the destination when this writer is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. - - - true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. - - - - - Gets the top. - - The top. - - - - Gets the state of the writer. - - - - - Gets the path of the writer. - - - - - Gets or sets a value indicating how JSON text output should be formatted. - - - - - Gets or sets how dates are written to JSON text. - - - - - Gets or sets how time zones are handled when writing JSON text. - - - - - Gets or sets how strings are escaped when writing JSON text. - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written to JSON text. - - - - - Gets or sets how and values are formatted when writing JSON text. - - - - - Gets or sets the culture used when writing JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the destination and also flushes the destination. - - - - - Closes this writer. - If is set to true, the destination is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the end of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the end of an array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end constructor. - - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes the end of the current JSON object or array. - - - - - Writes the current token and its children. - - The to read the token from. - - - - Writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - - - - Writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - - - - Writes the token. - - The to write. - - - - Writes the specified end token. - - The end token to write. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON without changing the writer's state. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Sets the state of the . - - The being written. - The value being written. - - - - The exception thrown when an error occurs while writing JSON text. - - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Specifies how JSON comments are handled when loading JSON. - - - - - Ignore comments. - - - - - Load comments as a with type . - - - - - Specifies how duplicate property names are handled when loading JSON. - - - - - Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. - - - - - Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. - - - - - Throw a when a duplicate property is encountered. - - - - - Contains the LINQ to JSON extension methods. - - - - - Returns a collection of tokens that contains the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the descendants of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, and the descendants of every token in the source collection. - - - - Returns a collection of child properties of every object in the source collection. - - An of that contains the source collection. - An of that contains the properties of every object in the source collection. - - - - Returns a collection of child values of every object in the source collection with the given key. - - An of that contains the source collection. - The token key. - An of that contains the values of every token in the source collection with the given key. - - - - Returns a collection of child values of every object in the source collection. - - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child values of every object in the source collection with the given key. - - The type to convert the values to. - An of that contains the source collection. - The token key. - An that contains the converted values of every token in the source collection with the given key. - - - - Returns a collection of converted child values of every object in the source collection. - - The type to convert the values to. - An of that contains the source collection. - An that contains the converted values of every token in the source collection. - - - - Converts the value. - - The type to convert the value to. - A cast as a of . - A converted value. - - - - Converts the value. - - The source collection type. - The type to convert the value to. - A cast as a of . - A converted value. - - - - Returns a collection of child tokens of every array in the source collection. - - The source collection type. - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child tokens of every array in the source collection. - - An of that contains the source collection. - The type to convert the values to. - The source collection type. - An that contains the converted values of every token in the source collection. - - - - Returns the input typed as . - - An of that contains the source collection. - The input typed as . - - - - Returns the input typed as . - - The source collection type. - An of that contains the source collection. - The input typed as . - - - - Represents a collection of objects. - - The type of token. - - - - Gets the of with the specified key. - - - - - - Represents a JSON array. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Loads an from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads an from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the at the specified index. - - - - - - Determines the index of a specific item in the . - - The object to locate in the . - - The index of if found in the list; otherwise, -1. - - - - - Inserts an item to the at the specified index. - - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - - - - - Removes the item at the specified index. - - The zero-based index of the item to remove. - - is not a valid index in the . - - - - - Returns an enumerator that iterates through the collection. - - - A of that can be used to iterate through the collection. - - - - - Adds an item to the . - - The object to add to the . - - - - Removes all items from the . - - - - - Determines whether the contains a specific value. - - The object to locate in the . - - true if is found in the ; otherwise, false. - - - - - Copies the elements of the to an array, starting at a particular array index. - - The array. - Index of the array. - - - - Gets a value indicating whether the is read-only. - - true if the is read-only; otherwise, false. - - - - Removes the first occurrence of a specific object from the . - - The object to remove from the . - - true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . - - - - - Represents a JSON constructor. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets or sets the name of this constructor. - - The constructor name. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name. - - The constructor name. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a token that can contain other tokens. - - - - - Occurs when the list changes or an item in the list changes. - - - - - Occurs before an item is added to the collection. - - - - - Occurs when the items list of the collection has changed, or the collection is reset. - - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Get the first child token of this token. - - - A containing the first child token of the . - - - - - Get the last child token of this token. - - - A containing the last child token of the . - - - - - Returns a collection of the child tokens of this token, in document order. - - - An of containing the child tokens of this , in document order. - - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - - A containing the child values of this , in document order. - - - - - Returns a collection of the descendant tokens for this token in document order. - - An of containing the descendant tokens of the . - - - - Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. - - An of containing this token, and all the descendant tokens of the . - - - - Adds the specified content as children of this . - - The content to be added. - - - - Adds the specified content as the first children of this . - - The content to be added. - - - - Creates a that can be used to add tokens to the . - - A that is ready to have content written to it. - - - - Replaces the child nodes of this token with the specified content. - - The content. - - - - Removes the child nodes from this token. - - - - - Merge the specified content into this . - - The content to be merged. - - - - Merge the specified content into this using . - - The content to be merged. - The used to merge the content. - - - - Gets the count of child JSON tokens. - - The count of child JSON tokens. - - - - Represents a collection of objects. - - The type of token. - - - - An empty collection of objects. - - - - - Initializes a new instance of the struct. - - The enumerable. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Gets the of with the specified key. - - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Represents a JSON object. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Occurs when a property value changes. - - - - - Occurs when a property value is changing. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Gets the node type for this . - - The type. - - - - Gets an of of this object's properties. - - An of of this object's properties. - - - - Gets a with the specified name. - - The property name. - A with the specified name or null. - - - - Gets the with the specified name. - The exact name will be searched for first and if no matching property is found then - the will be used to match a property. - - The property name. - One of the enumeration values that specifies how the strings will be compared. - A matched with the specified name or null. - - - - Gets a of of this object's property values. - - A of of this object's property values. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the with the specified property name. - - - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified property name. - - Name of the property. - The with the specified property name. - - - - Gets the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - One of the enumeration values that specifies how the strings will be compared. - The with the specified property name. - - - - Tries to get the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - The value. - One of the enumeration values that specifies how the strings will be compared. - true if a value was successfully retrieved; otherwise, false. - - - - Adds the specified property name. - - Name of the property. - The value. - - - - Determines whether the JSON object has the specified property name. - - Name of the property. - true if the JSON object has the specified property name; otherwise, false. - - - - Removes the property with the specified name. - - Name of the property. - true if item was successfully removed; otherwise, false. - - - - Tries to get the with the specified property name. - - Name of the property. - The value. - true if a value was successfully retrieved; otherwise, false. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Represents a JSON property. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the property name. - - The property name. - - - - Gets or sets the property value. - - The property value. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a view of a . - - - - - Initializes a new instance of the class. - - The name. - - - - When overridden in a derived class, returns whether resetting an object changes its value. - - - true if resetting the component changes its value; otherwise, false. - - The component to test for reset capability. - - - - When overridden in a derived class, gets the current value of the property on a component. - - - The value of a property for a given component. - - The component with the property for which to retrieve the value. - - - - When overridden in a derived class, resets the value for this property of the component to the default value. - - The component with the property value that is to be reset to the default value. - - - - When overridden in a derived class, sets the value of the component to a different value. - - The component with the property value that is to be set. - The new value. - - - - When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. - - - true if the property should be persisted; otherwise, false. - - The component with the property to be examined for persistence. - - - - When overridden in a derived class, gets the type of the component this property is bound to. - - - A that represents the type of component this property is bound to. - When the or - - methods are invoked, the object specified might be an instance of this type. - - - - - When overridden in a derived class, gets a value indicating whether this property is read-only. - - - true if the property is read-only; otherwise, false. - - - - - When overridden in a derived class, gets the type of the property. - - - A that represents the type of the property. - - - - - Gets the hash code for the name of the member. - - - - The hash code for the name of the member. - - - - - Represents a raw JSON string. - - - - - Asynchronously creates an instance of with the content of the reader's current token. - - The reader. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns an instance of with the content of the reader's current token. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class. - - The raw json. - - - - Creates an instance of with the content of the reader's current token. - - The reader. - An instance of with the content of the reader's current token. - - - - Specifies the settings used when loading JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets how JSON comments are handled when loading JSON. - The default value is . - - The JSON comment handling. - - - - Gets or sets how JSON line info is handled when loading JSON. - The default value is . - - The JSON line info handling. - - - - Gets or sets how duplicate property names in JSON objects are handled when loading JSON. - The default value is . - - The JSON duplicate property name handling. - - - - Specifies the settings used when merging JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets the method used when merging JSON arrays. - - The method used when merging JSON arrays. - - - - Gets or sets how null value properties are merged. - - How null value properties are merged. - - - - Gets or sets the comparison used to match property names while merging. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - The comparison used to match property names while merging. - - - - Specifies the settings used when selecting JSON. - - - - - Gets or sets a timeout that will be used when executing regular expressions. - - The timeout that will be used when executing regular expressions. - - - - Gets or sets a flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - A flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - - - Represents an abstract JSON token. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Writes this token to a asynchronously. - - A into which this method will write. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Gets a comparer that can compare two tokens for value equality. - - A that can compare two nodes for value equality. - - - - Gets or sets the parent. - - The parent. - - - - Gets the root of this . - - The root of this . - - - - Gets the node type for this . - - The type. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Compares the values of two tokens, including the values of all descendant tokens. - - The first to compare. - The second to compare. - true if the tokens are equal; otherwise false. - - - - Gets the next sibling token of this node. - - The that contains the next sibling token. - - - - Gets the previous sibling token of this node. - - The that contains the previous sibling token. - - - - Gets the path of the JSON token. - - - - - Adds the specified content immediately after this token. - - A content object that contains simple content or a collection of content objects to be added after this token. - - - - Adds the specified content immediately before this token. - - A content object that contains simple content or a collection of content objects to be added before this token. - - - - Returns a collection of the ancestor tokens of this token. - - A collection of the ancestor tokens of this token. - - - - Returns a collection of tokens that contain this token, and the ancestors of this token. - - A collection of tokens that contain this token, and the ancestors of this token. - - - - Returns a collection of the sibling tokens after this token, in document order. - - A collection of the sibling tokens after this tokens, in document order. - - - - Returns a collection of the sibling tokens before this token, in document order. - - A collection of the sibling tokens before this token, in document order. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets the with the specified key converted to the specified type. - - The type to convert the token to. - The token key. - The converted token value. - - - - Get the first child token of this token. - - A containing the first child token of the . - - - - Get the last child token of this token. - - A containing the last child token of the . - - - - Returns a collection of the child tokens of this token, in document order. - - An of containing the child tokens of this , in document order. - - - - Returns a collection of the child tokens of this token, in document order, filtered by the specified type. - - The type to filter the child tokens on. - A containing the child tokens of this , in document order. - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - A containing the child values of this , in document order. - - - - Removes this token from its parent. - - - - - Replaces this token with the specified token. - - The value. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Returns the indented JSON for this token. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - The indented JSON for this token. - - - - - Returns the JSON for this token using the given formatting and converters. - - Indicates how the output should be formatted. - A collection of s which will be used when writing the token. - The JSON for this token using the given formatting and converters. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to []. - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from [] to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Creates a for this token. - - A that can be used to read this token and its descendants. - - - - Creates a from an object. - - The object that will be used to create . - A with the value of the specified object. - - - - Creates a from an object using the specified . - - The object that will be used to create . - The that will be used when reading the object. - A with the value of the specified object. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - Creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A , or null. - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - A . - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - The used to select tokens. - A . - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - The used to select tokens. - An of that contains the selected elements. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Creates a new instance of the . All child tokens are recursively cloned. - - A new instance of the . - - - - Adds an object to the annotation list of this . - - The annotation to add. - - - - Get the first annotation object of the specified type from this . - - The type of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets the first annotation object of the specified type from this . - - The of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets a collection of annotations of the specified type for this . - - The type of the annotations to retrieve. - An that contains the annotations for this . - - - - Gets a collection of annotations of the specified type for this . - - The of the annotations to retrieve. - An of that contains the annotations that match the specified type for this . - - - - Removes the annotations of the specified type from this . - - The type of annotations to remove. - - - - Removes the annotations of the specified type from this . - - The of annotations to remove. - - - - Compares tokens to determine whether they are equal. - - - - - Determines whether the specified objects are equal. - - The first object of type to compare. - The second object of type to compare. - - true if the specified objects are equal; otherwise, false. - - - - - Returns a hash code for the specified object. - - The for which a hash code is to be returned. - A hash code for the specified object. - The type of is a reference type and is null. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Gets the at the reader's current position. - - - - - Initializes a new instance of the class. - - The token to read from. - - - - Initializes a new instance of the class. - - The token to read from. - The initial path of the token. It is prepended to the returned . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Gets the path of the current JSON token. - - - - - Specifies the type of token. - - - - - No token type has been set. - - - - - A JSON object. - - - - - A JSON array. - - - - - A JSON constructor. - - - - - A JSON object property. - - - - - A comment. - - - - - An integer value. - - - - - A float value. - - - - - A string value. - - - - - A boolean value. - - - - - A null value. - - - - - An undefined value. - - - - - A date value. - - - - - A raw JSON value. - - - - - A collection of bytes value. - - - - - A Guid value. - - - - - A Uri value. - - - - - A TimeSpan value. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Gets the at the writer's current position. - - - - - Gets the token being written. - - The token being written. - - - - Initializes a new instance of the class writing to the given . - - The container being written to. - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the underlying . - - - - - Closes this writer. - If is set to true, the JSON is auto-completed. - - - Setting to true has no additional effect, since the underlying is a type that cannot be closed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end. - - The token. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes a value. - An error will be raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Represents a value in JSON (string, integer, date, etc). - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Creates a comment with the given value. - - The value. - A comment with the given value. - - - - Creates a string with the given value. - - The value. - A string with the given value. - - - - Creates a null value. - - A null value. - - - - Creates a undefined value. - - A undefined value. - - - - Gets the node type for this . - - The type. - - - - Gets or sets the underlying token value. - - The underlying token value. - - - - Writes this token to a . - - A into which this method will write. - A collection of s which will be used when writing the token. - - - - Indicates whether the current object is equal to another object of the same type. - - - true if the current object is equal to the parameter; otherwise, false. - - An object to compare with this object. - - - - Determines whether the specified is equal to the current . - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Returns a that represents this instance. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format provider. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - The format provider. - - A that represents this instance. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: - Value - Meaning - Less than zero - This instance is less than . - Zero - This instance is equal to . - Greater than zero - This instance is greater than . - - - is not of the same type as this instance. - - - - - Specifies how line information is handled when loading JSON. - - - - - Ignore line information. - - - - - Load line information. - - - - - Specifies how JSON arrays are merged together. - - - - Concatenate arrays. - - - Union arrays, skipping items that already exist. - - - Replace all array items. - - - Merge array items together, matched by index. - - - - Specifies how null value properties are merged. - - - - - The content's null value properties will be ignored during merging. - - - - - The content's null value properties will be merged. - - - - - Specifies the member serialization options for the . - - - - - All public members are serialized by default. Members can be excluded using or . - This is the default member serialization mode. - - - - - Only members marked with or are serialized. - This member serialization mode can also be set by marking the class with . - - - - - All public and private fields are serialized. Members can be excluded using or . - This member serialization mode can also be set by marking the class with - and setting IgnoreSerializableAttribute on to false. - - - - - Specifies metadata property handling options for the . - - - - - Read metadata properties located at the start of a JSON object. - - - - - Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. - - - - - Do not try to read metadata properties. - - - - - Specifies missing member handling options for the . - - - - - Ignore a missing member and do not attempt to deserialize it. - - - - - Throw a when a missing member is encountered during deserialization. - - - - - Specifies null value handling options for the . - - - - - - - - - Include null values when serializing and deserializing objects. - - - - - Ignore null values when serializing and deserializing objects. - - - - - Specifies how object creation is handled by the . - - - - - Reuse existing objects, create new objects when needed. - - - - - Only reuse existing objects. - - - - - Always create new objects. - - - - - Specifies reference handling options for the . - Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . - - - - - - - - Do not preserve references when serializing types. - - - - - Preserve references when serializing into a JSON object structure. - - - - - Preserve references when serializing into a JSON array structure. - - - - - Preserve references when serializing. - - - - - Specifies reference loop handling options for the . - - - - - Throw a when a loop is encountered. - - - - - Ignore loop references and do not serialize. - - - - - Serialize loop references. - - - - - Indicating whether a property is required. - - - - - The property is not required. The default state. - - - - - The property must be defined in JSON but can be a null value. - - - - - The property must be defined in JSON and cannot be a null value. - - - - - The property is not required but it cannot be a null value. - - - - - - Contains the JSON schema extension methods. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - true if the specified is valid; otherwise, false. - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - When this method returns, contains any error messages generated while validating. - - true if the specified is valid; otherwise, false. - - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - The validation event handler. - - - - - An in-memory representation of a JSON Schema. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the id. - - - - - Gets or sets the title. - - - - - Gets or sets whether the object is required. - - - - - Gets or sets whether the object is read-only. - - - - - Gets or sets whether the object is visible to users. - - - - - Gets or sets whether the object is transient. - - - - - Gets or sets the description of the object. - - - - - Gets or sets the types of values allowed by the object. - - The type. - - - - Gets or sets the pattern. - - The pattern. - - - - Gets or sets the minimum length. - - The minimum length. - - - - Gets or sets the maximum length. - - The maximum length. - - - - Gets or sets a number that the value should be divisible by. - - A number that the value should be divisible by. - - - - Gets or sets the minimum. - - The minimum. - - - - Gets or sets the maximum. - - The maximum. - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). - - A flag indicating whether the value can not equal the number defined by the minimum attribute (). - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). - - A flag indicating whether the value can not equal the number defined by the maximum attribute (). - - - - Gets or sets the minimum number of items. - - The minimum number of items. - - - - Gets or sets the maximum number of items. - - The maximum number of items. - - - - Gets or sets the of items. - - The of items. - - - - Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . - - - true if items are validated using their array position; otherwise, false. - - - - - Gets or sets the of additional items. - - The of additional items. - - - - Gets or sets a value indicating whether additional items are allowed. - - - true if additional items are allowed; otherwise, false. - - - - - Gets or sets whether the array items must be unique. - - - - - Gets or sets the of properties. - - The of properties. - - - - Gets or sets the of additional properties. - - The of additional properties. - - - - Gets or sets the pattern properties. - - The pattern properties. - - - - Gets or sets a value indicating whether additional properties are allowed. - - - true if additional properties are allowed; otherwise, false. - - - - - Gets or sets the required property if this property is present. - - The required property if this property is present. - - - - Gets or sets the a collection of valid enum values allowed. - - A collection of valid enum values allowed. - - - - Gets or sets disallowed types. - - The disallowed types. - - - - Gets or sets the default value. - - The default value. - - - - Gets or sets the collection of that this schema extends. - - The collection of that this schema extends. - - - - Gets or sets the format. - - The format. - - - - Initializes a new instance of the class. - - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The object representing the JSON Schema. - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The to use when resolving schema references. - The object representing the JSON Schema. - - - - Load a from a string that contains JSON Schema. - - A that contains JSON Schema. - A populated from the string that contains JSON Schema. - - - - Load a from a string that contains JSON Schema using the specified . - - A that contains JSON Schema. - The resolver. - A populated from the string that contains JSON Schema. - - - - Writes this schema to a . - - A into which this method will write. - - - - Writes this schema to a using the specified . - - A into which this method will write. - The resolver used. - - - - Returns a that represents the current . - - - A that represents the current . - - - - - - Returns detailed information about the schema exception. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - - Generates a from a specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets how undefined schemas are handled by the serializer. - - - - - Gets or sets the contract resolver. - - The contract resolver. - - - - Generate a from the specified type. - - The type to generate a from. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - - Resolves from an id. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the loaded schemas. - - The loaded schemas. - - - - Initializes a new instance of the class. - - - - - Gets a for the specified reference. - - The id. - A for the specified reference. - - - - - The value types allowed by the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - No type specified. - - - - - String type. - - - - - Float type. - - - - - Integer type. - - - - - Boolean type. - - - - - Object type. - - - - - Array type. - - - - - Null type. - - - - - Any type. - - - - - - Specifies undefined schema Id handling options for the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Do not infer a schema Id. - - - - - Use the .NET type name as the schema Id. - - - - - Use the assembly qualified .NET type name as the schema Id. - - - - - - Returns detailed information related to the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the associated with the validation error. - - The JsonSchemaException associated with the validation error. - - - - Gets the path of the JSON location where the validation error occurred. - - The path of the JSON location where the validation error occurred. - - - - Gets the text description corresponding to the validation error. - - The text description. - - - - - Represents the callback method that will handle JSON schema validation events and the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - A camel case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Resolves member mappings for a type, camel casing property names. - - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used by to resolve a for a given . - - - - - Gets a value indicating whether members are being get and set using dynamic code generation. - This value is determined by the runtime permissions available. - - - true if using dynamic code generation; otherwise, false. - - - - - Gets or sets the default members search flags. - - The default members search flags. - - - - Gets or sets a value indicating whether compiler generated members should be serialized. - - - true if serialized compiler generated members; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. - - - true if the interface will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. - - - true if the attribute will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. - - - true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. - - - true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. - - The naming strategy used to resolve how property names and dictionary keys are serialized. - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Gets the serializable members for the type. - - The type to get serializable members for. - The serializable members for the type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates the constructor parameters. - - The constructor to create properties for. - The type's member properties. - Properties for the given . - - - - Creates a for the given . - - The matching member property. - The constructor parameter. - A created for the given . - - - - Resolves the default for the contract. - - Type of the object. - The contract's default . - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Determines which contract type is created for the given type. - - Type of the object. - A for the given type. - - - - Creates properties for the given . - - The type to create properties for. - /// The member serialization mode for the type. - Properties for the given . - - - - Creates the used by the serializer to get and set values from a member. - - The member. - The used by the serializer to get and set values from a member. - - - - Creates a for the given . - - The member's parent . - The member to create a for. - A created for the given . - - - - Resolves the name of the property. - - Name of the property. - Resolved name of the property. - - - - Resolves the name of the extension data. By default no changes are made to extension data names. - - Name of the extension data. - Resolved name of the extension data. - - - - Resolves the key of the dictionary. By default is used to resolve dictionary keys. - - Key of the dictionary. - Resolved key of the dictionary. - - - - Gets the resolved name of the property. - - Name of the property. - Name of the property. - - - - The default naming strategy. Property names and dictionary keys are unchanged. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - The default serialization binder used when resolving and loading classes from type names. - - - - - Initializes a new instance of the class. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - The type of the object the formatter creates a new instance of. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer that writes to the application's instances. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides information surrounding an error. - - - - - Gets the error. - - The error. - - - - Gets the original object that caused the error. - - The original object that caused the error. - - - - Gets the member that caused the error. - - The member that caused the error. - - - - Gets the path of the JSON location where the error occurred. - - The path of the JSON location where the error occurred. - - - - Gets or sets a value indicating whether this is handled. - - true if handled; otherwise, false. - - - - Provides data for the Error event. - - - - - Gets the current object the error event is being raised against. - - The current object the error event is being raised against. - - - - Gets the error context. - - The error context. - - - - Initializes a new instance of the class. - - The current object. - The error context. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides methods to get attributes. - - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Used by to resolve a for a given . - - - - - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used to resolve references when serializing and deserializing JSON by the . - - - - - Resolves a reference to its object. - - The serialization context. - The reference to resolve. - The object that was resolved from the reference. - - - - Gets the reference for the specified object. - - The serialization context. - The object to get a reference for. - The reference to the object. - - - - Determines whether the specified object is referenced. - - The serialization context. - The object to test for a reference. - - true if the specified object is referenced; otherwise, false. - - - - - Adds a reference to the specified object. - - The serialization context. - The reference. - The object to reference. - - - - Allows users to control class loading and mandate what class to load. - - - - - When implemented, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object - The type of the object the formatter creates a new instance of. - - - - When implemented, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - The that will be used to filter the trace messages passed to the writer. - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Provides methods to get and set values. - - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Contract details for a used by the . - - - - - Gets the of the collection items. - - The of the collection items. - - - - Gets a value indicating whether the collection type is a multidimensional array. - - true if the collection type is a multidimensional array; otherwise, false. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the collection values. - - true if the creator has a parameter with the collection values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the default collection items . - - The converter. - - - - Gets or sets a value indicating whether the collection items preserve object references. - - true if collection items preserve object references; otherwise, false. - - - - Gets or sets the collection item reference loop handling. - - The reference loop handling. - - - - Gets or sets the collection item type name handling. - - The type name handling. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Handles serialization callback events. - - The object that raised the callback event. - The streaming context. - - - - Handles serialization error callback events. - - The object that raised the callback event. - The streaming context. - The error context. - - - - Sets extension data for an object during deserialization. - - The object to set extension data on. - The extension data key. - The extension data value. - - - - Gets extension data for an object during serialization. - - The object to set extension data on. - - - - Contract details for a used by the . - - - - - Gets the underlying type for the contract. - - The underlying type for the contract. - - - - Gets or sets the type created during deserialization. - - The type created during deserialization. - - - - Gets or sets whether this type contract is serialized as a reference. - - Whether this type contract is serialized as a reference. - - - - Gets or sets the default for this contract. - - The converter. - - - - Gets the internally resolved for the contract's type. - This converter is used as a fallback converter when no other converter is resolved. - Setting will always override this converter. - - - - - Gets or sets all methods called immediately after deserialization of the object. - - The methods called immediately after deserialization of the object. - - - - Gets or sets all methods called during deserialization of the object. - - The methods called during deserialization of the object. - - - - Gets or sets all methods called after serialization of the object graph. - - The methods called after serialization of the object graph. - - - - Gets or sets all methods called before serialization of the object. - - The methods called before serialization of the object. - - - - Gets or sets all method called when an error is thrown during the serialization of the object. - - The methods called when an error is thrown during the serialization of the object. - - - - Gets or sets the default creator method used to create the object. - - The default creator method used to create the object. - - - - Gets or sets a value indicating whether the default creator is non-public. - - true if the default object creator is non-public; otherwise, false. - - - - Contract details for a used by the . - - - - - Gets or sets the dictionary key resolver. - - The dictionary key resolver. - - - - Gets the of the dictionary keys. - - The of the dictionary keys. - - - - Gets the of the dictionary values. - - The of the dictionary values. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the dictionary values. - - true if the creator has a parameter with the dictionary values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets the object's properties. - - The object's properties. - - - - Gets or sets the property name resolver. - - The property name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object constructor. - - The object constructor. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object member serialization. - - The member object serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets the object's properties. - - The object's properties. - - - - Gets a collection of instances that define the parameters used with . - - - - - Gets or sets the function used to create the object. When set this function will override . - This function is called with a collection of arguments which are defined by the collection. - - The function used to create the object. - - - - Gets or sets the extension data setter. - - - - - Gets or sets the extension data getter. - - - - - Gets or sets the extension data value type. - - - - - Gets or sets the extension data name resolver. - - The extension data name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Maps a JSON property to a .NET member or constructor parameter. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the type that declared this property. - - The type that declared this property. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets the name of the underlying member or parameter. - - The name of the underlying member or parameter. - - - - Gets the that will get and set the during serialization. - - The that will get and set the during serialization. - - - - Gets or sets the for this property. - - The for this property. - - - - Gets or sets the type of the property. - - The type of the property. - - - - Gets or sets the for the property. - If set this converter takes precedence over the contract converter for the property type. - - The converter. - - - - Gets or sets the member converter. - - The member converter. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets or sets a value indicating whether this is readable. - - true if readable; otherwise, false. - - - - Gets or sets a value indicating whether this is writable. - - true if writable; otherwise, false. - - - - Gets or sets a value indicating whether this has a member attribute. - - true if has a member attribute; otherwise, false. - - - - Gets the default value. - - The default value. - - - - Gets or sets a value indicating whether this is required. - - A value indicating whether this is required. - - - - Gets a value indicating whether has a value specified. - - - - - Gets or sets a value indicating whether this property preserves object references. - - - true if this instance is reference; otherwise, false. - - - - - Gets or sets the property null value handling. - - The null value handling. - - - - Gets or sets the property default value handling. - - The default value handling. - - - - Gets or sets the property reference loop handling. - - The reference loop handling. - - - - Gets or sets the property object creation handling. - - The object creation handling. - - - - Gets or sets or sets the type name handling. - - The type name handling. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets a predicate used to determine whether the property should be deserialized. - - A predicate used to determine whether the property should be deserialized. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets an action used to set whether the property has been deserialized. - - An action used to set whether the property has been deserialized. - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Gets or sets the converter used when serializing the property's collection items. - - The collection's items converter. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - A collection of objects. - - - - - Initializes a new instance of the class. - - The type. - - - - When implemented in a derived class, extracts the key from the specified element. - - The element from which to extract the key. - The key for the specified element. - - - - Adds a object. - - The property to add to the collection. - - - - Gets the closest matching object. - First attempts to get an exact case match of and then - a case insensitive match. - - Name of the property. - A matching property if found. - - - - Gets a property by property name. - - The name of the property to get. - Type property name string comparison. - A matching property if found. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Lookup and create an instance of the type described by the argument. - - The type to create. - Optional arguments to pass to an initializing constructor of the JsonConverter. - If null, the default constructor is used. - - - - A kebab case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Represents a trace writer that writes to memory. When the trace message limit is - reached then old trace messages will be removed as new messages are added. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Initializes a new instance of the class. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Returns an enumeration of the most recent trace messages. - - An enumeration of the most recent trace messages. - - - - Returns a of the most recent trace messages. - - - A of the most recent trace messages. - - - - - A base class for resolving how property names and dictionary keys are serialized. - - - - - A flag indicating whether dictionary keys should be processed. - Defaults to false. - - - - - A flag indicating whether extension data names should be processed. - Defaults to false. - - - - - A flag indicating whether explicitly specified property names, - e.g. a property name customized with a , should be processed. - Defaults to false. - - - - - Gets the serialized name for a given property name. - - The initial property name. - A flag indicating whether the property has had a name explicitly specified. - The serialized property name. - - - - Gets the serialized name for a given extension data name. - - The initial extension data name. - The serialized extension data name. - - - - Gets the serialized key for a given dictionary key. - - The initial dictionary key. - The serialized dictionary key. - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Hash code calculation - - - - - - Object equality implementation - - - - - - - Compare to another NamingStrategy - - - - - - - Represents a method that constructs an object. - - The object type to create. - - - - When applied to a method, specifies that the method is called when an error occurs serializing an object. - - - - - Provides methods to get attributes from a , , or . - - - - - Initializes a new instance of the class. - - The instance to get attributes for. This parameter should be a , , or . - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Get and set values for a using reflection. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - A snake case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Specifies how strings are escaped when writing JSON text. - - - - - Only control characters (e.g. newline) are escaped. - - - - - All non-ASCII and control characters (e.g. newline) are escaped. - - - - - HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. - - - - - Indicates the method that will be used during deserialization for locating and loading assemblies. - - - - - In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. - - - - - In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. - - - - - Specifies type name handling options for the . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Do not include the .NET type name when serializing types. - - - - - Include the .NET type name when serializing into a JSON object structure. - - - - - Include the .NET type name when serializing into a JSON array structure. - - - - - Always include the .NET type name when serializing. - - - - - Include the .NET type name when the type of the object being serialized is not the same as its declared type. - Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON - you must specify a root type object with - or . - - - - - Determines whether the collection is null or empty. - - The collection. - - true if the collection is null or empty; otherwise, false. - - - - - Adds the elements of the specified collection to the specified generic . - - The list to add to. - The collection of elements to add. - - - - Converts the value to the specified type. If the value is unable to be converted, the - value is checked whether it assignable to the specified type. - - The value to convert. - The culture to use when converting. - The type to convert or cast the value to. - - The converted type. If conversion was unsuccessful, the initial value - is returned if assignable to the target type. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic that returns a result - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Returns a Restrictions object which includes our current restrictions merged - with a restriction limiting our type - - - - - Helper class for serializing immutable collections. - Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed - https://github.com/JamesNK/Newtonsoft.Json/issues/652 - - - - - Gets the type of the typed collection's items. - - The type. - The type of the typed collection's items. - - - - Gets the member's underlying type. - - The member. - The underlying type of the member. - - - - Determines whether the property is an indexed property. - - The property. - - true if the property is an indexed property; otherwise, false. - - - - - Gets the member's value on the object. - - The member. - The target object. - The member's value on the object. - - - - Sets the member's value on the target object. - - The member. - The target. - The value. - - - - Determines whether the specified MemberInfo can be read. - - The MemberInfo to determine whether can be read. - /// if set to true then allow the member to be gotten non-publicly. - - true if the specified MemberInfo can be read; otherwise, false. - - - - - Determines whether the specified MemberInfo can be set. - - The MemberInfo to determine whether can be set. - if set to true then allow the member to be set non-publicly. - if set to true then allow the member to be set if read-only. - - true if the specified MemberInfo can be set; otherwise, false. - - - - - Builds a string. Unlike this class lets you reuse its internal buffer. - - - - - Determines whether the string is all white space. Empty string will return false. - - The string to test whether it is all white space. - - true if the string is all white space; otherwise, false. - - - - - Specifies the state of the . - - - - - An exception has been thrown, which has left the in an invalid state. - You may call the method to put the in the Closed state. - Any other method calls result in an being thrown. - - - - - The method has been called. - - - - - An object is being written. - - - - - An array is being written. - - - - - A constructor is being written. - - - - - A property is being written. - - - - - A write method has not been called. - - - - Specifies that an output will not be null even if the corresponding type allows it. - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that an output may be null even if the corresponding type disallows it. - - - Specifies that null is allowed as an input even if the corresponding type disallows it. - - - - Specifies that the method will not return if the associated Boolean parameter is passed the specified value. - - - - - Initializes a new instance of the class. - - - The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to - the associated parameter matches this value. - - - - Gets the condition parameter value. - - - diff --git a/AUTS_Studio/bin/Release/SharpCompress.dll b/AUTS_Studio/bin/Release/SharpCompress.dll deleted file mode 100644 index a92f5c1..0000000 Binary files a/AUTS_Studio/bin/Release/SharpCompress.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Buffers.dll b/AUTS_Studio/bin/Release/System.Buffers.dll deleted file mode 100644 index f2d83c5..0000000 Binary files a/AUTS_Studio/bin/Release/System.Buffers.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Buffers.xml b/AUTS_Studio/bin/Release/System.Buffers.xml deleted file mode 100644 index e243dce..0000000 --- a/AUTS_Studio/bin/Release/System.Buffers.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - System.Buffers - - - - Provides a resource pool that enables reusing instances of type . - The type of the objects that are in the resource pool. - - - Initializes a new instance of the class. - - - Creates a new instance of the class. - A new instance of the class. - - - Creates a new instance of the class using the specifed configuration. - The maximum length of an array instance that may be stored in the pool. - The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access. - A new instance of the class with the specified configuration. - - - Retrieves a buffer that is at least the requested length. - The minimum length of the array. - An array of type that is at least minimumLength in length. - - - Returns an array to the pool that was previously obtained using the method on the same instance. - A buffer to return to the pool that was previously obtained using the method. - Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array&#39;s contents are left unchanged. - - - Gets a shared instance. - A shared instance. - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Release/System.Data.SQLite.dll b/AUTS_Studio/bin/Release/System.Data.SQLite.dll deleted file mode 100644 index 4f5314c..0000000 Binary files a/AUTS_Studio/bin/Release/System.Data.SQLite.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Memory.dll b/AUTS_Studio/bin/Release/System.Memory.dll deleted file mode 100644 index 5d19470..0000000 Binary files a/AUTS_Studio/bin/Release/System.Memory.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Memory.xml b/AUTS_Studio/bin/Release/System.Memory.xml deleted file mode 100644 index 4d12fd7..0000000 --- a/AUTS_Studio/bin/Release/System.Memory.xml +++ /dev/null @@ -1,355 +0,0 @@ - - - System.Memory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Release/System.Numerics.Vectors.dll b/AUTS_Studio/bin/Release/System.Numerics.Vectors.dll deleted file mode 100644 index 0865972..0000000 Binary files a/AUTS_Studio/bin/Release/System.Numerics.Vectors.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Numerics.Vectors.xml b/AUTS_Studio/bin/Release/System.Numerics.Vectors.xml deleted file mode 100644 index da34d39..0000000 --- a/AUTS_Studio/bin/Release/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2621 +0,0 @@ - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is &quot;up&quot; from the camera&#39;s point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. - -or- - fieldOfView is greater than or equal to . - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane&#39;s normal vector. - The plane&#39;s distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane&#39;s normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. - -or- - The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. - -or- - index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The one&#39;s complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector&#39;s elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Release/System.Runtime.CompilerServices.Unsafe.dll b/AUTS_Studio/bin/Release/System.Runtime.CompilerServices.Unsafe.dll deleted file mode 100644 index 1908d92..0000000 Binary files a/AUTS_Studio/bin/Release/System.Runtime.CompilerServices.Unsafe.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Runtime.CompilerServices.Unsafe.xml b/AUTS_Studio/bin/Release/System.Runtime.CompilerServices.Unsafe.xml deleted file mode 100644 index b5dd21b..0000000 --- a/AUTS_Studio/bin/Release/System.Runtime.CompilerServices.Unsafe.xml +++ /dev/null @@ -1,258 +0,0 @@ - - - - System.Runtime.CompilerServices.Unsafe - - - - Contains generic, low-level functionality for manipulating pointers. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given void pointer. - The void pointer to add the offset to. - The offset to add. - The type of void pointer. - A new void pointer that reflects the addition of offset to the specified pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Determines whether the specified references point to the same location. - The first reference to compare. - The second reference to compare. - The type of reference. - - if and point to the same location; otherwise, . - - - Casts the given object to the specified type. - The object to cast. - The type which the object will be cast to. - The original object, casted to the given type. - - - Reinterprets the given reference as a reference to a value of type . - The reference to reinterpret. - The type of reference to reinterpret. - The desired type of the reference. - A reference to a value of type . - - - Returns a pointer to the given by-ref parameter. - The object whose pointer is obtained. - The type of object. - A pointer to the given value. - - - Reinterprets the given read-only reference as a reference. - The read-only reference to reinterpret. - The type of reference. - A reference to a value of type . - - - Reinterprets the given location as a reference to a value of type . - The location of the value to reference. - The type of the interpreted location. - A reference to a value of type . - - - Determines the byte offset from origin to target from the given references. - The reference to origin. - The reference to target. - The type of reference. - Byte offset from origin to target i.e. - . - - - Copies a value of type to the given location. - The location to copy to. - A pointer to the value to copy. - The type of value to copy. - - - Copies a value of type to the given location. - The location to copy to. - A reference to the value to copy. - The type of value to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Returns a value that indicates whether a specified reference is greater than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is greater than ; otherwise, . - - - Returns a value that indicates whether a specified reference is less than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is less than ; otherwise, . - - - - - - - - - - Reads a value of type from the given location. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Returns the size of an object of the given type parameter. - The type of object whose size is retrieved. - The size of an object of type . - - - Bypasses definite assignment rules for a given value. - The uninitialized object. - The type of the uninitialized object. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given void pointer. - The void pointer to subtract the offset from. - The offset to subtract. - The type of the void pointer. - A new void pointer that reflects the subtraction of offset from the specified pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of byte offset from pointer. - - - Returns a to a boxed value. - The value to unbox. - The type to be unboxed. - - is , and is a non-nullable value type. - - is not a boxed value type. - --or- - - is not a boxed . - - cannot be found. - A to the boxed value . - - - Writes a value of type to the given location. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Release/System.Text.Encoding.CodePages.dll b/AUTS_Studio/bin/Release/System.Text.Encoding.CodePages.dll deleted file mode 100644 index 2f683a8..0000000 Binary files a/AUTS_Studio/bin/Release/System.Text.Encoding.CodePages.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/System.Text.Encoding.CodePages.xml b/AUTS_Studio/bin/Release/System.Text.Encoding.CodePages.xml deleted file mode 100644 index 2922228..0000000 --- a/AUTS_Studio/bin/Release/System.Text.Encoding.CodePages.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - System.Text.Encoding.CodePages - - - - Provides access to an encoding provider for code pages that otherwise are available only in the desktop .NET Framework. - - - Returns the encoding associated with the specified code page identifier. - The code page identifier of the preferred encoding which the encoding provider may support. - The encoding associated with the specified code page identifier, or if the provider does not support the requested codepage encoding. - - - Returns the encoding associated with the specified code page name. - The code page name of the preferred encoding which the encoding provider may support. - The encoding associated with the specified code page, or if the provider does not support the requested encoding. - - - Returns an array that contains all the encodings that are supported by the . - An array that contains all the supported encodings. - - - Gets an encoding provider for code pages supported in the desktop .NET Framework but not in the current .NET Framework platform. - An encoding provider that allows access to encodings not supported on the current .NET Framework platform. - - - \ No newline at end of file diff --git a/AUTS_Studio/bin/Release/UTS_Core.dll b/AUTS_Studio/bin/Release/UTS_Core.dll deleted file mode 100644 index 9fa908b..0000000 Binary files a/AUTS_Studio/bin/Release/UTS_Core.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/UTS_Core.dll.config b/AUTS_Studio/bin/Release/UTS_Core.dll.config deleted file mode 100644 index 45a9caa..0000000 --- a/AUTS_Studio/bin/Release/UTS_Core.dll.config +++ /dev/null @@ -1,57 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - False - - - False - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AUTS_Studio/bin/Release/UTS_Core.pdb b/AUTS_Studio/bin/Release/UTS_Core.pdb deleted file mode 100644 index 154c194..0000000 Binary files a/AUTS_Studio/bin/Release/UTS_Core.pdb and /dev/null differ diff --git a/AUTS_Studio/bin/Release/UTS_Core.xml b/AUTS_Studio/bin/Release/UTS_Core.xml deleted file mode 100644 index 15b2d11..0000000 --- a/AUTS_Studio/bin/Release/UTS_Core.xml +++ /dev/null @@ -1,8383 +0,0 @@ - - - - -UTS_Core - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 压缩文件夹到zip文件 - - 需要压缩的文件夹 - 压缩后的zip文件路径 - - - - 压缩文件至Zip文件 - - 被压缩的文件路径 - 压缩文件路径 - - - - 压缩指定文件夹至tar格式文件,不会生成根文件目录 - - 压缩文件名 - 源文件夹 - - - - 压缩指定文件列表到tar格式文件 - - 文件列表 - 压缩文件路径 - 压缩文件所在文件夹路径 - - - - 填充文件表,供压缩文件使用 - - 文件列表 - 需要压缩的文件夹 - 文件前缀 - - - - 解压Tar格式文件夹 - - 文件路径 - 目标文件夹 - - - - Contains the schema of a single DB column. - - - - - 清空数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 复制基础表数据到新表中 - - 表名 - 基础表名 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - Contains the entire database schema - - - - - 判断列名 - - - - - - 判断条件 - - - - - - 判断值 - - - - - - 当前条件与上一个条件的逻辑关系 - - - - - - 将当前条件转换为字符串,不支持将条件逻辑关系同时转换 - - - - - - 查询条件的表名 - - - - - - 当IsSearchAllCols = False时,查询返回列名集合 - - - - - - 查询的条件 - - - - - - 排序方式 - - - - - - 但需要排序时排序列名 - - - - - - 从返回结果提取指定行的内容 - - - - - - Describes a single view schema - - - - - Contains the view name - - - - - Contains the view SQL statement - - - - - 数据库语句助手 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句 - 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用 - - - - - - 查询指定数据表符合条件的所有数据 - - 指定表名 - 查询条件, - - - - - 查询表符合条件的所有指定列的数据 - - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询表符合条件的所有指定列的数据 - - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据表名 - 查询条件 - - - - - 查询指定数据表的信息 - - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量 - - 表名 - - - - - 数据表插入一行数据 - - 表名 - 列名字符串 - 列值字符串 - - - - - 数据表插入一行数据 - - 表名 - 列名与列值键值对 - - - - - 数据表插入一行,通过命令参数方式执行时使用 - - - - - - - - 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 表名 - 字段列表 - - - - - 更新指定表数据 - - 指定表名 - 更新字符串 - - - - - - 更新指定表数据 - - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 指定数据表增加一列数据 - - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 数据表删除一列数据 - - 表名 - 需要删除的列名,仅一列 - - - - - 删除指定表多行数据 - - 表名 - 条件 - - - - - 创建数据表 - - 表名 - 创建表的列信息字符串 - - - - - 创建数据表,如果存在则不创建 - - 表名 - 创建表的列信息字符串 - - - - - 清空数据表,表依旧存在 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据库名 - 数据表名 - 查询条件 - - - - - 查询指定数据库中指定数据表符合条件的所有数据 - - - 数据库名 - 数据表名 - 查询条件(可选) - - - - - 查询指定数据库中指定数据表的信息 - - 数据库名 - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量 - - 数据库名 - 表名 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名字符串 - 列值字符串 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名与列值键值对 - - - - - 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 数据库名 - - 需要插入列名的集合 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新字符串 - - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 数据库名 - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 指定数据库中指定数据表增加一列数据 - - 数据库名 - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 指定数据库中数据表删除一列数据 - - 数据库名 - 表名 - 需要删除的列名,仅一列 - - - - - 指定数据库中指定表删除多行数据 - - 数据库名 - 表名 - 条件 - - - - - 指定数据库中创建数据表 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 指定数据库中创建数据表,如果存在则不创建 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 清空指定数据库中数据表,表依旧存在 - - 数据库名 - 数据表名 - - - - - 删除指定数据库中数据表 - - 数据库名 - 数据表名 - - - - - 数据库通用命令执行器 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - - - - 数据库类型,目前支持Mysql与Sqlite - - - - - 打开数据库连接 - - - - - - 关闭数据库连接 - - - - - 创建当前连接的命令执行句柄 - - - - - - 运行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 开启事务 - - - - - - 提交事务 - - - - - 回滚事务 - - - - - 创建数据参数 - - 参数数据类型 - 参数名称 - 参数值 - - - - - 添加数据参数 - - - - - - - - - 清空数据 - - - - - 回收资源 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 是否为唯一值 - - - - - - 查询指定数据表的信息 - - - - - - - 1 byte,小整数值 - - - - - 2 bytes,大整数值 - - - - - 3 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 8 bytes,极大整数值 - - - - - 4 bytes,单精度浮点数值 - - - - - 8 bytes,双精度浮点数值 - - - - - 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值 - - - - - 3 bytes,日期值,YYYY-MM-DD - - - - - 3 bytes,时间值或持续时间,HH:MM:SS - - - - - 1 bytes,年份值,YYYY - - - - - 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS - - - - - 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS - - - - - 0-255 bytes,定长字符串 - - - - - 0-65535 bytes,变长字符串 - - - - - 0-255 bytes,不超过 255 个字符的二进制字符串 - - - - - 0-255 bytes,短文本字符串 - - - - - 0-65 535 bytes,二进制形式的长文本数据 - - - - - 0-65 535 bytes,长文本数据 - - - - - 0-16 777 215 bytes,二进制形式的中等长度文本数据 - - - - - 0-16 777 215 bytes,中等长度文本数据 - - - - - 0-4 294 967 295 bytes,二进制形式的极大文本数据 - - - - - 0-4 294 967 295 bytes,极大文本数据 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 数据类型是否带符号 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 应用程序日志 - - - - 日志文件所在父文件夹路径 - - - 日志文件名前缀 - - - 日志文件所在路径 - - - - 保存日志的文件夹完整路径 - - - - - 日志文件前缀 - - - - - 写入错误信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入警告信息记录日志 - - - - - - 写入错误信息记录日志 - - - - - - 写入数据库信息记录日志 - - - - - - 将信息入到日志 - - 日志类型 - 日志内容 - - - - 写日志 - - - - - 日志类型 - - - - 调试信息 - - - 堆栈跟踪信息 - - - 警告信息 - - - 错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息 - - - 致命信息 - - - - 考虑修改为自定义控件 - - - - - 是否在添加内容时先挂起布局 - - - - - - 是否添加记录到控件 - - - - - - 控件记录最大行数 - - - - - - 需要被添加数据记录的控件句柄 - - - - - - 清空内容 - - - - - 显示所有数据,优先度最高 - - - - - - 是否显示系统信息 - - - - - - 是否显示串口信息 - - - - - - 是否显示数据库信息 - - - - - - 是否显示网络信息 - - - - - - 是否显示Ftp信息 - - - - - - 显示信息的集合,对应数据位为1则打印,为0不打印 - - - - - - 是否添加时间前缀 - - - - - - 是否显示与上包显示的间隔 - - - - - - 打印调试信息 - - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印信息的提示前缀 - 需要打印的信息 - - - - 枚举扩展类 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 获取当前枚举所有描述特性值,未填的枚举采用枚举名 - - 枚举类型 - - - - - 字符算数表达式求和 - - - - 精度 - - - - 替换占位符 - - 字符串表达式 - - - - - 替换表达式式中的十六进制占位符为实际内容,例如替换B4为buf中的第4位即buf(4)的值 - - - - - - - - 获取表达式转换后的结果是否为真,0、false、空字符为假,1,true为真, 其余为通过计算不为0判断真假 - - - - - - - 获取double类型运算式字符串后缀表达式 - - 字符串表达式 - - - - - 获取小数类型运算结果 - - 浮点型数1 - 浮点型数2 - 运算符 - - - - - 获取符号的优先级 - - 运算符号 - - - - - 校验字符合法性,0为数字,1为运算符,-1为未使用的运算符 - - 需要校验的字符 - - - - - 校验运算式字符串合法性(todo:待进一步完善检测逻辑) - - 需要校验的字符串 - - - - - 将图像格式转换为二进制数组,以jpeg的格式 - - - - - - - 将图像格式转换为二进制数组 - - 图像 - 图像格式 - - - - - 将二进制数组转换为图像格式 - - - - - - - 将图片变更为String格式,默认PNG格式保存 - - - - - - - 将图片变更为String格式 - - - 保存格式 - - - - - 将图片string还原为图片格式 - - - - - - - 压缩图像到指定的高度与宽度 - - 图像 - 指定的宽度 - 指定的高度 - - - - - 压缩图像,根据宽度比 - - 图像 - 指定的宽度 - - - - - 压缩图像,根据高度比 - - 图像 - 指定的高度 - - - - - 按指定比例有损的压缩图像 - - - - - - - - - 获取图片的代码器信息 - - - - - - 截取整个电脑屏幕 - - - - - - 截取整个电脑屏幕,并指定文件路径下生成jpg格式文件。 - - - - 服务器密钥,考虑后续修改儿十六进制数组 - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 获取字符串的MD5值 - - 需要求MD5的原文字符串 - - - - - 获取文件的MD5值 - - 文件路径 - - - - - 将类对象序列化为xml文件 - - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - - 运行一条需要记录在撤销栈的命令 - - - - - 重做命令 - - - - - 撤销命令 - - - - - 运行命令,并将命令添加至撤销堆栈 - - - - - - 将命令添加至撤销堆栈 - - - - - 清空撤销命令堆栈 - - - - - 清空重做命令堆栈 - - - - - 清空撤销与重做命令堆栈 - - - - - 执行撤销命令 - - - - - 执行重做命令 - - - - - 测试数据入库类 - - - - - 是否能够连接远程网络 - - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - 项目索引 - 工艺站索引 - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - - 测试记录表名 - - - - 获取指定表中未存在的数据列集合 - - 数据库执行器 - 需要查询的数据库名 - 需要查询的数据表名 - 需要查询的字段名集合 - - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 在指定数据表中添加指定字段集合 - - 数据库执行器 - 需要查询的数据表名 - 添加字段的键值对,键为字段名,值为列的修饰 - 是否将执行命令保存到缓存表中 - - - - 过滤数据库名,当前sqlite数据库不需要指定库名 - - - - - - - - 保存执行语句到缓存表中 - - 数据库执行器 - Sql语句 - - - - 保存执行语句到缓存表中 - - Sql语句 - - - - 查询对应产品名的对应产品索引,指定执行器方式 - - - - - - - - - 根据判断条件获取数据库是否存在数据,若存在则更新该数据,不存在则插入一条数据 - - 数据库名,账号操作多库时必填 - 数据表名 - 需要更新或插入的数据 - 判断条件,如 `Sn` = '1001' - - - - 获取匹配的用户信息 - - 用户账号 - 用户密码 - - - - - 保存指定字段得测试记录至指定表格中。 - 直接执行保存操作,未检测表格是否存在。 - 保存失败则会抛出异常。 - - - - - - - 新增SN至云端总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - - - - 新增SN至本地总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - 是否将结果保存至本地缓存表 - - - - 更新远程订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - - - - 更新本地订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - 是否将执行命令保存到缓存表中 - - - - 更新本地数据库测试记录,若存在相同条码号的记录则删除后添加 - - - - - - - - - - 更新本地数据库测试记录 - - - - - - - - - - 保存测试记录至云端数据库 - - - - - - - - - - 保存唯一测试日志至云端数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存测试记录至本地数据库 - - - - - - - - - - 保存唯一测试记录至本地数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存唯一测试记录至数据库,若存在相同条码号的记录则覆盖 - - - - - - - - 保存测试记录至数据库。 - - - - - - - - 更新组装站所有条码中与主条码产品相同的条码的测试信息(除主条码) - - - - - - - - 添加指定字段到测试记录表中 - - 测试记录表明 - 字段键值对,键为字段名,值为字段描述 - - - - 从数据表中查询对应客户订单号的内部订单信息 - - 客户订单索引 - - - - - 从数据表中查询对应客户订单号的客户订单信息 - - 客户订单索引 - - - - - 通过项目(产品)索引与条码查询客户订单号 - - - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询所有的错误代码,返回数据表 - - - - - - 查询所有的产品类相关,返回数据表 - - - - - - 获取当前的测试记录数据表 - - 项目索引 - 站位索引 - - - - - 获取当前的条码指定站位的测试记录数据 - - 项目索引 - 站位索引 - - - - - 从条码总表中获取条码信息 - - - - - - - 数据库同步器 - - - - - 同步表信息 - - - - 表名 - - - 同步类型 - - - 是否存在当前数据表 - - - 更新时间 - - - - 同步数据库所需参数 - - - - - 连接参数 - - - - - - 同步数据库 - - - - - 同步数据库 - - 本地数据库执行器 - 云端数据库执行器 - 远端数据库公共库名 - 远端数据库私有库名 - - - - 上传本地缓存数据 - - 远程数据库执行器 - 本地数据库执行器 - - - - 本地创建缓存记录表,如果不存在则创建 - - 本地数据库的执行器 - - - - 查询本地未上传的数据 - - 本地数据库的执行器 - - - - - 查询本地未上传的数据 - - 本地数据库的执行器 - - - - - 上传本地数据至云端数据库 - - - - - - - - 上传本地数据至云端数据库 - - - - - - - - 数据上传完成后,删除本地数据库中对应序号的记录 - - - - - - - 比对本地与云端版本表,下载变化的数据表 - - - - - - - - - 比较本地与云端版本表的差异,获取需要下载的数据表 - - - - - - - - - 创建本地数据库表版本记录表 - - - - - - 比较本地与云端版本表的差异 - - 源DataTable - 目标DataTable - 差异信息列表 - - - - 更新下载数据表 - - 远程数据库执行器 - 本地数据库执行器 - 需要同步的数据表信息集合 - - - - 更新添加数据的方式下载表 - - - - - - - - 更新全表的方式下载表 - - - - - - - - 将目标DataTable的所有数据插入到指定数据表中,不检测是否需要新增列 - - 后续插入字符需要区别数值与字符串 - - - - - - - - 更新本地数据成功后,同步更新本地版本记录表 - - 本地数据库执行器 - 需要同步的数据表信息 - - - - 将.net数据类型转换为Sqlite数据类型 - - .net数据类型 - 转换后的Sqlite数据类型 - - - - 通过解析DbDataReader列名与列类型,暂不可用 - - - - - - - - 通过解析DataTable,获取建表语句 - - 数据表名 - 需要解析的内存数据表 - - - - - 生产流程签名表,待删除 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 流程签名 - - - - - 用户操作记录总表 - - - - - 操作者 - - - - - 操作时间 - - - - - 操作内容说明 - - - - - 建表语句 - - 建表语句 - - - - 内部订单索引 - - - - - 订单ID - - - - - 内部单号 - - - - - 订单所属公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 创建时间 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 订单状态 - - - - - 交货时间 - - - - - 建表语句 - - 建表语句 - - - - 客户订单表 - - - - - 订单索引 - - - - - 公司索引 - - - - - 订单生产产品索引 - - - - - 订单号 - - - - - 生产数量 - - - - - 交货日期 - - - - - 订单生成日期 - - - - - 成本单价 - - - - - 销售单价 - - - - - 订单状态 - - - - - 建表语句 - - 建表语句 - - - - 产线索引 - - - - - 产线名称 - - - - - 产线描述 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 生产计划索引 - - - - - 订单索引 - - - - - 内部订单 - - - - - 站位索引 - - - - - 产线索引 - - - - - 生产时间 - - - - - 已完成产量 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 项目总表 - - - - - 项目唯一标识 - - - - - 项目类型索引 - - - - - 项目名称 - - - - - 项目描述 - - - - - 创建人 - - - - - 创建时间 - - - - - 备注 - - - - - 预览图 - - - - - 预览图 - - - - - 单价 - - - - - 单价单位 - - - - - 当前项目是否有效 - - - - - 最后有效日期 - - - - - 录入条码总表类型,0无订单,1有订单 - - - - - 建表语句 - - 建表语句 - - - - 产品类型 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修日志索引 - - - - - 维修产品索引 - - - - - 维修产品条码 - - - - - 产品错误代码 - - - - - 维修原因类型 - - - - - 维修人工注释 - - - - - 维修产品日期 - - - - - 维修产品结果 - - - - - 产品图像文件名1 - - - - - 产品图像文件名2 - - - - - 产品图像文件名3 - - - - - 产品图像文件名4 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 维修类型索引 - - - - - 维修类型说明 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 订单ID - - - - - 内部单ID - - - - - 机型ID - - - - - 条码 - - - - - 创建时间 - - - - - 更新时间 - - - - - 条码生成类型 - - - - - 参与组装条码 - - - - - 被组装的时间 - - - - - 第1站测试时间 - - - - - 第2站测试时间 - - - - - 第3站测试时间 - - - - - 第4站测试时间 - - - - - 第5站测试时间 - - - - - 第6站测试时间 - - - - - 第7站测试时间 - - - - - 第8站测试时间 - - - - - 第9站测试时间 - - - - - 第10站测试时间 - - - - - 第11站测试时间 - - - - - 第12站测试时间 - - - - - 第1站测试结果 - - - - - 第2站测试结果 - - - - - 第3站测试结果 - - - - - 第4站测试结果 - - - - - 第5站测试结果 - - - - - 第6站测试结果 - - - - - 第7站测试结果 - - - - - 第8站测试结果 - - - - - 第9站测试结果 - - - - - 第10站测试结果 - - - - - 第11站测试结果 - - - - - 第12站测试结果 - - - - - 建表语句 - - 建表语句 - - - - 产品需要索引客户订单号表 - - - - - 索引,暂无作用 - - - - - 客户订单索引 - - - - - 内部订单号 - - - - - 产品索引 - - - - - 工作站索引集合以,分割 - - - - - 创建时间 - - - - - SN前缀 - - - - - SN起始号 - - - - - SN结束号 - - - - - 产品工艺站总表 - - - - - 工艺站索引 - - - - - 项目索引 - - - - - 工艺站名称 - - - - - 工艺站类型 - - - - - 工艺站序号,从1开始 - - - - - Sn总表序号 - - - - - 工艺站描述 - - - - - 最后更新日期 - - - - - 测试记录表名 - - - - - 预览图片 - - - - - 备注 - - - - - 最新测试包名 - - - - - 当前站位是否有效 - - - - - 站位条码生成规则,1系统生成,2客户录入 - - - - - 建表语句 - - 建表语句 - - - - 用户数据库同步总表 - - - - - 需要同步的数据表名 - - - - - 数据表版本编号 - - - - - 最近同步的本地时间 - - - - - 同步类型,如全表下载(all),或是增量下载(new) - - - - - 同步时需要更新的数据列 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - - 添加需要同步的数据表名至同步表中 - - 数据库名 - 需要同步的数据表名 - 同步类型,all为全表下载,new为增量下载 - 同步时下载的字段,默认为*全字段下载 - - - - - 数据库连接涉及多库操作时,新增数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,删除后更新触发器 - - 数据库名 - 数据表名 - - - - - 测试记录表,不同项目不同站表名不同 - - - - - 用户唯一标识 - - - - - 设备唯一索引 - - - - - 生产线索引 - - - - - 内部订单索引 - - - - - 应用程序名 - - - - - 测试流程名 - - - - - 产品SN唯一索引 - - - - - 测试起始时间 - - - - - 测试耗时 - - - - - 测试结果 - - - - - 错误代码 - - - - - 失败步骤集合 - - - - - 自定义字段,由实际使用中添加字段 - - - - - 数据表名 - - 项目索引 - 工艺站索引 - - - - - 建表语句 - - 建表语句 - - - - 产商的客户总表 - - - - - 建表语句 - - 建表语句 - - - - 本地未上传记录缓存表 - - - - 数据库操作记录表枚举值 - - - 序列号 - - - 用户名 - - - 日期时间 - - - 数据库语句 - - - 是否已经同步到远程数据库 - - - 同步出错编码 - - - 同步出错提示 - - - 备注 - - - 数据库操作日志列名集合 - - - - Sqlite数据库建表语句 - - 建表语句 - - - -索引 - - - - - 数据服务索引 - - - - - 软件名 - - - - - 软件版本 - - - - - 注册日期与时间 - - - - - 最后活动日期与时间 - - - - - 备注 - - - - - 索引 - - - - - 数据服务索引 - - - - - 软件名称 - - - - - App版本 - - - - - 测试项目名 - - - - - 测试站名 - - - - - 测试流程名 - - - - - 生成日期 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 客户总表 - - - - - 客户唯一标识 - - - - - 客户公司名 - - - - - 创建日期 - - - - - 服务索引唯一值 - - - - - 鉴权文件索引 - - - - - 鉴权文件有效日期 - - - - - 公司名 - - - - - 服务终端内核 - - - - - 服务终端类型 - - - - - 服务终端名称 - - - - - 服务自定义标识名称 - - - - - 服务MAC地址 - - - - - 服务版本 - - - - - 服务注册日期 - - - - -服务最后活动日期 - - - - - 服务是否有效,注册默认有效 - - - - - 索引 - - - - - 数据服务索引 - - - - - 数据服务版本 - - - - - 更新服务版本 - - - - - 厂商名称 - - - - - 生成日期与时间 - - - - - 公网IP - - - - - 私网IP - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 数据库总表 - - - - - 数据库唯一标识 - - - - - 所属公司索引 - - - - - 数据库名 - - - - - 数据库用户名 - - - - - 数据库密码 - - - - - 数据库说明 - - - - - 设备总表 - - - - - 设备唯一索引 - - - - - 设备名称 - - - - - 设备类型 - - - - - 设备MAC地址 - - - - - 首次登陆时间 - - - - - 末次在线时间 - - - - - 设备在线状态 - - - - - 是被是否有效 - - - - - 设备日志总表 - - - - - 设备唯一标识 - - - - - 操作时间 - - - - - 公网IP - - - - - 内网IP - - - - - License文件名 - - - - - 产生日志的APP名 - - - - - App版本号 - - - - - 测试配置文件名称 - - - - - 用户唯一标识 - - - - - 操作内容 - - - - - 错误代码总表 - - - - - 错误代码唯一标识 - - - - - 错误提示信息 - - - - - 统计图中提示颜色 - - - - -索引 - - - - - 数据服务索引 - - - - - 软件名 - - - - - 软件版本 - - - - - 注册日期与时间 - - - - - 索引 - - - - - 公司名称 - - - - - 发布日期 - - - - - 有效日期 - - - - - 备注 - - - - - 操作日志表,对公共库的操作记录 - - - - - 索引,无作用 - - - - - 用户唯一标识 - - - - - 操作时间 - - - - - 具体操作内容 - - - - - 功能模块总表 - - - - - 功能模块唯一索引 - - - - - 功能模块名称 - - - - - 功能模块详细说明 - - - - - 操作级别,读为0,写为1 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 发布版本号 - - - - - 发布日期 - - - - - 发布用户索引 - - - - - 发布说明 - - - - - 程序更新软件表 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 最新版本号 - - - - - 发布日期 - - - - - 二进制文件 - - - - - MD5校验码 - - - - - FTP包名 - - - - - 需要同步下载表名总表 - - - - - 表名 - - - - - 表版本编号 - - - - - 同步类型 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - 数据库操作记录表枚举值 - - - 日志索引 - - - 厂商名称 - - - 应用名称 - - - 应用版本 - - - 日志生成日期与时间 - - - 设备公网IP - - - 设备内网IP地址 - - - 设备MAC - - - 设备系统版本 - - - 设备名称 - - - 设备用户名 - - - 设备网络状态 - - - 日志类型 - - - 日志内容 - - - - Sqlite数据库建表语句 - - 建表语句 - - - - 测试计划编辑信息提示 - - - - - 列名 - - - - - 列类型 - - - - - 列描述 - - - - - 列默认值 - - - - - 用户操作功能权限总表 - - - - - 用户唯一标识 - - - - - 数据库唯一标识 - - - - - 拥有完整权限的功能唯一标识,用,分割 - - - - - 拥有读写权限的功能唯一标识,用,分割 - - - - - 拥有只读权限的功能唯一标识,用,分割 - - - - - 用户测试命令总表 - - - - - 建表语句 - - 建表语句 - - - - 用户总表 - - - - - 用户ID唯一索引 - - - - - 用户登陆账号 - - - - - 用户密码 - - - - - 公司索引ID - - - - - 创建日期 - - - - - 手机号码 - - - - - 微信号 - - - - - 邮箱地址 - - - - - 是否有效 - - - - - 读取文件并将内容保存在本地数据库中 - - - - - - - 读取文件并将内容保存在本地数据库中 - - - - - - License文件字段枚举 - - - 索引 - - - 客户名 - - - 注册日期 - - - 截止日期 - - - 管理员账号 - - - 管理员密码 - - - 远程数据库URL或IP - - - 远程数据库连接端口 - - - 远程数据库账号 - - - 远程数据库密码 - - - 远程数据库私有操作库 - - - 远程数据库共有操作库 - - - 本地数据库存放文件夹 - - - 本地数据库文件名 - - - 本地数据库密码 - - - Ftp服务器 - - - Ftp通讯端口 - - - Ftp通讯账号 - - - Ftp通讯密码 - - - 客户MAC地址,锁定|MAC时使用 - - - 备注 - - - UTS版本号 - - - 签名 - - - License文件校验返回枚举值 - - - 未找到License - - - 无法打开License - - - 无效的License - - - 校验通过 - - - License校验结果 - - - 校验通过 - - - 无效的客户 - - - 无效的注册日期 - - - 无效的截止日期 - - - 无效的用户 - - - 无效的用户密码 - - - 无效的MAC地址 - - - 无效的UTS版本 - - - 无效的签名 - - - 无效的数据库地址 - - - 无效的数据库名 - - - 无效的数据库用户 - - - 无效的数据库密码 - - - 无效的数据库端口号 - - - 无效的数据库名(sqlite) - - - 无效的数据库文件夹名(sqlite) - - - 存储License签名校验值 - - - License密钥 - - - - 索引 - - 索引 - - - - 获取客户名 - - 客户名 - - - - 获取注册日期 - - 注册日期 - - - - 获取截止日期 - - 截止日期 - - - - 获取管理员账号 - - 管理员账号 - - - - 获取管理员密码 - - 管理员密码 - - - - 远程数据库URL或IP(待删除字段) - - 远程数据库URL或IP - - - - 远程数据库连接端口 - - 远程数据库连接端口 - - - - 远程数据库账号 - - 远程数据库账号 - - - - 远程数据库密码 - - 远程数据库密码 - - - - 远程数据库操作库 - - 远程数据库操作库 - - - - 远程数据库公开库 - - - - - - 本地数据库存放文件夹 - - 本地数据库存放文件夹 - - - - 本地数据库文件名 - - 本地数据库文件名 - - - - 本地数据库密码 - - 本地数据库密码 - - - - Ftp服务器地址(待删除字段) - - Ftp服务器地址 - - - - Ftp服务器端口 - - Ftp服务器端口 - - - - Ftp服务器用户 - - Ftp服务器用户 - - - - Ftp服务器密码 - - Ftp服务器密码 - - - - 获取客户MAC地址 - - 客户MAC地址 - - - - 获取备注 - - 备注 - - - - 获取UTS版本号 - - UTS版本号 - - - - 获取签名 - - 签名 - - - - 读取License文件所有内容,并进行解密,将解密后的内容存入License字典中 - - License文件完整路径(含文件名) - - - - 类的作用:获取服务器信息 - 创建人员:ML - Log编号:1 - 修改描述:创建 - 修改日期:2019-10-15 - 修改人员:ML - - - - Server文件字段枚举 - - - 客户名 - - - 数据库服务器地址 - - - 数据库服务器端口 - - - 数据库名 - - - 数据库用户名 - - - 数据库用户密码 - - - Ftp地址 - - - Ftp端口 - - - Ftp用户名 - - - Ftp用户密码 - - - Server文件校验返回枚举值 - - - 未找到Server - - - 无法打开Server - - - 无效的Server - - - 校验通过 - - - 存储Server校验返回值 - - - 存储Server所有信息 - - - 服务器密钥 - - -Server所有可用字段 - - - - 获取客户名 - - 客户名 - - - - 获取服务器名 - - 服务器名 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中 - - Server文件完整路径(含文件名) - 读取Server文件的状态 - - - - 校验Server - - Server文件完整路径(含文件名) - 校验是否通过 - - - 是否记住密码 - - - 是否自动登录 - - - 是否正在登录中 - - - 校验文件信息 - - - 用户登录信息 - - - 修改窗体标题 - - - 读取Setting中的缓存量 - - - 保存Setting中的缓存量 - - - - 初始化账号控件显示 - - - - - 密码获取与保存机制以后会修改,或加密 - - - - 记住密码复选框状态修改触发事件 - - - 自动登录复选框状态修改触发事件 - - - - 使用账号密码登录 - - - - 是否需要显示登陆页面,方便以后编译时,生成不登陆工具 - - - 是否记住密码 - - - 是否自动登录 - - - - 用户信息类 - - - - 账号索引 - - - 公司索引 - - - 获取或设置用户账号 - - - 获取或设置用户密码 - - - 获取或设置用户注册日期 - - - 获取或设置用户电话号码 - - - 获取或设置用户微信号 - - - 获取或设置用户电子邮箱 - - - 获取或设置用户是否有效 - - - - 已下单待转内部单 - - - - - 已转M/O待制条码 - - - - - 已制SN待制计划 - - - - - 已制计划待生产 - - - - - 生产中 - - - - - 完成生产 - - - - - 已完成 - - - - - 取消 - - - - - 暂停中 - - - - - 客户订单信息 - - - - - 订单索引 - - - - - 订单条码序号字符串 - - - - - 订单状态 - - - - - 订单总量 - - - - - 订单产品 - - - - - 订单所属客户索引 - - - - - 订单交期 - - - - - 订单创建时间 - - - - - 成本单价 - - - - - 销售单价 - - - - 错误代码管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 提取错误代码与错误消息字符串中的错误代码 - - - - - - 内部订单信息 - - - - - 内部订单索引 - - - - - 客户订单索引 - - - - - 内部订单号字符串 - - - - - 公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 内部订单创建时间 - - - - - 订单交期 - - - - - 目标产能 - - - - - 当前总产能 - - - - - 内部订单状态 - - - - 内部订单管理器 - - - 初始化测试器线程锁 - - - - 创建内部订单管理器单例 - - - - - - 初始化指定内部订单索引的订单详情 - - - - - 产线管理器,全局唯一 - - - 初始化管理器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 获取所有产线的名字 - - - - - 产品类型管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 从数据库中获取所有的产品类型 - - - - 测试命令管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 初始化版主信息 - - - - - - 初始化流程站帮助信息 - 从本地数据库中读取 - - 数据库类型 - 数据库连接字符串 - - - 测试流程列管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 检测用户对项目的修改是否输入合法 - 不合法时会抛出异常 - - - - - 初始化项目模式 - - - - - 从云端数据库加载项目信息 - - - - - 从本地Xml文件加载项目信息 - - - - - 从本地数据库加载项目信息 - - - - - 新建项目信息 - - - - - 当前项目初始化方式 - - - - - - 项目索引,创建项目时生成 - - - - - - 项目类型索引 - - - - - - 项目名称 - - - - - - 项目图像在FTP中的文件名 - - - - - - 项目描述 - - - - - - 项目有效日期 - - - - - - 项目是否有效 - - - - - - 1有订单模式,0无订单模式 - - - - - - 项目备注 - - - - - - 单价 - - - - - - 项目站集合 - - - - - - 被删除测试站集合 - - - - - - 项目信息是否被修改 - - - - - - 预览图被修改 - - - - - - 项目当前操作人员索引 - - - - - - 项目原图 - - - - - - 项目预览图 - - - - - - 初始化项目 - - 项目名称 - 加载模式 - - - - 初始化项目 - - 项目索引 - 加载模式 - - - - 加载本地项目 - - 项目名称 - - - - 加载项目所有站 - - - - - - 加载测试站信息 - - Xml节点 - - - - 通过数据表更新项目站信息 - - - - - - 通过数据表更新项目信息 - - - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引从远程数据库初始化项目信息 - - 项目索引 - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 项目索引 - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 项目索引 - - - - 通过项目索引从本地数据库初始化项目信息 - - 项目索引 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 数据库名 - 项目名称 - - - - 通过项目名称从远程数据库初始化项目信息 - - 项目名称 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 项目名称 - - - - 通过项目名称从本地数据库初始化项目信息 - - 项目名称 - - - - 加载本地项目列表 - - - - - - - 从数据表中提取项目名称列表 - - - - - - - 从远程数据库加载项目名列表 - - - - - - 从本地数据库加载项目名列表 - - - - - - 加载项目列表 - - 加载模式 - - - - - 保存项目所有站信息 - - - - - - 保存项目至本地文件 - - - - - - 将项目信息保存至本Xml文件 - - - - - 查询项目是否存在 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - - 项目表修改原有项目信息 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 项目表添加新项目 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 更新项目索引 - - - - - 更新上传项目信息 - - - - - - - 更新工艺站索引 - - - - - 发布项目,将项目保存至本地,然后发布项目 - - - - - 删除项目在云端所有相关信息 - - - - - 工艺站序号 - - - - - 工艺站名称 - - - - - 工艺站类型,下拉选择 - - - - - 工艺站预览图,按键加载 - - - - - 工艺站描述 - - - - - 条码生成方式,1.系统生成,2.用户录入 - - - - - 允许测试设备类型 - - - - - 允许测试软件名称 - - - - - 工艺站包名,按键加载 - - - - - 初始化测试站表格 - - 表格控件 - - - - 调试信息 - - - - - 流程信息 - - - - - 警告信息 - - - - - 错误信息 - - - - - 致命信息 - - - - - 定期更新APP的活动时间,调用则会定期基于本地调用存储过程至缓存表 - - - - - 添加日志内容至缓存的日志队列中 - 调用SaveLogQueueToDb将队列中的数据写入到数据库 - - Tip:缓存队列仅记录每条日志不同的内容,例如写入时间,日志类型,日志内容等 - - - - - - - 网络发送Json字符串,字符串以回车换行结尾 - - - - - - 超时接收回复信息,以回车换行结尾 - - 超时时间,单位毫秒 - 接收到的字符串,超时返回空字符串 - - - - 数据库同步类 - - - - - 同步间隔,单位分钟,默认5分钟,最小值为1分钟 - - - - - - 远程数据库的类型 - - - - - - 远程数据库的连接字符串 - - - - - - 远端公共数据库名 - - - - - - 远端私有库名 - - - - - - 本地数据库的类型 - - - - - - 本地数据库的连接字符串 - - - - - - 任务类型接口,每个任务必须实现的功能 - - - - - 任务开始 - - - - - 任务退出 - - - - - 重启任务 - - - - - 设置任务参数 - - - - - - 获取任务参数 - - - - - - 具体的执行过程 - - 状态值,暂未启用 - - - - 服务任务类型枚举集合 - - - - - 数据库同步 - - - - - 监听Json文件 - - - - - 服务任务状态枚举值 - - - - - 启动状态 - - - - - 停止状态 - - - - - 服务任务类型 - - - - - - 服务任务名,服务任务的唯一索引 - - - - - - 服务任务的状态 - - - - - - 任务开启 - - - - - 任务停止 - - - - - 任务重启 - - - - - 任务参数集合设置 - - 任务参数键值对 - - - - 任务参数集合获取 - - - - - - 服务任务列表,管理服务的所有任务 - - - - - 任务总数 - - - - - - 获取所有的服务任务 - - - - - - 添加任务 - - - - - 添加任务列表 - - - - - - 移除指定的服务任务 - - - - - - 移除指定名称的服务任务 - - - - - 清空所有的服务任务 - - - - - 设置指定任务的任务参数 - - - - - - - 返回指定任务名称的任务参数 - - - - - - - 获取所有任务的参数信息 - - - - - -开启所有任务 - - - - - 结束休眠,立即执行任务 - - - - - -开启所有任务 - - - - - 停止指定任务名的任务 - - - - - -停止所有任务 - - - - - 获取DataService服务版本信息 - - - - - 应用程序与服务通讯协议类,可将此类序列化为Json字符串或反序列化Json字符串为此类 - - 更改须知: - 当需要增加不参与序列化的共有字段时, - 在变量名上一行,参照JsonFilter字段增加JsonIgnore特性. - - 当需要增加命令名称类型时, - 首先在CmdNamesEnum中增加枚举字段, - 之后在FilterFiled函数中,增加指定命令名称中需要序列话的字段名数组. - - - - - 发送控制命令时,通信的用户账号 - - - - - 发送控制命令时,执行程序名 - - - - - 通讯时使用的命令名称 - - - - - 用户存储服务中任务信息 - - - - - 指定需要控制的任务名称集合 - - - - - 回复命令时,指示命令执行的状态 - - - - - 回复命令时,指定命令执行后的提示信息 - - - - - 回复命令时,获取当前服务的版本号 - - - - - 回复命令时,获取当前服务的版本号 - - - - - 是否为回复数据 - - - - - 是否启用筛选功能,默认为启用筛选功能 - 此字段不参与Json序列化 - - - - - Json序列化时的显示格式,分行对齐显示或是单行无格式显示,默认单行显示 - 此字段不参与Json序列化 - - - - 任务命令执行状态列表 - - - 任务命令列表 - - - 添加任务 - - - 设置任务 - - - 获取任务 - - - 获取所有任务 - - - 删除任务 - - - 删除所有任务 - - - 开启任务 - - - 开启所有任务 - - - 暂停任务 - - - 暂停所有任务 - - - 重启任务 - - - 重启所有任务 - - - 获取DataService版本信息 - - - 上报App的状态 - - - - 序列化类中字段为Json字符串 - - - - - - 反序列Json字符串填充当前类中 - - - - - - 根据任务名称,设置参与序列化的字段名称 - 增加任务名称时,需要更新该函数 - - - - - - - 针对服务任务的Json设置 - 当前作用:筛选指定类中字段参与Json序列化 - - - - - 需要操作的字段名 - 与_retain参数结合使用,实现指定类中某些字段的Json序列化 - - - - - 是否显示指定字段 - 为真时,仅显示指定的字段名 - 为假时,仅不显示指定的字段名 - - - - - 修改后的节点 - - - - - - 屏蔽表格引发自定义事件,避免行节点内容修改,todo:暂未完成 - - - - - - 折叠的列号 - - - - - - 折叠的起始行号 - - - - - - 初始化测试站表格 - - - - - 展开行节点 - - - - - - 节点升级 - - - - - 节点降级 - - - - - 反显节点所在行 - - - - - - 步骤,固定 - - - - - 断点执行,固定列 - - - - - 是否运行 - - - - - 调试结果 - - - - - 节点下限 - - - - - 节点上限 - - - - - 节点测试耗时 - - - - - 节点解析 - - - - - 模块名称 - - - - - 节点控制执行类型 - - - - - 命令类型 - - - - - 命令关键字 - - - - - 执行命令参数 - - - - - 当前返回值是否记录入库 - - - - - 返回值变量名 - - - - - 失败重试次数 - - - - - 重试间隔 - - - - - 错误代码 - - - - - 错误提示 - - - - 修改窗体标题 - - - - 显示窗体 - - - - - - 测试站修改时处理函数 - - - - - - 初始化行节点的风格 - - - - - 快捷键操作 - - - - - - - 读取XML,加载树状视图 - - - - - 读取XML,加载树状视图 - - - - - 将树状视图导出为Xml - - - - - 扫码目检站 - - - - - 测试站 - - - - - 条码关联站 - - - - - 成品录入站 - - - - - 抽检站 - - - - - 唯一条码测试站 - - - - - 无序列号 - - - - - 系统生成 - - - - - 测试时录入 - - - - - 用户录入 - - - - - 项目站索引,项目站唯一索引,新建站时自动生成,生成后不能修改 - - - - - - 项目站名称 - - - - - - 项目站序号,表示该站在项目站总流程中测试顺序 - 例如1,表示当前为第一站 - - - - - - 项目站内容描述 - - - - - - 工艺站预览图 - - - - - - 使用测试站的设备类型,待删除 - - - - - - 使用测试站的设备软件名,待删除 - - - - - - 项目站当前操作人员,为当前登录人员账号 - - - - - - 生成测试站时的顺序,从1开始 - - - - - - 当前站位是否有效 - - - - - - 条码生成规则,1系统生成,2客户录入 - - - - - - 项目站关联的项目站包信息 - - - - - - 项目站所属项目信息 - - - - - - 工艺站信息已被修改 - - - - - - 工艺站类型已被修改 - - - - - - 工艺站预览图已被修改 - - - - - 测试包文件名称,不含.uts后缀 - - - 测试包文件名称,含.uts后缀 - - - 测试站包版本 - - - 修改项目流程时所需密码 - - - 测试站包有效日期 - - - 测试站包创建时间 - - - 测试站包修改时间 - - - 发布测试站包的应用程序版本 - - - 发布测试站包的图片 - - - - 项目站包历史发布说明 - - - - - - 当前版本发布说明 - - - - - 发布测试站包的测试流程 - - - 测试站包所在的测试站信息 - - - - 创建项目站包 - - - - - 加载项目站包信息文件 - - - - - - 加载项目站包时,校验路径 - - - - - - 加载项目站包时,解压项目文件到指定路径 - - - - - - 加载测试站包时,加载项目站包信息 - - - - - - 加载测试站包内容 - - - - - 保存项目站历史版本说明 - - - - - - 保存项目站信息节点内容 - - - - - - 保存项目站包信息文件 - - - - - - 发布项目时,校验路径合法性 - - - - - 发布项目时,将原项目包文件夹名重命名为预发布项目包文件夹名 - - 预发布项目站包名 - - - - 发布项目时,将缓存信息保存到本地文件中 - - 预发布项目站包名 - - - - 发布项目时,压缩项目文件夹至发布路径 - - 预发布项目站包名 - 预发布项目站包文件名 - - - - 发布项目成功后,更新数据库数据 - - - - - - 发布项目成功后,更新项目包信息 - - - - - 发布项目站包 - - - - - 模块名称 - - - - - - 控制命令类型 - - - - - - 当前流程步骤的解释 - - - - - - 调试模式下运行到当前节点后,暂停运行 - - - - - - 当前流程步骤是否执行 - - - - - - 当前流程步骤执行结果是否保存至数据库,FALSE则为临时变量 - - - - - - 行的类型 - - - - - - 行节点关联的站流程 - - - - - - 节点树的所有节点集合 - - - - - - 节点所属节点数组的位置,从0开始,即头结点的的索引 - - - - - - 节点的级别,可见节点级别从0开始 - - - - - - 节点在父节点中的索引,可见节点级别从0开始 - - - - - - 子节点总数 - - - - - - 所有子节点总数 - - - - - - 行下包含的子行集合 - - - - - - 当前节点的同级上一节点,若当前节点为首节点则返回nothing - - - - - - 当前节点的同级下一节点,若当前节点为尾节点则返回nothing - - - - - - 当前节点的父节点 - - - - - - 当前节点树的起始节点 - - - - - - 内部缓存子节点 - - - - - 处于展开状态 - - - - - - 是否允许删除当前节点 - - - - - - 是否允许添加子节点 - - - - - - 允许操作当前节点内容 - - - - - - 允许移动节点改变节点的级别 - - - - - - 展开节点 - - - - - 折叠节点 - - - - - 展开或折叠节点 - - - - - 增加子节点 - - - - - 插入子节点 - - - - - 移除本身节点 - - - - - 清空节点所有子节点 - - - - - 节点上移 - - - - - 节点下移 - - - - - 节点左移 - - - - - 节点右移 - - - - - 节点深复制,创建一个完全相同信息的节点 - - - - - - 固定模块 - - - - - 模块,可以当作跳转入口 - - - - - 控制 - - - - - 流程 - - - - - 默认的初始化节点风格 - - - - - 从本地文件中初始化节点风格 - - - - - - 更新节点的所有子节点的流程站指向 - - - - - - 更新节点的上一节点指向 - - 需要更新的节点 - - - - 更新节点的下一节点指向 - - 需要更新的节点 - - - - 新增节点后,更新父节点的所有子节点计数 - - 新增的节点 - - - - 删除节点后,更新父节点的所有子节点计数 - - 被删除的节点 - 包含当前节点 - - - - 插入节点后,更新节点下方节点的索引 - - 需要更新下方节点索引的节点 - - - - 删除节点后,更新节点下方节点的索引 - - - - - - 获取新添加的节点的链状目录索引 - - - - - - - 更新节点的所有子节点的链式结合的指向 - - - - - - - 删除节点后,更新链状列表 - - - 包含当前节点 - - - - 插入节点后,更新链状目录中受影响节点的索引 - - - - - - 删除节点后,更新链状目录中受影响节点的索引 - - 删除的节点 - 是否保存该节点 - - - - 行节点表,当前选择行 - - - - - 行节点表,下拉框选择行 - - - - - 行节点表,下拉框所在列 - - - - - 详细信息表格内容变更类型 - - - - - 初始化测试站表格 - - - - - 单行信息表格命令修改后,同步刷新本身信息 - - - - - 下拉框选择对象事件 - - - - - - - 表格下拉框出现时触发事件 - - - - - - - 更新流程列名提示 - - - - - - 更新流程命令提示 - - - - - - - - - 单行信息表格更新当前行 - - - - - - 详细信息表格内容变更类型枚举值 - - - - - 未变更 - - - - - 加载流程时时引起的变更 - - - - - 行节点信息修改引起的变更 - - - - - 切换选择节点引起的变更 - - - - - 关联节点内容变更 - - - - - 节点字体 - - - - - - 节点字体颜色 - - - - - - 节点图标 - - - - - - 节点图标索引 - - - - - - 节点背景颜色 - - - - - - 项目站包文件名 - - - - - - 项目站包创建者 - - - - - - 项目站包版本说明 - - - - - 测试流程是否已锁定 - - - 测试流程所关联的项目站包信息 - - - - 头节点 - - - - - - 节点树状集合 - - - - - - 节点树的所有节点集合 - - - - - - 节点总数 - - - - - - 创建新的测试流程 - - - - - 读取测试站属性 - - - - - - 串口名 - - - - - - 串口别名 - - - - - - 默认接收超时时间,通讯时超时设置为0时使用该值 - - - - - - 当前串口是否已经打开 - - - - - - 清空接受缓冲区内容 - - - - - 根据串口名,查询对应串口 - - - - - - - - 运行CMD命令并获取返回值 - - - - - - - - 显示提示图像执行器 - 耦合了 - - - - - UTS串口通讯返回值比较函数静态类 - - - - - 仅一个参数字符串比较,忽略大小写 - - 测试命令返回集合 - - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串 - - - - - - 仅一个参数字符串比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 多参数字符串列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 浮点型比较方式 - - - - - - - 仅一个参数浮点型比较 - - 当前值 - 下限 - 上限 - - - - - 多参数浮点型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 整数型比较方式 - - - - - - - 仅一个参数整数比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 多参数整数型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 测试命令类型 - - - - - - 测试命令名称 - - - - - - 测试命令参数 - - - - - - 创建命令执行器 - - - - - - - 将参数中的相对路径替换为绝对路径 - - - - - - - 下限 - - - - - - 上限 - - - - - - 执行结果 - - - - - - 记录值 - - - - - - 执行结果提示信息 - - - - - - 执行耗时,包含重试耗时 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 当前串口对象 - - - - - UTS串口波特率,默认115200 - - - - - 接收等待最长毫秒数,默认100ms - - - - - 串口通讯写入失败计数,通讯成功置零,通讯失败则加1 - - - - - 串口通讯写入失败最大上限,默认5次 - - - - - 状态机执行间隔,默认10ms - - - - - 发送同步命令的间隔,默认1000ms - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 当前可以访问的串口名集合 - - - - 按键串口控制器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建按键串口控制器,若按键串口控制器已经创建则返回句柄 - - - - - - 开启任务 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令接收等待最长时间 - - - - - J_Controller状态机 - - - - - 退出状态机 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送心跳包 - - - - - 等待回复 - - - - - 发送控制通道命令 - - - - - 键值回复 - - - - - 连接成功 - - - - - 连接失败 - - - - 通讯串口 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - 接收起始时间 - - - - 打开串口 - - - - - - 通讯字符串的分隔符 - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 将参数字符串处理成参数列表 - - - - - - 当前百分比 - - - - -测试开始事件 - - -测试暂停事件 - - -测试成功事件 - - -测试失败事件 - - -测试结束事件 - - -测试状态变更事件 - - -测试计数变更事件 - - -测试节点变更事件 - - -测试节点完成事件 - - -测试时间变更事件 - - - 当前测试节点 - - - 测试耗时计时器 - - - 单步执行耗时计时器 - - - 程序运行后,测试通过总数 - - - 程序运行后,测试失败总数 - - - 是否已执行设置模块 - - - 是否处于调试断点 - - - 是否退出调试断点 - - - 是否下一节点调试断点 - - - 测试函数入口集合 - - - 测试结果内容 - - - 是否退出测试 - - - 测试时间线程 - - - 测试过程中,产生的变量存储 - - - 测试过程中,使用的测试站位 - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建测试器,若测试器已经创建则返回句柄 - - - - - 测试状态 - - - - 判定测试失败的模式 - - - - - - 测试时,重新执行Setup模块 - - - - - 获取指定名称的模块节点 - - - - - - - 开始测试,此函数为正式测试调用 - - - - - 开始调试测试,此函数为正式测试调用 - - - - - 流程修改后保存,更新模块索引 - - - - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 执行内置模块函数 - - - - - - - 获取用户退出测试的执行返回结果 - - - - - - 获取不运行的节点的执行返回结果 - - - - - - 获取未知的行节点类型的执行返回结果 - - 当前行节点 - - - - - 执行模块流程 - - - - - - - 执行控制流程 - - - 测试结果 - - - - 执行控制结构的条件部分 - - - - - - - 执行类型为普通流程的行节点 - - - - - - - 从测试记录中或则全局变量中获取指定变量名的变量值 - - - - - - - 替换测试命令参数中的变量(变量格式:{var}) - - - - - - - 退出执行,测试结果为失败 - - - - - 测试主函数,测试Main模块,根据测试结果测试Pass/Fail模块 - - - - - 调试测试当前节点及其子节点 - - 节点对象 - - - - 从当前节点调试测试,直到测试完当前顶级模块 - - 节点对象 - - - - 测试单节点及之后的所有节点 - - - - - - 调试测试节点数组 - - - - - - 调试测试节点数组,包含其子节点 - - - - - - 调试测试子节点集合 - - - - - - 调试测试节点集合,及其子节点 - - - - - - 单步测试失败后退出测试,判定测试失败 - - - - - 单步测试失败后继续测试,执行所有测试流程后,判定测试失败 - - - - - 仅测试当前节点及其子节点 - - - - - 从节点开始往下测试 - - - - - 输入框值 - - - - - - PC机地址 - - - - - UtsHW03设备地址 - - - - - UTS通讯中,本机地址 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在数据库同步状态更改时发生 - - - - - 数据库同步状态 - - - - - - 项目站未修改 - - - - - 项目站信息已修改 - - - - - 项目站信息修改已保存 - - - - - 在测试状态更改时发生 - - - - - 测试站编辑状态 - - - - - - 无需发送 - - - - - 等待发送 - - - - - 发送失败 - - - - - 发送成功后,等待接收 - - - - - 接收超时 - - - - - 接收完成 - - - - - 测试命令状态 - - - - - - 控制命令状态 - - - - - - 待机测试 - - - - - 正在测试中 - - - - - 测试通过 - - - - - 测试失败 - - - - - 设备异常 - - - - - 在测试状态更改时发生 - - - - - 测试状态 - - 测试状态 - - - - 按键按下枚举值 - - - - - 没有按键按下 - - - - - 开始键按下 - - - - - YES 键按下 - - - - - NO 键按下 - - - - - 开始键长按 - - - - - YES 键长按 - - - - - NO 键长按 - - - - - 开始键松开 - - - - - Yes 键松开 - - - - - NO 键松开 - - - - - UTS测试架按键按下 - - - - - UTS测试架按键键值 - - - - - - 测试记录所关联的控件 - - - - - - 测试记录所关联的测试流程 - - - - - - 初始化记录表格 - - 测试流程 - - - - 获取当前节点所在的记录行,0代表未找到对应节点 - - 当前测试节点 - - - - - 反显当前测试节点所在的记录行 - - 当前测试节点 - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 显示所有行 - - - - - 屏蔽非记录行 - - - - - 测试结果枚举集合 - - - - - 当前用户索引,登陆后填充 - - - - - - 当前服务索引,登陆后获取 - - - - - - 所属产线索引,用户选择后获取 - - - - - - 所属订单索引,用户提供条码,系统自动填充 - - - - - - 测试程序的名称,登陆后填充 - - - - - - 测试流程名,切换项目流程站后获取 - - - - - - 测试产品的索引序号,测试时获取,(使用大写,8字符) - - - - - - 测试开始日期与时间,测试时获取 - - - - - - 测试耗时,测试时获取 - - - - - - 测试结果,测试时获取 - - - - - - 错误代码,测试时获取 - - - - - - 失败步骤集合,测试时获取 - - - - - - 自定义记录数据,测试时获取 - - - - - - 切换测试站后,初始话测试结果信息 - - - - - 开启新一轮测试时,重置测试结果信息 - - - - - 添加自定义需要记录的测试信息 - - 记录列名 - 记录值 - - - - 将当前测试信息转换为字符键值对 - - - - - 通讯串口 - - - 接收起始时间 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - - 获取所有串口名 - - - - - - 打开串口 - - - - - - - 接收分析后的数据 - - - - - 测试错误代码管理器 - - - 测试线程 - - - 测试站信息 - - - 测试记录表格 - - - - 存储单笔测试记录至CSV文件 - - - - 当前绘制图形宽度 - - - 当前绘制图形坐标点X - - - 当前绘制图形坐标点Y - - - 当前绘制图形单行最大上限 - - - - 添加绘制测试结果 - - - - - - 校验测试流程有效日期 - - - - - - 开始测试 - - - - - 终止测试 - - - - - 存储单笔测试记录至数据库 - - - - - 根据测试状态,更新界面UI显示 - - - - - - 更新测试时间 - - - - - - 发送方地址 - - - - - - 接收方地址 - - - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 测试命令常用初始化方式 - - - - - - - - 发送后台通讯命令常用初始化方式 - - - - - - - - 重置当前对象的信息 - - - - - 深度拷贝数据, 创建当前对象的克隆 - - - - - - 将参数字符串处理成参数列表 - - - - - - 将必须通讯参数转换为uts通讯字符串 - - 发送方地址 - 接收发地址 - 命令字 - 命令参数 - 组合命令分隔符 - - - - - 将字符串按格式转换为通讯格式数据对象 - - uts通讯字符串 - 组合命令分隔符 - - - - - 解析uts通讯字符串,初始化内部数据 - - - - - - 将本地数据内容,转换为uts通讯字符串 - - - - - - 测试命令接收等待最长时间 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令仅发送,不需要接受 - - - - - 提供发送测试命令统一接口 - - - - - 提供测试命令接收完成统一接口 - - 超时接收时间 - 接收到的数据 - - - - - 串口状态枚举 - - - - - 未开启或已退出 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送同步命令 - - - - - 等待回复 - - - - - 键值回复 - - - - - 发送测试命令 - - - - - 连接成功 - - - - - 连接失败 - - - - - 串口任务状态,根据状态不同进行不同的串口操作 - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 发送同步命令的间隔时间(ms) - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 状态机执行间隔,默认10ms - - - - - 当前可以访问的串口名集合 - - - - - 当前串口对象 - - - - - UTS串口波特率 - - - - - 接收等待最长时间 - - - - - 串口通讯写入失败计数 - - - - - 串口通讯写入失败最大上限 - - - - - 处理高优先级接收数据 - 当前包含按键键值与测试状态回复包等数据 - - - - - UTS串口任务状态机 - - - - - 串口任务,包含索引串口,发送数据,接收数据 - - - - -UTS系列App与UtsCore交互为避免重复书写产生的中间类 - - - - 本地服务索引 - - - 软件名称 - - - 软件版本 - - - 测试记录表名 - - - 登录用户信息 - - - 鉴权文件信息 - - - 当前选择站位信息 - - - 测试结果内容 - - - 软件注册器 - - - 服务通讯TCP客户端 - - - 是否释放当前类 - - - 站位观察者集合 - - - 当前软件所属站位类型 - - - - 用户账号信息 - - - - - - 鉴权文件信息 - - - - - - 工厂产线信息 - - - - - - 测试站信息 - - - - - - 测试站信息 - - - - - - APP注册机 - - - - - - 测试记录表名 - - - - - - 未查询到数据库订单号时是否显示提示 - - - - - - 允许保存未查询到订单号的记录入库,显示提示时,此字段不生效。 - - - - - - 初始化信息 - - 软件选择站位时,可以选择的站位类型,默认全部显示 - - - - 连接数据服务 - - - - - 上传状态至数据服务 - - - - - - 显示登陆页面 - - - - - 注册APP - - - - - 初始化测试结果字段信息 - - - - - 填充测试结果订单信息字段 - - - - - 根据序号分配给测试记录的订单号,并将测试记录写入到数据库中,提交成功后会重置测试记录。 - - - - - 根据项目名与站位名称,加载项目站信息 - - - - - - - 显示切换项目站信息页面,供用户修改测试站 - - - - - 用户选择测试站后回调函数 - - - - - - - 定期更新APP存活时间 - - - - - - 保存软件运行日志至数据库 - - - - - - 保存软件运行日志至数据库 - - - - - 从注册表中获取UTS软件运行所需的变量值 - - 注意: - 使用时避免反复读写注册表,应将获取的字段值保存至变量中; - 获取字段失败时会程序异,使用时做好异常保护; - 只读的变量是从注册表中获取的字段根据规则拼接而成的; - - - - - 数据服务 - - - 更新服务 - - - 鉴权文件 - - - 数据库文件夹 - - - 产品相关 - - - - 注册表存放根路径配置信息 - - - - - 获取注册表是否存在 - - - - - - 获取和设置UTS软件存放位置的根文件路径,如C:/AUTS - - - - - - 获取和设置UTS软件Ftp所在地址(当前阶段与数据库URL相同) - - - - - - 获取和设置数据库URL所在地址(当前阶段与Ftp Url相同) - - - - - - 获取和设置License文件名 - - - - - - 获取和设置DataService名称 - - - - - - 获取和设置DataService版本信息 - - - - - - 获取或设置服务的索引,默认值为-1 - - - - - - 获取或设置服务的通讯端口,默认端口55533 - - - - - - 服务注册时使用的自定义标识名 - - - - - - 存放数据服务文件夹,不包含版本文件夹 - - - - - - 获取数据服务执行文件的路径 - - - - - - 获取和设置UpdateService名称 - - - - - - 获取和设置UpdateService版本信息 - - - - - - 获取和设置UpdateService文件夹路径,不包含版本文件夹 - - - - - - 获取和设置UpdateService当前版本文件夹路径 - - - - - - 获取数据服务执行文件的路径 - - - - - - UTS使用的数据库连接参数 - - - - - 远程数据库类型 - - - - - 远程数据库连接字符串 - - - - - 远程私有库名 - - - - - 远程公共库名 - - - - - 本地数据库类型 - - - - - 本地数据库连接字符串 - - - - 系统文件夹枚举值 - - - 错误记录文件夹 - - - 设置文件夹 - - - 用户临时操作文件夹 - - - - Temp文件夹下文件夹 - - - - 创建项目时使用文件夹 - - - 设计时使用文件夹 - - - 测试时使用文件夹 - - - - Temp文件夹下文件夹 - - - - 产品原图文件夹名 - - - 产品预览图文件夹名 - - - - 本地缓存数据路径 - - - - - - 校验程序所需的所有文件夹是否存在,不存在则创建 - - - - - 用户设置文件夹完整路径 - - - - - - 行节点风格存储文件完整路径 - - - - - - 用户日志文件夹完整路径 - - - - - - 项目站发布文件夹路径,与项目测试站包发布路径区分,可修改 - - - - - - 项目站包远程存储路径 - - 产品索引 - 产品工艺站索引 - 产品测试站包名 - - - - - 产品原图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品原图本地存储文件夹路径 - - - - - - 产品预览图远程存储文件夹路径 - - - - - - 产品原图本地存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 项目站发布文件夹指定项目名路径 - - 产品索引 - - - - - 项目站包发布路径 - - 产品名称 - 站位索引 - - - - - 项目站包文件路径 - - 产品索引 - 站位索引 - 包名待.uts后缀 - - - - - 项目临时编辑文件夹路径 - - - - - - 临时项目设计文件夹路径 - - - - - - 临时项目文件路径 - - - - - - - 项目站设计文件夹路径 - - - - - - 项目站包信息文件名 - - - - - 获取指定包名的项目站包文件夹路径 - - - - - - 获取指定包名的项目站包信息文件路径 - - - - - - - 获取指定包名的项目站包资源文件夹 - - - - - - - 获取指定包名的项目站包测试流程文件夹 - - - - - - - 项目站包文件夹路径 - - - - - - 项目站包信息文件路径 - - - - - - 项目站包资源文件夹 - - - - - - 项目站包资源文件夹 - - - - - diff --git a/AUTS_Studio/bin/Release/Ubiety.Dns.Core.dll b/AUTS_Studio/bin/Release/Ubiety.Dns.Core.dll deleted file mode 100644 index b10ecf2..0000000 Binary files a/AUTS_Studio/bin/Release/Ubiety.Dns.Core.dll and /dev/null differ diff --git a/AUTS_Studio/bin/Release/Zstandard.Net.dll b/AUTS_Studio/bin/Release/Zstandard.Net.dll deleted file mode 100644 index 83934d1..0000000 Binary files a/AUTS_Studio/bin/Release/Zstandard.Net.dll and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_Studio/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_Studio/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.AssemblyReference-冲突-张虹_Win7.cache b/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.AssemblyReference-冲突-张虹_Win7.cache deleted file mode 100644 index cc2ca45..0000000 Binary files a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.AssemblyReference-冲突-张虹_Win7.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.AssemblyReference-冲突-方鹏洋_Win10.cache b/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.AssemblyReference-冲突-方鹏洋_Win10.cache deleted file mode 100644 index 7b14dd2..0000000 Binary files a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.AssemblyReference-冲突-方鹏洋_Win10.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.CopyComplete b/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.FileListAbsolute.txt b/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.FileListAbsolute.txt deleted file mode 100644 index 330dfb0..0000000 --- a/AUTS_Studio/obj/Debug/AUTS_Studio.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,343 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\AUTS_Studio.exe.config -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\AUTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\AUTS_Studio.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\AUTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\AUTS_Studio.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\AUTS_Studio.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\AUTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\AUTS_Studio.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\AUTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FluentFTP.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FluentFTP.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -Z:\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.AssemblyReference.cache -Z:\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.exe -Z:\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.xml -Z:\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\AUTS_Studio.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\FluentFTP.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -E:\Git\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.exe.config -E:\Git\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.exe -E:\Git\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.pdb -E:\Git\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_Studio\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_Studio\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_Studio\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\FluentFTP.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_Studio\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_Studio\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CopyComplete -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.exe -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.xml -E:\Git\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.exe.config -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.exe -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.pdb -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\AUTS_Studio.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\FluentFTP.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.FrmMain.resources -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.Resources.resources -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Stu.1BA4C2FE.Up2Date -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.exe -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.xml -D:\ML\Wen\AUTS\AUTS_Studio\obj\Debug\AUTS_Studio.pdb -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_Studio\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_Studio/obj/Debug/AUTS_Studio.vbprojAssemblyReference.cache b/AUTS_Studio/obj/Debug/AUTS_Studio.vbprojAssemblyReference.cache deleted file mode 100644 index 14e5450..0000000 Binary files a/AUTS_Studio/obj/Debug/AUTS_Studio.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_Studio/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index e21ce80..0000000 Binary files a/AUTS_Studio/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_Studio/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 339ca23..0000000 Binary files a/AUTS_Studio/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Studio/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 7ecd255..0000000 Binary files a/AUTS_Studio/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.exe.config b/AUTS_Studio/obj/Debug/UTS_Studio.exe.config deleted file mode 100644 index 1486d9a..0000000 --- a/AUTS_Studio/obj/Debug/UTS_Studio.exe.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.AssemblyReference.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.AssemblyReference.cache deleted file mode 100644 index 54b3f51..0000000 Binary files a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.CopyComplete b/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.CoreCompileInputs.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.CoreCompileInputs.cache deleted file mode 100644 index 805ce1e..0000000 --- a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -5d506a27bb1502797e0a8d80ee1ab5862d5ccecb diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.FileListAbsolute.txt b/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.FileListAbsolute.txt deleted file mode 100644 index ba54a96..0000000 --- a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,158 +0,0 @@ -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe.config -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\log4net.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Data.SQLite.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.Resources.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.GenerateResource.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CoreCompileInputs.cache -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.exe -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.pdb -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll.config -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.FrmMain.resources -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\SharpCompress.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Newtonsoft.Json.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Zstandard.Net.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Renci.SshNet.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -H:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe.config -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\log4net.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Newtonsoft.Json.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Zstandard.Net.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Renci.SshNet.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.FrmMain.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.Resources.resources -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.exe -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.xml -D:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.pdb -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe.config -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.pdb -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.xml -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\FlexCell.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\SharpCompress.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Data.SQLite.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\Newtonsoft.Json.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\Zstandard.Net.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\Renci.SshNet.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.pdb -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.xml -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll.config -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.xml -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.xml -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.xml -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbprojAssemblyReference.cache -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.FrmMain.resources -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.Resources.resources -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.GenerateResource.cache -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CoreCompileInputs.cache -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CopyComplete -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.exe -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.xml -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.pdb -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\Google.Protobuf.dll -F:\ML\Project\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.xml -F:\ML\Project\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.exe.config -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\Renci.SshNet.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.exe.config -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.exe.config -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\TeeChart.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\UTS_Studio\obj\Debug\UTS_Studio.pdb diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.GenerateResource.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.GenerateResource.cache deleted file mode 100644 index 7ee2628..0000000 Binary files a/AUTS_Studio/obj/Debug/UTS_Studio.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-Momo_Win7.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-Momo_Win7.cache deleted file mode 100644 index 0d03b72..0000000 Binary files a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-Momo_Win7.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-高腾飞_Win7.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-高腾飞_Win7.cache deleted file mode 100644 index e984cc2..0000000 Binary files a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-高腾飞_Win7.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-齐增标_Win10.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-齐增标_Win10.cache deleted file mode 100644 index c0a7c3b..0000000 Binary files a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference-冲突-齐增标_Win10.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference.cache b/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference.cache deleted file mode 100644 index 6d46394..0000000 Binary files a/AUTS_Studio/obj/Debug/UTS_Studio.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.FrmMain.resources b/AUTS_Studio/obj/Release/AUTS_Studio.FrmMain.resources deleted file mode 100644 index 641b30e..0000000 Binary files a/AUTS_Studio/obj/Release/AUTS_Studio.FrmMain.resources and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.Resources.resources b/AUTS_Studio/obj/Release/AUTS_Studio.Resources.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_Studio/obj/Release/AUTS_Studio.Resources.resources and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.exe b/AUTS_Studio/obj/Release/AUTS_Studio.exe deleted file mode 100644 index 8152dff..0000000 Binary files a/AUTS_Studio/obj/Release/AUTS_Studio.exe and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.pdb b/AUTS_Studio/obj/Release/AUTS_Studio.pdb deleted file mode 100644 index 4a059b4..0000000 Binary files a/AUTS_Studio/obj/Release/AUTS_Studio.pdb and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.AssemblyReference.cache b/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.AssemblyReference.cache deleted file mode 100644 index 1089b6b..0000000 Binary files a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.CopyComplete b/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.CoreCompileInputs.cache b/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.CoreCompileInputs.cache deleted file mode 100644 index c9e97d4..0000000 --- a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -ac4d61e99b260b83349258abca7c0b9029cae17e diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.FileListAbsolute.txt b/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.FileListAbsolute.txt deleted file mode 100644 index 7d974ff..0000000 --- a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,48 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\AUTS_Studio.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\AUTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\AUTS_Studio.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\AUTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\bin\Release\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.vbproj.AssemblyReference.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Studio\obj\Release\AUTS_Studio.pdb diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.GenerateResource.cache b/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.GenerateResource.cache deleted file mode 100644 index 5b81157..0000000 Binary files a/AUTS_Studio/obj/Release/AUTS_Studio.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_Studio/obj/Release/AUTS_Studio.xml b/AUTS_Studio/obj/Release/AUTS_Studio.xml deleted file mode 100644 index a97e1f1..0000000 --- a/AUTS_Studio/obj/Release/AUTS_Studio.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - -AUTS_Studio - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 分页控件包含的页面 - - - - - 显示登录窗口 - - - - 修改窗体标题 - - - - 校验文件夹,若文件夹不存在则创建 - - - - - 添加项目设计窗体到分页控件中 - - - - diff --git a/AUTS_Studio/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Studio/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index a634d43..0000000 Binary files a/AUTS_Studio/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Studio/obj/Release/UTS_Studio.vbprojAssemblyReference.cache b/AUTS_Studio/obj/Release/UTS_Studio.vbprojAssemblyReference.cache deleted file mode 100644 index 89b013e..0000000 Binary files a/AUTS_Studio/obj/Release/UTS_Studio.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.application b/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.application deleted file mode 100644 index 424bd06..0000000 --- a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.application +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - GyZLeBm1NOcT942pMv0z8IEzMb34oaFawv6uoknxeDw= - - - - \ No newline at end of file diff --git a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe b/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe deleted file mode 100644 index 403efc8..0000000 Binary files a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe.config b/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe.config deleted file mode 100644 index 73c9bf8..0000000 --- a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe.config +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe.manifest b/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe.manifest deleted file mode 100644 index 51f6abd..0000000 --- a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.exe.manifest +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2Oc+VU7J62jOwBBIU5EncFN4M6dniwFQwoRFcm2igQQ= - - - - - - - - - - - - pkUxy9puRCzT8+NR1z1AhrzgCfuXnvkLKPb6RRIvXI8= - - - - - - - - - - - - rjgJb/IX0GetL+OMedFvFESHxeLiualxv+MztdOlurA= - - - - - - - - - - - - 28d0pL6ZczrSHwUZ0CvOoTbAMTd1JgQWtf+IVJOCVJE= - - - - - - - - - - - - 35pRbDV52ZcfH6A8vPhQBwGT0sLDoi32A2MObvugrSk= - - - - - - - - - - - - iZt23NwbTw3G3o7er2sV/njinSqOJNwVDnslLK/MOLg= - - - - - - - - - - - - QeTVrSMyJYZsM56dHatpgSg+p0WTseZEtdYYQVJfytI= - - - - - - - - - - - - EQ80i1BW05RFWHofw8nY4upHJV2z3owIUJDXc8sbY4o= - - - - - - - - - - - - oZfzHSqxTPw87kQQ75DJmTwVUDYzD1n60919pa1imxU= - - - - - - - - - - - - tiSUnfiw46YVP9+3MKfG9JkLZZLuDZIuF4hDPSdmEPM= - - - - - - - - - - - - ecKwhBSNpYm2/xnaX7+jyB+oNSwFuA1cBib7iaofklk= - - - - - - - - - - - - OvHgcwW+0KvgzzLZhU4Kf19HAhat7huH0CNQvgnTGzU= - - - - - - - - - - - - Ga0YrQoSj2kGZ8cjnbr4limr5Dprs2W6wpW3KozCYxg= - - - - - - - - - - - - vz+4RmT0CX8aipvHGlHc+M8akF1AgKTSkNoXMIZuhW8= - - - - - - - - - - - - HT74aYKB589zcdFVSv71hys5+Wwm2nciEKM9oEG6EYM= - - - - - - - - - - - - N3aEiOjvRXKbx9miZ3YzxkUAQpdbuWUW4YbabLnNDc8= - - - - - - - - - - - - T4H/0NxyBNt1r8NepCkXabB8RAWS8oiUJg7qdmJqI8Y= - - - - - - - - - - - - QlzLo6q5nMFBFwX0kdEhC2q98wjyvU01Z3dWTu4eunE= - - - - - - - - - - - - AZnuMl92VNQ74m4O+fXzc+nN9LZP1xsfoplS4lGNs4k= - - - - - - - - - - - - akJdCbivvXeG6x/ocqU5GIpZBvhgIDk7jfrfK3YYvvE= - - - - - - - - - - - - sA/9afOty8HFRcsW9gn/0C+2jmZyxz1PouftB0gA+nQ= - - - - - - - - - - - - AF5ezQPpM4b1ROQNJlzQCUmhQq2xJRxXgIzEgnJwv3Q= - - - - - - - - - - 0K2GXmsDH+vXztWeoypTH2DIdHyoXBiIhNKpdWP1iCY= - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.pdb b/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.pdb deleted file mode 100644 index d8cdca3..0000000 Binary files a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService.pdb and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService_2.4.2.0.zip b/AUTS_UpdateService/bin/Debug/AUTS_UpdateService_2.4.2.0.zip deleted file mode 100644 index 678f6c2..0000000 Binary files a/AUTS_UpdateService/bin/Debug/AUTS_UpdateService_2.4.2.0.zip and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/BouncyCastle.Crypto.dll b/AUTS_UpdateService/bin/Debug/BouncyCastle.Crypto.dll deleted file mode 100644 index 05036dd..0000000 Binary files a/AUTS_UpdateService/bin/Debug/BouncyCastle.Crypto.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/FlexCell.dll b/AUTS_UpdateService/bin/Debug/FlexCell.dll deleted file mode 100644 index 0f6c38e..0000000 Binary files a/AUTS_UpdateService/bin/Debug/FlexCell.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/FluentFTP.dll b/AUTS_UpdateService/bin/Debug/FluentFTP.dll deleted file mode 100644 index 14597be..0000000 Binary files a/AUTS_UpdateService/bin/Debug/FluentFTP.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/Google.Protobuf.dll b/AUTS_UpdateService/bin/Debug/Google.Protobuf.dll deleted file mode 100644 index 39527f2..0000000 Binary files a/AUTS_UpdateService/bin/Debug/Google.Protobuf.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/Google.Protobuf.pdb b/AUTS_UpdateService/bin/Debug/Google.Protobuf.pdb deleted file mode 100644 index c6f83b3..0000000 Binary files a/AUTS_UpdateService/bin/Debug/Google.Protobuf.pdb and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/Google.Protobuf.xml b/AUTS_UpdateService/bin/Debug/Google.Protobuf.xml deleted file mode 100644 index eb6b0d4..0000000 --- a/AUTS_UpdateService/bin/Debug/Google.Protobuf.xml +++ /dev/null @@ -1,11896 +0,0 @@ - - - - Google.Protobuf - - - - - Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy - - - - - The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy - - - - - Determines which copy routine to use based on the number of bytes to be copied. - - - - - Reverses the order of bytes in the array - - - - - Immutable array of bytes. - - - - - Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. - - - - - Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. - This method encapsulates converting array to memory. Reduces need for SecuritySafeCritical - in .NET Framework. - - - - - Constructs a new ByteString from the given memory. The memory is - *not* copied, and must not be modified after this constructor is called. - - - - - Returns an empty ByteString. - - - - - Returns the length of this ByteString in bytes. - - - - - Returns true if this byte string is empty, false otherwise. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Provides read-only access to the data of this . - No data is copied so this is the most efficient way of accessing. - - - - - Converts this into a byte array. - - The data is copied - changes to the returned array will not be reflected in this ByteString. - A byte array with the same data as this ByteString. - - - - Converts this into a standard base64 representation. - - A base64 representation of this ByteString. - - - - Constructs a from the Base64 Encoded String. - - - - - Constructs a from data in the given stream, synchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - A ByteString with content read from the given stream. - - - - Constructs a from data in the given stream, asynchronously. - - If successful, will be read completely, from the position - at the start of the call. - The stream to copy into a ByteString. - The cancellation token to use when reading from the stream, if any. - A ByteString with content read from the given stream. - - - - Constructs a from the given array. The contents - are copied, so further modifications to the array will not - be reflected in the returned ByteString. - This method can also be invoked in ByteString.CopyFrom(0xaa, 0xbb, ...) form - which is primarily useful for testing. - - - - - Constructs a from a portion of a byte array. - - - - - Constructs a from a read only span. The contents - are copied, so further modifications to the span will not - be reflected in the returned . - - - - - Creates a new by encoding the specified text with - the given encoding. - - - - - Creates a new by encoding the specified text in UTF-8. - - - - - Returns the byte at the given index. - - - - - Converts this into a string by applying the given encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with the given encoding. - - The encoding to use to decode the binary data into text. - The result of decoding the binary data with the given decoding. - - - - Converts this into a string by applying the UTF-8 encoding. - - - This method should only be used to convert binary data which was the result of encoding - text with UTF-8. - - The result of decoding the binary data with the given decoding. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Returns an iterator over the bytes in this . - - An iterator over the bytes in this object. - - - - Creates a CodedInputStream from this ByteString's data. - - - - - Compares two byte strings for equality. - - The first byte string to compare. - The second byte string to compare. - true if the byte strings are equal; false otherwise. - - - - Compares two byte strings for inequality. - - The first byte string to compare. - The second byte string to compare. - false if the byte strings are equal; true otherwise. - - - - Compares this byte string with another object. - - The object to compare this with. - true if refers to an equal ; false otherwise. - - - - Returns a hash code for this object. Two equal byte strings - will return the same hash code. - - A hash code for this object. - - - - Compares this byte string with another. - - The to compare this with. - true if refers to an equal byte string; false otherwise. - - - - Copies the entire byte array to the destination array provided at the offset specified. - - - - - Writes the entire byte array to the provided stream - - - - - SecuritySafeCritical attribute can not be placed on types with async methods. - This class has ByteString's async methods so it can be marked with SecuritySafeCritical. - - - - - Reads and decodes protocol message fields. - - - - This class is generally used by generated code to read appropriate - primitives from the stream. It effectively encapsulates the lowest - levels of protocol buffer format. - - - Repeated fields and map fields are not handled by this class; use - and to serialize such fields. - - - - - - Whether to leave the underlying stream open when disposing of this stream. - This is always true when there's no stream. - - - - - Buffer of data read from the stream or provided at construction time. - - - - - The stream to read further input from, or null if the byte array buffer was provided - directly on construction, with no further data available. - - - - - The parser state is kept separately so that other parse implementations can reuse the same - parsing primitives. - - - - - Creates a new CodedInputStream reading data from the given byte array. - - - - - Creates a new that reads from the given byte array slice. - - - - - Creates a new reading data from the given stream, which will be disposed - when the returned object is disposed. - - The stream to read from. - - - - Creates a new reading data from the given stream. - - The stream to read from. - true to leave open when the returned - is disposed; false to dispose of the given stream when the - returned object is disposed. - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the default limits. - - - - - Creates a new CodedInputStream reading data from the given - stream and buffer, using the specified limits. - - - This chains to the version with the default limits instead of vice versa to avoid - having to check that the default values are valid every time. - - - - - Creates a with the specified size and recursion limits, reading - from an input stream. - - - This method exists separately from the constructor to reduce the number of constructor overloads. - It is likely to be used considerably less frequently than the constructors, as the default limits - are suitable for most use cases. - - The input stream to read from - The total limit of data to read from the stream. - The maximum recursion depth to allow while reading. - A CodedInputStream reading from with the specified size - and recursion limits. - - - - Returns the current position in the input stream, or the position in the input buffer - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the stream. - - - - - Returns the size limit for this stream. - - - This limit is applied when reading from the underlying stream, as a sanity check. It is - not applied when reading from a byte array data source without an underlying stream. - The default value is Int32.MaxValue. - - - The size limit. - - - - - Returns the recursion limit for this stream. This limit is applied whilst reading messages, - to avoid maliciously-recursive data. - - - The default limit is 100. - - - The recursion limit for this stream. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Disposes of this instance, potentially closing any underlying stream. - - - As there is no flushing to perform here, disposing of a which - was constructed with the leaveOpen option parameter set to true (or one which - was constructed to read from a byte array) has no effect. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Reads a field tag, returning the tag of 0 for "end of stream". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputStream; it may be the end of the logical stream - for an embedded message, for example. - - The next field tag, or 0 for end of stream. (0 is never a valid tag.) - - - - Skips the data for the field with the tag we've just read. - This should be called directly after , when - the caller wishes to skip an unknown field. - - - This method throws if the last-read tag was an end-group tag. - If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the - start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly - resulting in an error if an end-group tag has not been paired with an earlier start-group tag. - - The last tag was an end-group tag - The last read operation read to the end of the logical stream - - - - Skip a group. - - - - - Reads a double field from the stream. - - - - - Reads a float field from the stream. - - - - - Reads a uint64 field from the stream. - - - - - Reads an int64 field from the stream. - - - - - Reads an int32 field from the stream. - - - - - Reads a fixed64 field from the stream. - - - - - Reads a fixed32 field from the stream. - - - - - Reads a bool field from the stream. - - - - - Reads a string field from the stream. - - - - - Reads an embedded message field value from the stream. - - - - - Reads an embedded group field from the stream. - - - - - Reads a bytes field value from the stream. - - - - - Reads a uint32 field value from the stream. - - - - - Reads an enum field value from the stream. - - - - - Reads an sfixed32 field value from the stream. - - - - - Reads an sfixed64 field value from the stream. - - - - - Reads an sint32 field value from the stream. - - - - - Reads an sint64 field value from the stream. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Reads a raw varint from the stream. - - - - - Reads a 32-bit little-endian integer from the stream. - - - - - Reads a 64-bit little-endian integer from the stream. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads a top-level message or a nested message after the limits for this message have been pushed. - (parser will proceed until the end of the current limit) - NOTE: this method needs to be public because it's invoked by the generated code - e.g. msg.MergeFrom(CodedInputStream input) method - - - - - Encodes and writes protocol message fields. - - - - This class is generally used by generated code to write appropriate - primitives to the stream. It effectively encapsulates the lowest - levels of protocol buffer format. Unlike some other implementations, - this does not include combined "write tag and value" methods. Generated - code knows the exact byte representations of the tags they're going to write, - so there's no need to re-encode them each time. Manually-written code calling - this class should just call one of the WriteTag overloads before each value. - - - Repeated fields and map fields are not handled by this class; use RepeatedField<T> - and MapField<TKey, TValue> to serialize such fields. - - - - - - Computes the number of bytes that would be needed to encode a - double field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - float field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - int32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - fixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bool field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - string field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - group field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - embedded message field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - bytes field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - uint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a - enum field, including the tag. The caller is responsible for - converting the enum value to its numeric value. - - - - - Computes the number of bytes that would be needed to encode an - sfixed32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sfixed64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint32 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode an - sint64 field, including the tag. - - - - - Computes the number of bytes that would be needed to encode a length, - as written by . - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a varint. - - - - - Computes the number of bytes that would be needed to encode a tag. - - - - - The buffer size used by CreateInstance(Stream). - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new CodedOutputStream that writes directly to the given - byte array slice. If more bytes are written than fit in the array, - OutOfSpaceException will be thrown. - - - - - Creates a new which write to the given stream, and disposes of that - stream when the returned CodedOutputStream is disposed. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - The size of buffer to use internally. - - - - Creates a new CodedOutputStream which write to the given stream. - - The stream to write to. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Creates a new CodedOutputStream which write to the given stream and uses - the specified buffer size. - - The stream to write to. - The size of buffer to use internally. - If true, is left open when the returned CodedOutputStream is disposed; - if false, the provided stream is disposed as well. - - - - Returns the current position in the stream, or the position in the output buffer - - - - - Configures whether or not serialization is deterministic. - - - Deterministic serialization guarantees that for a given binary, equal messages (defined by the - equals methods in protos) will always be serialized to the same bytes. This implies: - - Repeated serialization of a message will return the same bytes. - Different processes of the same binary (which may be executing on different machines) - will serialize equal messages to the same bytes. - - Note the deterministic serialization is NOT canonical across languages; it is also unstable - across different builds with schema changes due to unknown fields. Users who need canonical - serialization, e.g. persistent storage in a canonical form, fingerprinting, etc, should define - their own canonicalization specification and implement the serializer using reflection APIs - rather than relying on this API. - Once set, the serializer will: (Note this is an implementation detail and may subject to - change in the future) - - Sort map entries by keys in lexicographical order or numerical order. Note: For string - keys, the order is based on comparing the UTF-16 code unit value of each character in the strings. - The order may be different from the deterministic serialization in other languages where - maps are sorted on the lexicographical order of the UTF8 encoded keys. - - - - - - Writes a double field value, without a tag, to the stream. - - The value to write - - - - Writes a float field value, without a tag, to the stream. - - The value to write - - - - Writes a uint64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int64 field value, without a tag, to the stream. - - The value to write - - - - Writes an int32 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed64 field value, without a tag, to the stream. - - The value to write - - - - Writes a fixed32 field value, without a tag, to the stream. - - The value to write - - - - Writes a bool field value, without a tag, to the stream. - - The value to write - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag, to the stream. - Only the message data is written, without a length-delimiter. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag, to the stream. - - The value to write - - - - Writes an enum value, without a tag, to the stream. - - The value to write - - - - Writes an sfixed32 value, without a tag, to the stream. - - The value to write. - - - - Writes an sfixed64 value, without a tag, to the stream. - - The value to write - - - - Writes an sint32 value, without a tag, to the stream. - - The value to write - - - - Writes an sint64 value, without a tag, to the stream. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag directly to the stream. - - The encoded tag - - - - Writes the given two-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag directly to the stream. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Indicates that a CodedOutputStream wrapping a flat byte array - ran out of space. - - - - - Flushes any buffered data and optionally closes the underlying stream, if any. - - - - By default, any underlying stream is closed by this method. To configure this behaviour, - use a constructor overload with a leaveOpen parameter. If this instance does not - have an underlying stream, this method does nothing. - - - For the sake of efficiency, calling this method does not prevent future write calls - but - if a later write ends up writing to a stream which has been disposed, that is likely to - fail. It is recommend that you not call any other methods after this. - - - - - - Flushes any buffered data to the underlying stream (if there is one). - - - - - Verifies that SpaceLeft returns zero. It's common to create a byte array - that is exactly big enough to hold a message, then write to it with - a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that - the message was actually as big as expected, which can help finding bugs. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - Utility to compare if two Lists are the same, and the hash code - of a List. - - - - - Checks if two lists are equal. - - - - - Gets the list's hash code. - - - - - Representation of a map field in a Protocol Buffer message. - - Key type in the map. Must be a type supported by Protocol Buffer map keys. - Value type in the map. Must be a type supported by Protocol Buffers. - - - For string keys, the equality comparison is provided by . - - - Null values are not permitted in the map, either for wrapper types or regular messages. - If a map is deserialized from a data stream and the value is missing from an entry, a default value - is created instead. For primitive types, that is the regular default value (0, the empty string and so - on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length - encoded value for the field. - - - This implementation does not generally prohibit the use of key/value types which are not - supported by Protocol Buffers (e.g. using a key type of byte) but nor does it guarantee - that all operations will work in such cases. - - - The order in which entries are returned when iterating over this object is undefined, and may change - in future versions. - - - - - - Creates a deep clone of this object. - - - A deep clone of this object. - - - - - Adds the specified key/value pair to the map. - - - This operation fails if the key already exists in the map. To replace an existing entry, use the indexer. - - The key to add - The value to add. - The given key already exists in map. - - - - Determines whether the specified key is present in the map. - - The key to check. - true if the map contains the given key; false otherwise. - - - - Removes the entry identified by the given key from the map. - - The key indicating the entry to remove from the map. - true if the map contained the given key before the entry was removed; false otherwise. - - - - Gets the value associated with the specified key. - - The key whose value to get. - When this method returns, the value associated with the specified key, if the key is found; - otherwise, the default value for the type of the parameter. - This parameter is passed uninitialized. - true if the map contains an element with the specified key; otherwise, false. - - - - Gets or sets the value associated with the specified key. - - The key of the value to get or set. - The property is retrieved and key does not exist in the collection. - The value associated with the specified key. If the specified key is not found, - a get operation throws a , and a set operation creates a new element with the specified key. - - - - Gets a collection containing the keys in the map. - - - - - Gets a collection containing the values in the map. - - - - - Adds the specified entries to the map. The keys and values are not automatically cloned. - - The entries to add to the map. - - - - Adds the specified entries to the map, replacing any existing entries with the same keys. - The keys and values are not automatically cloned. - - This method primarily exists to be called from MergeFrom methods in generated classes for messages. - The entries to add to the map. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Adds the specified item to the map. - - The item to add to the map. - - - - Removes all items from the map. - - - - - Determines whether map contains an entry equivalent to the given key/value pair. - - The key/value pair to find. - - - - - Copies the key/value pairs in this map to an array. - - The array to copy the entries into. - The index of the array at which to start copying values. - - - - Removes the specified key/value pair from the map. - - Both the key and the value must be found for the entry to be removed. - The key/value pair to remove. - true if the key/value pair was found and removed; false otherwise. - - - - Gets the number of elements contained in the map. - - - - - Gets a value indicating whether the map is read-only. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this map with another for equality. - - - The order of the key/value pairs in the maps is not deemed significant in this comparison. - - The map to compare this with. - true if refers to an equal map; false otherwise. - - - - Adds entries to the map from the given stream. - - - It is assumed that the stream is initially positioned after the tag specified by the codec. - This method will continue reading entries from the stream until the end is reached, or - a different tag is encountered. - - Stream to read from - Codec describing how the key/value pairs are encoded - - - - Adds entries to the map from the given parse context. - - - It is assumed that the input is initially positioned after the tag specified by the codec. - This method will continue reading entries from the input until the end is reached, or - a different tag is encountered. - - Input to read from - Codec describing how the key/value pairs are encoded - - - - Writes the contents of this map to the given coded output stream, using the specified codec - to encode each entry. - - The output stream to write to. - The codec to use for each entry. - - - - Writes the contents of this map to the given write context, using the specified codec - to encode each entry. - - The write context to write to. - The codec to use for each entry. - - - - Calculates the size of this map based on the given entry codec. - - The codec to use to encode each entry. - - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - A codec for a specific map field. This contains all the information required to encode and - decode the nested messages. - - - - - Creates a new entry codec based on a separate key codec and value codec, - and the tag to use for each map entry. - - The key codec. - The value codec. - The map tag to use to introduce each map entry. - - - - The key codec. - - - - - The value codec. - - - - - The tag used in the enclosing message to indicate map entries. - - - - - Provides a central place to implement equality comparisons, primarily for bitwise float/double equality. - - - - - Returns an equality comparer for suitable for Protobuf equality comparisons. - This is usually just the default equality comparer for the type, but floating point numbers are compared - bitwise. - - The type of equality comparer to return. - The equality comparer. - - - - Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison. - (NaN values are considered equal, but only when they have the same representation.) - - - - - The contents of a repeated field: essentially, a collection with some extra - restrictions (no null values) and capabilities (deep cloning). - - - This implementation does not generally prohibit the use of types which are not - supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases. - - The element type of the repeated field. - - - - Creates a deep clone of this repeated field. - - - If the field type is - a message type, each element is also cloned; otherwise, it is - assumed that the field type is primitive (including string and - bytes, both of which are immutable) and so a simple copy is - equivalent to a deep clone. - - A deep clone of this repeated field. - - - - Adds the entries from the given input stream, decoding them with the specified codec. - - The input stream to read from. - The codec to use in order to read each entry. - - - - Adds the entries from the given parse context, decoding them with the specified codec. - - The input to read from. - The codec to use in order to read each entry. - - - - Calculates the size of this collection based on the given codec. - - The codec to use when encoding each field. - The number of bytes that would be written to an output by one of the WriteTo methods, - using the same codec. - - - - Writes the contents of this collection to the given , - encoding each value using the specified codec. - - The output stream to write to. - The codec to use when encoding each value. - - - - Writes the contents of this collection to the given write context, - encoding each value using the specified codec. - - The write context to write to. - The codec to use when encoding each value. - - - - Gets and sets the capacity of the RepeatedField's internal array. - When set, the internal array is reallocated to the given capacity. - The new value is less than . - - - - - Adds the specified item to the collection. - - The item to add. - - - - Removes all items from the collection. - - - - - Determines whether this collection contains the given item. - - The item to find. - true if this collection contains the given item; false otherwise. - - - - Copies this collection to the given array. - - The array to copy to. - The first index of the array to copy to. - - - - Removes the specified item from the collection - - The item to remove. - true if the item was found and removed; false otherwise. - - - - Gets the number of elements contained in the collection. - - - - - Gets a value indicating whether the collection is read-only. - - - - - Adds all of the specified values into this collection. - - The values to add to this collection. - - - - Adds the elements of the specified span to the end of the collection. - - The span whose elements should be added to the end of the collection. - - - - Adds all of the specified values into this collection. This method is present to - allow repeated fields to be constructed from queries within collection initializers. - Within non-collection-initializer code, consider using the equivalent - method instead for clarity. - - The values to add to this collection. - - - - Returns an enumerator that iterates through the collection. - - - An enumerator that can be used to iterate through the collection. - - - - - Determines whether the specified , is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Compares this repeated field with another for equality. - - The repeated field to compare this with. - true if refers to an equal repeated field; false otherwise. - - - - Returns the index of the given item within the collection, or -1 if the item is not - present. - - The item to find in the collection. - The zero-based index of the item, or -1 if it is not found. - - - - Inserts the given item at the specified index. - - The index at which to insert the item. - The item to insert. - - - - Removes the item at the given index. - - The zero-based index of the item to remove. - - - - Returns a string representation of this repeated field, in the same - way as it would be represented by the default JSON formatter. - - - - - Gets or sets the item at the specified index. - - - The element at the specified index. - - The zero-based index of the element to get or set. - The item at the specified index. - - - - Extension methods for , effectively providing - the familiar members from previous desktop framework versions while - targeting the newer releases, .NET Core etc. - - - - - Returns the public getter of a property, or null if there is no such getter - (either because it's read-only, or the getter isn't public). - - - - - Returns the public setter of a property, or null if there is no such setter - (either because it's write-only, or the setter isn't public). - - - - - Provides extension methods on Type that just proxy to TypeInfo. - These are used to support the new type system from .NET 4.5, without - having calls to GetTypeInfo all over the place. While the methods here are meant to be - broadly compatible with the desktop framework, there are some subtle differences in behaviour - but - they're not expected to affect our use cases. While the class is internal, that should be fine: we can - evaluate each new use appropriately. - - - - - See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom - - - - - Returns a representation of the public property associated with the given name in the given type, - including inherited properties or null if there is no such public property. - Here, "public property" means a property where either the getter, or the setter, or both, is public. - - - - - Returns a representation of the public method associated with the given name in the given type, - including inherited methods. - - - This has a few differences compared with Type.GetMethod in the desktop framework. It will throw - if there is an ambiguous match even between a private method and a public one, but it *won't* throw - if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and - class Child : Base declares public void Foo(long)). - - One type in the hierarchy declared more than one method with the same name - - - Holder for reflection information generated from google/protobuf/compiler/plugin.proto - - - File descriptor for google/protobuf/compiler/plugin.proto - - - - The version number of protocol compiler. - - - - Field number for the "major" field. - - - Gets whether the "major" field is set - - - Clears the value of the "major" field - - - Field number for the "minor" field. - - - Gets whether the "minor" field is set - - - Clears the value of the "minor" field - - - Field number for the "patch" field. - - - Gets whether the "patch" field is set - - - Clears the value of the "patch" field - - - Field number for the "suffix" field. - - - - A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - be empty for mainline stable releases. - - - - Gets whether the "suffix" field is set - - - Clears the value of the "suffix" field - - - - An encoded CodeGeneratorRequest is written to the plugin's stdin. - - - - Field number for the "file_to_generate" field. - - - - The .proto files that were explicitly listed on the command-line. The - code generator should generate code only for these files. Each file's - descriptor will be included in proto_file, below. - - - - Field number for the "parameter" field. - - - - The generator parameter passed on the command-line. - - - - Gets whether the "parameter" field is set - - - Clears the value of the "parameter" field - - - Field number for the "proto_file" field. - - - - FileDescriptorProtos for all files in files_to_generate and everything - they import. The files will appear in topological order, so each file - appears before any file that imports it. - - Note: the files listed in files_to_generate will include runtime-retention - options only, but all other files will include source-retention options. - The source_file_descriptors field below is available in case you need - source-retention options for files_to_generate. - - protoc guarantees that all proto_files will be written after - the fields above, even though this is not technically guaranteed by the - protobuf wire format. This theoretically could allow a plugin to stream - in the FileDescriptorProtos and handle them one by one rather than read - the entire set into memory at once. However, as of this writing, this - is not similarly optimized on protoc's end -- it will store all fields in - memory at once before sending them to the plugin. - - Type names of fields and extensions in the FileDescriptorProto are always - fully qualified. - - - - Field number for the "source_file_descriptors" field. - - - - File descriptors with all options, including source-retention options. - These descriptors are only provided for the files listed in - files_to_generate. - - - - Field number for the "compiler_version" field. - - - - The version number of protocol compiler. - - - - - The plugin writes an encoded CodeGeneratorResponse to stdout. - - - - Field number for the "error" field. - - - - Error message. If non-empty, code generation failed. The plugin process - should exit with status code zero even if it reports an error in this way. - - This should be used to indicate errors in .proto files which prevent the - code generator from generating correct code. Errors which indicate a - problem in protoc itself -- such as the input CodeGeneratorRequest being - unparseable -- should be reported by writing a message to stderr and - exiting with a non-zero status code. - - - - Gets whether the "error" field is set - - - Clears the value of the "error" field - - - Field number for the "supported_features" field. - - - - A bitmask of supported features that the code generator supports. - This is a bitwise "or" of values from the Feature enum. - - - - Gets whether the "supported_features" field is set - - - Clears the value of the "supported_features" field - - - Field number for the "minimum_edition" field. - - - - The minimum edition this plugin supports. This will be treated as an - Edition enum, but we want to allow unknown values. It should be specified - according the edition enum value, *not* the edition number. Only takes - effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. - - - - Gets whether the "minimum_edition" field is set - - - Clears the value of the "minimum_edition" field - - - Field number for the "maximum_edition" field. - - - - The maximum edition this plugin supports. This will be treated as an - Edition enum, but we want to allow unknown values. It should be specified - according the edition enum value, *not* the edition number. Only takes - effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. - - - - Gets whether the "maximum_edition" field is set - - - Clears the value of the "maximum_edition" field - - - Field number for the "file" field. - - - Container for nested types declared in the CodeGeneratorResponse message type. - - - - Sync with code_generator.h. - - - - - Represents a single generated file. - - - - Field number for the "name" field. - - - - The file name, relative to the output directory. The name must not - contain "." or ".." components and must be relative, not be absolute (so, - the file cannot lie outside the output directory). "/" must be used as - the path separator, not "\". - - If the name is omitted, the content will be appended to the previous - file. This allows the generator to break large files into small chunks, - and allows the generated text to be streamed back to protoc so that large - files need not reside completely in memory at one time. Note that as of - this writing protoc does not optimize for this -- it will read the entire - CodeGeneratorResponse before writing files to disk. - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "insertion_point" field. - - - - If non-empty, indicates that the named file should already exist, and the - content here is to be inserted into that file at a defined insertion - point. This feature allows a code generator to extend the output - produced by another code generator. The original generator may provide - insertion points by placing special annotations in the file that look - like: - @@protoc_insertion_point(NAME) - The annotation can have arbitrary text before and after it on the line, - which allows it to be placed in a comment. NAME should be replaced with - an identifier naming the point -- this is what other generators will use - as the insertion_point. Code inserted at this point will be placed - immediately above the line containing the insertion point (thus multiple - insertions to the same point will come out in the order they were added). - The double-@ is intended to make it unlikely that the generated code - could contain things that look like insertion points by accident. - - For example, the C++ code generator places the following line in the - .pb.h files that it generates: - // @@protoc_insertion_point(namespace_scope) - This line appears within the scope of the file's package namespace, but - outside of any particular class. Another plugin can then specify the - insertion_point "namespace_scope" to generate additional classes or - other declarations that should be placed in this scope. - - Note that if the line containing the insertion point begins with - whitespace, the same whitespace will be added to every line of the - inserted text. This is useful for languages like Python, where - indentation matters. In these languages, the insertion point comment - should be indented the same amount as any inserted code will need to be - in order to work correctly in that context. - - The code generator that generates the initial file and the one which - inserts into it must both run as part of a single invocation of protoc. - Code generators are executed in the order in which they appear on the - command line. - - If |insertion_point| is present, |name| must also be present. - - - - Gets whether the "insertion_point" field is set - - - Clears the value of the "insertion_point" field - - - Field number for the "content" field. - - - - The file contents. - - - - Gets whether the "content" field is set - - - Clears the value of the "content" field - - - Field number for the "generated_code_info" field. - - - - Information describing the file content being inserted. If an insertion - point is used, this information will be appropriately offset and inserted - into the code generation metadata for the generated files. - - - - - Represents a non-generic extension definition. This API is experimental and subject to change. - - - - - Internal use. Creates a new extension with the specified field number. - - - - - Gets the field number of this extension - - - - - Represents a type-safe extension identifier used for getting and setting single extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The field value type of this extension - - - - Creates a new extension identifier with the specified field number and codec - - - - - Represents a type-safe extension identifier used for getting repeated extension values in instances. - This API is experimental and subject to change. - - The message type this field applies to - The repeated field value type of this extension - - - - Creates a new repeated extension identifier with the specified field number and codec - - - - - Provides extensions to messages while parsing. This API is experimental and subject to change. - - - - - Creates a new empty extension registry - - - - - Gets the total number of extensions in this extension registry - - - - - Returns whether the registry is readonly - - - - - Adds the specified extension to the registry - - - - - Adds the specified extensions to the registry - - - - - Clears the registry of all values - - - - - Gets whether the extension registry contains the specified extension - - - - - Copies the arrays in the registry set to the specified array at the specified index - - The array to copy to - The array index to start at - - - - Returns an enumerator to enumerate through the items in the registry - - Returns an enumerator for the extensions in this registry - - - - Removes the specified extension from the set - - The extension - true if the extension was removed, otherwise false - - - - Clones the registry into a new registry - - - - - Methods for managing s with null checking. - - Most users will not use this class directly and its API is experimental and subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if it doesn't exist in this set - - - - - Gets the value of the specified repeated extension, registering it if it doesn't exist - - - - - Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null. - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified extension - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Tries to merge a field from the coded input, returning true if the field was merged. - If the set is null or the field was not otherwise merged, this returns false. - - - - - Merges the second set into the first set, creating a new instance if first is null - - - - - Clones the set into a new set. If the set is null, this returns null - - - - - Used for keeping track of extensions in messages. - methods route to this set. - - Most users will not need to use this class directly - - The message type that extensions in this set target - - - - Gets a hash code of the set - - - - - Returns whether this set is equal to the other object - - - - - Calculates the size of this extension set - - - - - Writes the extension values in this set to the output stream - - - - - Writes the extension values in this set to the write context - - - - - Factory methods for . - - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - A codec for the given tag. - - - - Retrieves a codec suitable for a string field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bytes field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a bool field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint32 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an int64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a fixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an sfixed64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a uint64 field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a float field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a double field with the given tag. - - The tag. - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for an enum field with the given tag. - - The tag. - A conversion function from to the enum type. - A conversion function from the enum type to . - The default value. - A codec for the given tag. - - - - Retrieves a codec suitable for a message field with the given tag. - - The tag. - A parser to use for the message type. - A codec for the given tag. - - - - Retrieves a codec suitable for a group field with the given tag. - - The start group tag. - The end group tag. - A parser to use for the group message type. - A codec for given tag - - - - Creates a codec for a wrapper type of a class - which must be string or ByteString. - - - - - Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64, - Bool, Single or Double. - - - - - Helper code to create codecs for wrapper types. - - - Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it - slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place, - we can refactor later if we come up with something cleaner. - - - - - Returns a field codec which effectively wraps a value of type T in a message. - - - - - - - An encode/decode pair for a single field. This effectively encapsulates - all the information needed to read or write the field value from/to a coded - stream. - - - This class is public and has to be as it is used by generated code, but its public - API is very limited - just what the generated code needs to call directly. - - - - This never writes default values to the stream, and does not address "packedness" - in repeated fields itself, other than to know whether or not the field *should* be packed. - - - - - Merges an input stream into a value - - - - - Merges a value into a reference to another value, returning a boolean if the value was set - - - - - Returns a delegate to write a value (unconditionally) to a coded output stream. - - - - - Returns the size calculator for just a value. - - - - - Returns a delegate to read a value from a coded input stream. It is assumed that - the stream is already positioned on the appropriate tag. - - - - - Returns a delegate to merge a value from a coded input stream. - It is assumed that the stream is already positioned on the appropriate tag - - - - - Returns a delegate to merge two values together. - - - - - Returns the fixed size for an entry, or 0 if sizes vary. - - - - - Gets the tag of the codec. - - - The tag of the codec. - - - - - Gets the end tag of the codec or 0 if there is no end tag - - - The end tag of the codec. - - - - - Default value for this codec. Usually the same for every instance of the same type, but - for string/ByteString wrapper fields the codec's default value is null, whereas for - other string/ByteString fields it's "" or ByteString.Empty. - - - The default value of the codec's type. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Write a tag and the given value, *if* the value is not the default. - - - - - Reads a value of the codec type from the given . - - The input stream to read from. - The value read from the stream. - - - - Reads a value of the codec type from the given . - - The parse context to read from. - The value read. - - - - Calculates the size required to write the given value, with a tag, - if the value is not the default. - - - - - Calculates the size required to write the given value, with a tag, even - if the value is the default. - - - - - A tree representation of a FieldMask. Each leaf node in this tree represent - a field path in the FieldMask. - - For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be: - - [root] -+- foo -+- bar - | | - | +- baz - | - +- bar --- baz - - - By representing FieldMasks with this tree structure we can easily convert - a FieldMask to a canonical form, merge two FieldMasks, calculate the - intersection to two FieldMasks and traverse all fields specified by the - FieldMask in a message tree. - - - - - Creates an empty FieldMaskTree. - - - - - Creates a FieldMaskTree for a given FieldMask. - - - - - Adds a field path to the tree. In a FieldMask, every field path matches the - specified field as well as all its sub-fields. For example, a field path - "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding - a field path to the tree, redundant sub-paths will be removed. That is, - after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it - exists, which will turn the tree node for "foo.bar" to a leaf node. - Likewise, if the field path to add is a sub-path of an existing leaf node, - nothing will be changed in the tree. - - - - - Merges all field paths in a FieldMask into this tree. - - - - - Converts this tree to a FieldMask. - - - - - Gathers all field paths in a sub-tree. - - - - - Adds the intersection of this tree with the given to . - - - - - Merges all fields specified by this FieldMaskTree from to . - - - - - Merges all fields specified by a sub-tree from to . - - - - - Class containing helpful workarounds for various platform compatibility - - - - - Interface for a Protocol Buffers message, supporting - parsing from and writing to . - - - - - Internal implementation of merging data from given parse context into this message. - Users should never invoke this method directly. - - - - - Internal implementation of writing this message to a given write context. - Users should never invoke this method directly. - - - - - A message type that has a custom string format for diagnostic purposes. - - - - Calling on a generated message type normally - returns the JSON representation. If a message type implements this interface, - then the method will be called instead of the regular - JSON formatting code, but only when ToString() is called either on the message itself - or on another message which contains it. This does not affect the normal JSON formatting of - the message. - - - For example, if you create a proto message representing a GUID, the internal - representation may be a bytes field or four fixed32 fields. However, when debugging - it may be more convenient to see a result in the same format as provides. - - This interface extends to avoid it accidentally being implemented - on types other than messages, where it would not be used by anything in the framework. - - - - - Returns a string representation of this object, for diagnostic purposes. - - - This method is called when a message is formatted as part of a - call. It does not affect the JSON representation used by other than - in calls to . While it is recommended - that the result is valid JSON, this is never assumed by the Protobuf library. - - A string representation of this object, for diagnostic purposes. - - - - Generic interface for a deeply cloneable type. - - - - All generated messages implement this interface, but so do some non-message types. - Additionally, due to the type constraint on T in , - it is simpler to keep this as a separate interface. - - - The type itself, returned by the method. - - - - Creates a deep clone of this object. - - A deep clone of this object. - - - - Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class. - This interface is experiemental and is subject to change. - - - - - Gets the value of the specified extension - - - - - Gets the value of the specified repeated extension or null if the extension isn't registered in this set. - For a version of this method that never returns null, use - - - - - Gets the value of the specified repeated extension, registering it if it hasn't already been registered. - - - - - Sets the value of the specified extension - - - - - Gets whether the value of the specified extension is set - - - - - Clears the value of the specified extension - - - - - Clears the value of the specified repeated extension - - - - - Interface for a Protocol Buffers message, supporting - basic operations required for serialization. - - - - - Merges the data from the specified coded input stream with the current message. - - See the user guide for precise merge semantics. - - - - - Writes the data to the given coded output stream. - - Coded output stream to write the data to. Must not be null. - - - - Calculates the size of this message in Protocol Buffer wire format, in bytes. - - The number of bytes required to write this message - to a coded output stream. - - - - Descriptor for this message. All instances are expected to return the same descriptor, - and for generated types this will be an explicitly-implemented member, returning the - same value as the static property declared on the type. - - - - - Generic interface for a Protocol Buffers message, - where the type parameter is expected to be the same type as - the implementation class. - - The message type. - - - - Merges the given message into this one. - - See the user guide for precise merge semantics. - The message to merge with this one. Must not be null. - - - - Thrown when an attempt is made to parse invalid JSON, e.g. using - a non-string property key, or including a redundant comma. Parsing a protocol buffer - message represented in JSON using can throw both this - exception and depending on the situation. This - exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException - is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer - message. - - - - - Thrown when a protocol message being parsed is invalid in some way, - e.g. it contains a malformed varint or a negative byte length. - - - - - Creates an exception for an error condition of an invalid tag being encountered. - - - - - Reflection-based converter from messages to JSON. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON formatting working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - The JSON representation of the first 160 characters of Unicode. - Empty strings are replaced by the static constructor. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Formats the specified message as JSON. - - The message to format. - This method delegates to Format(IMessage, int) with indentationLevel = - 0. The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - Indentation level to start at. - To keep consistent indentation when embedding a message inside another JSON string, - set . E.g: var response = $@"{{ - ""data"": { Format(message, indentationLevel: 1) } - }}" - - The formatted message. - - - - Formats the specified message as JSON. - - The message to format. - The TextWriter to write the formatted message to. - This method delegates to Format(IMessage, TextWriter, int) with - indentationLevel = 0. The formatted message. - - - - Formats the specified message as JSON. When is not null, - start indenting at the specified . - - The message to format. - The TextWriter to write the formatted message to. - Indentation level to start at. - To keep consistent indentation when embedding a message inside another JSON string, - set . - - - - Converts a message to JSON for diagnostic purposes with no extra context. - - - - This differs from calling on the default JSON - formatter in its handling of . As no type registry is available - in calls, the normal way of resolving the type of - an Any message cannot be applied. Instead, a JSON property named @value - is included with the base64 data from the property of the message. - - The value returned by this method is only designed to be used for diagnostic - purposes. It may not be parsable by , and may not be parsable - by other Protocol Buffer implementations. - - The message to format for diagnostic purposes. - The diagnostic-only JSON representation of the message - - - - Determines whether or not a field value should be serialized according to the field, - its value in the message, and the settings of this formatter. - - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - Delegates to WriteValue(TextWriter, object, int) with indentationLevel = - 0. - - - - Writes a single value to the given writer as JSON. Only types understood by - Protocol Buffers can be written in this way. This method is only exposed for - advanced use cases; most users should be using - or . - - The writer to write the value to. Must not be null. - The value to write. May be null. - The current indentationLevel. Not used when is null. - - - - Central interception point for well-known type formatting. Any well-known types which - don't need special handling can fall back to WriteMessage. We avoid assuming that the - values are using the embedded well-known types, in order to allow for dynamic messages - in the future. - - - - - Writes a string (including leading and trailing double quotes) to a builder, escaping as - required. - - - Other than surrogate pair handling, this code is mostly taken from - src/google/protobuf/util/internal/json_escaping.cc. - - - - - Settings controlling JSON formatting. - - - - - Default settings, as used by - - - - - Whether fields which would otherwise not be included in the formatted data - should be formatted even when the value is not present, or has the default value. - This option only affects fields which don't support "presence" (e.g. - singular non-optional proto3 primitive fields). - - - - - The type registry used to format messages. - - - - - Whether to format enums as ints. Defaults to false. - - - - - Whether to use the original proto field names as defined in the .proto file. Defaults to - false. - - - - - Indentation string, used for formatting. Setting null disables indentation. - - - - - Creates a new object with the specified formatting of default - values and an empty type registry. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. - - - - Creates a new object with the specified formatting of default - values and type registry. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. The to use when formatting messages. - - - - Creates a new object with the specified parameters. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. The to use when formatting messages. - TypeRegistry.Empty will be used if it is null. true to format the enums as integers; false to - format enums as enum names. true to - preserve proto field names; false to convert them to lowerCamelCase. The indentation string to use for multi-line formatting. null to - disable multi-line format. - - - - Creates a new object with the specified formatting of default - values and the current settings. - - true if default values (0, empty strings etc) - should be formatted; false otherwise. - - - - Creates a new object with the specified type registry and the - current settings. - - The to use when formatting messages. - - - - Creates a new object with the specified enums formatting option and - the current settings. - - true to format the enums as integers; - false to format enums as enum names. - - - - Creates a new object with the specified field name formatting - option and the current settings. - - true to preserve proto field names; - false to convert them to lowerCamelCase. - - - - Creates a new object with the specified indentation and the current - settings. - - The string to output for each level of indentation (nesting). - The default is two spaces per level. Use null to disable indentation entirely. - A non-null value for will insert additional line-breaks - to the JSON output. Each line will contain either a single value, or braces. The default - line-break is determined by , which is "\n" on - Unix platforms, and "\r\n" on Windows. If seems to - produce empty lines, you need to pass a that uses a "\n" - newline. See . - - - - - Reflection-based converter from JSON to messages. - - - - Instances of this class are thread-safe, with no mutable state. - - - This is a simple start to get JSON parsing working. As it's reflection-based, - it's not as quick as baking calls into generated messages - but is a simpler implementation. - (This code is generally not heavily optimized.) - - - - - - Returns a formatter using the default settings. - - - - - Creates a new formatted with the given settings. - - The settings. - - - - Parses and merges the information into the given message. - - The message to merge the JSON information into. - The JSON to parse. - - - - Parses JSON read from and merges the information into the given message. - - The message to merge the JSON information into. - Reader providing the JSON to parse. - - - - Merges the given message using data from the given tokenizer. In most cases, the next - token should be a "start object" token, but wrapper types and nullity can invalidate - that assumption. This is implemented as an LL(1) recursive descent parser over the stream - of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the - tokenizer performing that validation - but not every token stream is valid "protobuf JSON". - - - - - Attempts to parse a single value from the JSON. When the value is completely invalid, - this will still throw an exception; when it's "conditionally invalid" (currently meaning - "when there's an unknown enum string value") the method returns false instead. - - - true if the value was parsed successfully; false for an ignorable parse failure. - - - - - Parses into a new message. - - The type of message to create. - The JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - The type of message to create. - Reader providing the JSON to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses into a new message. - - The JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Parses JSON read from into a new message. - - Reader providing the JSON to parse. - Descriptor of message type to parse. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new instance of the message type for the given field. - - - - - Checks that any infinite/NaN values originated from the correct text. - This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the - way that Mono parses out-of-range values as infinity. - - - - - Settings controlling JSON parsing. - - - - - Default settings, as used by . This has the same default - recursion limit as , and an empty type registry. - - - - - The maximum depth of messages to parse. Note that this limit only applies to parsing - messages, not collections - so a message within a collection within a message only counts as - depth 2, not 3. - - - - - The type registry used to parse messages. - - - - - Whether the parser should ignore unknown fields (true) or throw an exception when - they are encountered (false). - - - - - Creates a new object with the specified recursion limit. - - The maximum depth of messages to parse - - - - Creates a new object with the specified recursion limit and type registry. - - The maximum depth of messages to parse - The type registry used to parse messages - - - - Creates a new object set to either ignore unknown fields, or throw an exception - when unknown fields are encountered. - - true if unknown fields should be ignored when parsing; false to throw an exception. - - - - Creates a new object based on this one, but with the specified recursion limit. - - The new recursion limit. - - - - Creates a new object based on this one, but with the specified type registry. - - The new type registry. Must not be null. - - - - Simple but strict JSON tokenizer, rigidly following RFC 7159. - - - - This tokenizer is stateful, and only returns "useful" tokens - names, values etc. - It does not create tokens for the separator between names and values, or for the comma - between values. It validates the token stream as it goes - so callers can assume that the - tokens it produces are appropriate. For example, it would never produce "start object, end array." - - Implementation details: the base class handles single token push-back and - Not thread-safe. - - - - - Creates a tokenizer that reads from the given text reader. - - - - - Creates a tokenizer that first replays the given list of tokens, then continues reading - from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back - on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was - created for the sake of Any parsing. - - - - - Returns the depth of the stack, purely in objects (not collections). - Informally, this is the number of remaining unclosed '{' characters we have. - - - - - Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream, - after which point Next() should not be called again. - - This implementation provides single-token buffering, and calls if there is no buffered token. - The next token in the stream. This is never null. - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Returns the next JSON token in the stream, when requested by the base class. (The method delegates - to this if it doesn't have a buffered token.) - - This method is called after an EndDocument token has been returned - The input text does not comply with RFC 7159 - - - - Skips the value we're about to read. This must only be called immediately after reading a property name. - If the value is an object or an array, the complete object/array is skipped. - - - - - Tokenizer which first exhausts a list of tokens, then consults another tokenizer. - - - - - Tokenizer which does all the *real* work of parsing JSON. - - - - - This method essentially just loops through characters skipping whitespace, validating and - changing state (e.g. from ObjectBeforeColon to ObjectAfterColon) - until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point - it returns the token. Although the method is large, it would be relatively hard to break down further... most - of it is the large switch statement, which sometimes returns and sometimes doesn't. - - - - - Reads a string token. It is assumed that the opening " has already been read. - - - - - Reads an escaped character. It is assumed that the leading backslash has already been read. - - - - - Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read. - - - - - Consumes a text-only literal, throwing an exception if the read text doesn't match it. - It is assumed that the first letter of the literal has already been read. - - - - - Copies an integer into a StringBuilder. - - The builder to read the number into - The character following the integer, or -1 for end-of-text. - - - - Copies the fractional part of an integer into a StringBuilder, assuming reader is positioned after a period. - - The builder to read the number into - The character following the fractional part, or -1 for end-of-text. - - - - Copies the exponent part of a number into a StringBuilder, with an assumption that the reader is already positioned after the "e". - - The builder to read the number into - The character following the exponent, or -1 for end-of-text. - - - - Copies a sequence of digits into a StringBuilder. - - The builder to read the number into - The number of digits appended to the builder - The character following the digits, or -1 for end-of-text. - - - - Validates that we're in a valid state to read a value (using the given error prefix if necessary) - and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty. - - - - - Pops the top-most container, and sets the state to the appropriate one for the end of a value - in the parent container. - - - - - Possible states of the tokenizer. - - - This is a flags enum purely so we can simply and efficiently represent a set of valid states - for checking. - - Each is documented with an example, - where ^ represents the current position within the text stream. The examples all use string values, - but could be any value, including nested objects/arrays. - The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects). - Any additional notional state of "AfterValue" indicates that a value has been completed, at which - point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue. - - - These states were derived manually by reading RFC 7159 carefully. - - - - - - ^ { "foo": "bar" } - Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue" - - - - - { "foo": "bar" } ^ - After the value in a document. Next states: ReaderExhausted - - - - - { "foo": "bar" } ^ (and already read to the end of the reader) - Terminal state. - - - - - { ^ "foo": "bar" } - Before the *first* property in an object. - Next states: - "AfterValue" (empty object) - ObjectBeforeColon (read a name) - - - - - { "foo" ^ : "bar", "x": "y" } - Next state: ObjectAfterColon - - - - - { "foo" : ^ "bar", "x": "y" } - Before any property other than the first in an object. - (Equivalently: after any property in an object) - Next states: - "AfterValue" (value is simple) - ObjectStart (value is object) - ArrayStart (value is array) - - - - - { "foo" : "bar" ^ , "x" : "y" } - At the end of a property, so expecting either a comma or end-of-object - Next states: ObjectAfterComma or "AfterValue" - - - - - { "foo":"bar", ^ "x":"y" } - Read the comma after the previous property, so expecting another property. - This is like ObjectStart, but closing brace isn't valid here - Next state: ObjectBeforeColon. - - - - - [ ^ "foo", "bar" ] - Before the *first* value in an array. - Next states: - "AfterValue" (read a value) - "AfterValue" (end of array; will pop stack) - - - - - [ "foo" ^ , "bar" ] - After any value in an array, so expecting either a comma or end-of-array - Next states: ArrayAfterComma or "AfterValue" - - - - - [ "foo", ^ "bar" ] - After a comma in an array, so there *must* be another value (simple or complex). - Next states: "AfterValue" (simple value), StartObject, StartArray - - - - - Wrapper around a text reader allowing small amounts of buffering and location handling. - - - - - The buffered next character, if we have one, or -1 if there is no buffered character. - - - - - Returns the next character in the stream, or -1 if we have reached the end of the stream. - - - - - Reads the next character from the underlying reader, throwing an - with the specified message if there are no more characters available. - - - - - Creates a new exception appropriate for the current state of the reader. - - - - - Provide a cached reusable instance of stringbuilder per thread. - Copied from https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/System/Text/StringBuilderCache.cs - - - - Get a StringBuilder for the specified capacity. - If a StringBuilder of an appropriate size is cached, it will be returned and the cache emptied. - - - Place the specified builder in the cache if it is not too big. - - - ToString() the stringbuilder, Release it to the cache, and return the resulting string. - - - - Stream implementation which proxies another stream, only allowing a certain amount - of data to be read. Note that this is only used to read delimited streams, so it - doesn't attempt to implement everything. - - - - - Extension methods on and . - - - - - Merges data from the given byte array into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given byte array slice into an existing message. - - The message to merge the data into. - The data containing the slice to merge, which must be protobuf-encoded binary data. - The offset of the slice to merge. - The length of the slice to merge. - - - - Merges data from the given byte string into an existing message. - - The message to merge the data into. - The data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given stream into an existing message. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given span into an existing message. - - The message to merge the data into. - Span containing the data to merge, which must be protobuf-encoded binary data. - - - - Merges data from the given sequence into an existing message. - - The message to merge the data into. - Sequence from the specified data to merge, which must be protobuf-encoded binary data. - - - - Merges length-delimited data from the given stream into an existing message. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The message to merge the data into. - Stream containing the data to merge, which must be protobuf-encoded binary data. - - - - Converts the given message into a byte array in protobuf encoding. - - The message to convert. - The message data as a byte array. - - - - Writes the given message data to the given stream in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the length and then data of the given message to a stream. - - The message to write. - The output stream to write to. - - - - Converts the given message into a byte string in protobuf encoding. - - The message to convert. - The message data as a byte string. - - - - Writes the given message data to the given buffer writer in protobuf encoding. - - The message to write to the stream. - The stream to write to. - - - - Writes the given message data to the given span in protobuf encoding. - The size of the destination span needs to fit the serialized size - of the message exactly, otherwise an exception is thrown. - - The message to write to the stream. - The span to write to. Size must match size of the message exactly. - - - - Checks if all required fields in a message have values set. For proto3 messages, this returns true. - - - - - A general message parser, typically used by reflection-based code as all the methods - return simple . - - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a message from the given span. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - This method always uses the default JSON parser; it is not affected by . - To ignore unknown fields when parsing JSON, create a using a - with set to true and call directly. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Note that this does not affect the behavior of - at all. To ignore unknown fields when parsing JSON, create a using a - with set to true and call directly. - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - A parser for a specific message type. - - -

- This delegates most behavior to the - implementation within the original type, but - provides convenient overloads to parse from a variety of sources. -

-

- Most applications will never need to create their own instances of this type; - instead, use the static Parser property of a generated message type to obtain a - parser for that type. -

-
- The type of message to be parsed. -
- - - Creates a new parser. - - - The factory method is effectively an optimization over using a generic constraint - to require a parameterless constructor: delegates are significantly faster to execute. - - Function to invoke when a new, empty message is required. - - - - Creates a template instance ready for population. - - An empty message. - - - - Parses a message from a byte array. - - The byte array containing the message. Must not be null. - The newly parsed message. - - - - Parses a message from a byte array slice. - - The byte array containing the message. Must not be null. - The offset of the slice to parse. - The length of the slice to parse. - The newly parsed message. - - - - Parses a message from the given byte string. - - The data to parse. - The parsed message. - - - - Parses a message from the given stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given sequence. - - The data to parse. - The parsed message. - - - - Parses a message from the given span. - - The data to parse. - The parsed message. - - - - Parses a length-delimited message from the given stream. - - - The stream is expected to contain a length and then the data. Only the amount of data - specified by the length will be consumed. - - The stream to parse. - The parsed message. - - - - Parses a message from the given coded input stream. - - The stream to parse. - The parsed message. - - - - Parses a message from the given JSON. - - The JSON to parse. - The parsed message. - The JSON does not comply with RFC 7159 - The JSON does not represent a Protocol Buffers message correctly - - - - Creates a new message parser which optionally discards unknown fields when parsing. - - Whether or not to discard unknown fields when parsing. - A newly configured message parser. - - - - Creates a new message parser which registers extensions from the specified registry upon creating the message instance - - The extensions to register - A newly configured message parser. - - - - Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the - extensionByNumber table in ExtensionRegistry. - - - - - An opaque struct that represents the current parsing state and is passed along - as the parsing proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Initialize a , building all from defaults and - the given . - - - - - Initialize a using existing , e.g. from . - - - - - Creates a ParseContext instance from CodedInputStream. - WARNING: internally this copies the CodedInputStream's state, so after done with the ParseContext, - the CodedInputStream's state needs to be updated. - - - - - Returns the last tag read, or 0 if no tags have been read or we've read beyond - the end of the input. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Reads a field tag, returning the tag of 0 for "end of input". - - - If this method returns 0, it doesn't necessarily mean the end of all - the data in this CodedInputReader; it may be the end of the logical input - for an embedded message, for example. - - The next field tag, or 0 for end of input. (0 is never a valid tag.) - - - - Reads a double field from the input. - - - - - Reads a float field from the input. - - - - - Reads a uint64 field from the input. - - - - - Reads an int64 field from the input. - - - - - Reads an int32 field from the input. - - - - - Reads a fixed64 field from the input. - - - - - Reads a fixed32 field from the input. - - - - - Reads a bool field from the input. - - - - - Reads a string field from the input. - - - - - Reads an embedded message field value from the input. - - - - - Reads an embedded group field from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a uint32 field value from the input. - - - - - Reads an enum field value from the input. - - - - - Reads an sfixed32 field value from the input. - - - - - Reads an sfixed64 field value from the input. - - - - - Reads an sint32 field value from the input. - - - - - Reads an sint64 field value from the input. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - The position within the current buffer (i.e. the next byte to read) - - - - - Size of the current buffer - - - - - If we are currently inside a length-delimited block, this is the number of - bytes in the buffer that are still available once we leave the delimited block. - - - - - The absolute position of the end of the current length-delimited block (including totalBytesRetired) - - - - - The total number of consumed before the start of the current buffer. The - total bytes read up to the current position can be computed as - totalBytesRetired + bufferPos. - - - - - The last tag we read. 0 indicates we've read to the end of the stream - (or haven't read anything yet). - - - - - The next tag, used to store the value read by PeekTag. - - - - - Internal-only property; when set to true, unknown fields will be discarded while parsing. - - - - - Internal-only property; provides extension identifiers to compatible messages while parsing. - - - - - Primitives for parsing protobuf wire format. - - - - - Reads a length for length-delimited data. - - - This is internally just reading a varint, but this method exists - to make the calling code clearer. - - - - - Parses the next tag. - If the end of logical stream was reached, an invalid tag of 0 is returned. - - - - - Peeks at the next tag in the stream. If it matches , - the tag is consumed and the method returns true; otherwise, the - stream is left in the original position and the method returns false. - - - - - Peeks at the next field tag. This is like calling , but the - tag is not consumed. (So a subsequent call to will return the - same value.) - - - - - Parses a raw varint. - - - - - Parses a raw Varint. If larger than 32 bits, discard the upper bits. - This method is optimised for the case where we've got lots of data in the buffer. - That means we can check the size just once, then just read directly from the buffer - without constant rechecking of the buffer length. - - - - - Parses a 32-bit little-endian integer. - - - - - Parses a 64-bit little-endian integer. - - - - - Parses a double value. - - - - - Parses a float value. - - - - - Reads a fixed size of bytes from the input. - - - the end of the stream or the current limit was reached - - - - - Reads and discards bytes. - - the end of the stream - or the current limit was reached - - - - Reads a string field value from the input. - - - - - Reads a bytes field value from the input. - - - - - Reads a UTF-8 string from the next "length" bytes. - - - the end of the stream or the current limit was reached - - - - - Reads a string assuming that it is spread across multiple spans in a . - - - - - Validates that the specified size doesn't exceed the current limit. If it does then remaining bytes - are skipped and an error is thrown. - - - - - Reads a varint from the input one byte at a time, so that it does not - read any bytes after the end of the varint. If you simply wrapped the - stream in a CodedInputStream and used ReadRawVarint32(Stream) - then you would probably end up reading past the end of the varint since - CodedInputStream buffers its input. - - - - - - - Decode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 32 bits to be varint encoded, thus always taking - 5 bytes on the wire.) - - - - - Decode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Checks whether there is known data available of the specified size remaining to parse. - When parsing from a Stream this can return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Checks whether there is known data available of the specified size remaining to parse - in the underlying data source. - When parsing from a Stream this will return false because we have no knowledge of the amount - of data remaining in the stream until it is read. - - - - - Read raw bytes of the specified length into a span. The amount of data available and the current limit should - be checked before calling this method. - - - - - Reading and skipping messages / groups - - - - - Skip a group. - - - - - Verifies that the last call to ReadTag() returned tag 0 - in other words, - we've reached the end of the stream when we expected to. - - The - tag read was not the one specified - - - - Fast parsing primitives for wrapper types - - - - - Helper methods for throwing exceptions when preconditions are not met. - - - This class is used internally and by generated code; it is not particularly - expected to be used from application code, although nothing prevents it - from being used that way. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - - - Throws an ArgumentNullException if the given value is null, otherwise - return the value to the caller. - - - This is equivalent to but without the type parameter - constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull - with a value type - but it gets in the way if either you want to use it with a nullable - value type, or you want to use it with an unconstrained type parameter. - - - - - Container for a set of custom options specified within a message, field etc. - - - - This type is publicly immutable, but internally mutable. It is only populated - by the descriptor parsing code - by the time any user code is able to see an instance, - it will be fully initialized. - - - If an option is requested using the incorrect method, an answer may still be returned: all - of the numeric types are represented internally using 64-bit integers, for example. It is up to - the caller to ensure that they make the appropriate method call for the option they're interested in. - Note that enum options are simply stored as integers, so the value should be fetched using - and then cast appropriately. - - - Repeated options are currently not supported. Asking for a single value of an option - which was actually repeated will return the last value, except for message types where - all the set values are merged together. - - - - - - Retrieves a Boolean value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a fixed-length representation. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 32-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a signed 64-bit integer value for the specified option field, - assuming a zigzag encoding. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 32-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves an unsigned 64-bit integer value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 32-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a 64-bit floating point value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a string value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a bytes value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - - Retrieves a message value for the specified option field. - - The field to fetch the value for. - The output variable to populate. - true if a suitable value for the field was found; false otherwise. - - - Holder for reflection information generated from google/protobuf/descriptor.proto - - - File descriptor for google/protobuf/descriptor.proto - - - - The full set of known editions. - - - - - A placeholder for an unknown edition value. - - - - - A placeholder edition for specifying default behaviors *before* a feature - was first introduced. This is effectively an "infinite past". - - - - - Legacy syntax "editions". These pre-date editions, but behave much like - distinct editions. These can't be used to specify the edition of proto - files, but feature definitions must supply proto2/proto3 defaults for - backwards compatibility. - - - - - Editions that have been released. The specific values are arbitrary and - should not be depended on, but they will always be time-ordered for easy - comparison. - - - - - Placeholder editions for testing feature resolution. These should not be - used or relied on outside of tests. - - - - - Placeholder for specifying unbounded edition support. This should only - ever be used by plugins that can expect to never require any changes to - support a new edition. - - - - - The protocol compiler can output a FileDescriptorSet containing the .proto - files it parses. - - - - Field number for the "file" field. - - - - Describes a complete .proto file. - - - - Field number for the "name" field. - - - - file name, relative to root of source tree - - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "package" field. - - - - e.g. "foo", "foo.bar", etc. - - - - Gets whether the "package" field is set - - - Clears the value of the "package" field - - - Field number for the "dependency" field. - - - - Names of files imported by this file. - - - - Field number for the "public_dependency" field. - - - - Indexes of the public imported files in the dependency list above. - - - - Field number for the "weak_dependency" field. - - - - Indexes of the weak imported files in the dependency list. - For Google-internal migration only. Do not use. - - - - Field number for the "message_type" field. - - - - All top-level definitions in this file. - - - - Field number for the "enum_type" field. - - - Field number for the "service" field. - - - Field number for the "extension" field. - - - Field number for the "options" field. - - - Field number for the "source_code_info" field. - - - - This field contains optional information about the original source code. - You may safely remove this entire field without harming runtime - functionality of the descriptors -- the information is needed only by - development tools. - - - - Field number for the "syntax" field. - - - - The syntax of the proto file. - The supported values are "proto2", "proto3", and "editions". - - If `edition` is present, this value must be "editions". - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Gets whether the "syntax" field is set - - - Clears the value of the "syntax" field - - - Field number for the "edition" field. - - - - The edition of the proto file. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - - Describes a message type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "field" field. - - - Field number for the "extension" field. - - - Field number for the "nested_type" field. - - - Field number for the "enum_type" field. - - - Field number for the "extension_range" field. - - - Field number for the "oneof_decl" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - Field number for the "reserved_name" field. - - - - Reserved field names, which may not be used by fields in the same message. - A given name may only be reserved once. - - - - Container for nested types declared in the DescriptorProto message type. - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "options" field. - - - - Range of reserved tag numbers. Reserved tag numbers may not be used by - fields or extension ranges in the same message. Reserved ranges may - not overlap. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Exclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "declaration" field. - - - - For external users: DO NOT USE. We are in the process of open sourcing - extension declaration and executing internal cleanups before it can be - used externally. - - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - - - - Field number for the "verification" field. - - - - The verification state of the range. - TODO: flip the default to DECLARATION once all empty ranges - are marked as UNVERIFIED. - - - - Gets whether the "verification" field is set - - - Clears the value of the "verification" field - - - Container for nested types declared in the ExtensionRangeOptions message type. - - - - The verification state of the extension range. - - - - - All the extensions of the range must be declared. - - - - Field number for the "number" field. - - - - The extension number declared within the extension range. - - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "full_name" field. - - - - The fully-qualified name of the extension field. There must be a leading - dot in front of the full name. - - - - Gets whether the "full_name" field is set - - - Clears the value of the "full_name" field - - - Field number for the "type" field. - - - - The fully-qualified type name of the extension field. Unlike - Metadata.type, Declaration.type must have a leading dot for messages - and enums. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "reserved" field. - - - - If true, indicates that the number is reserved in the extension range, - and any extension field with the number will fail to compile. Set this - when a declared extension field is deleted. - - - - Gets whether the "reserved" field is set - - - Clears the value of the "reserved" field - - - Field number for the "repeated" field. - - - - If true, indicates that the extension must be defined as repeated. - Otherwise the extension must be defined as optional. - - - - Gets whether the "repeated" field is set - - - Clears the value of the "repeated" field - - - - Describes a field within a message. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "label" field. - - - Gets whether the "label" field is set - - - Clears the value of the "label" field - - - Field number for the "type" field. - - - - If type_name is set, this need not be set. If both this and type_name - are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - - - - Gets whether the "type" field is set - - - Clears the value of the "type" field - - - Field number for the "type_name" field. - - - - For message and enum types, this is the name of the type. If the name - starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - rules are used to find the type (i.e. first the nested types within this - message are searched, then within the parent, on up to the root - namespace). - - - - Gets whether the "type_name" field is set - - - Clears the value of the "type_name" field - - - Field number for the "extendee" field. - - - - For extensions, this is the name of the type being extended. It is - resolved in the same manner as type_name. - - - - Gets whether the "extendee" field is set - - - Clears the value of the "extendee" field - - - Field number for the "default_value" field. - - - - For numeric types, contains the original text representation of the value. - For booleans, "true" or "false". - For strings, contains the default text contents (not escaped in any way). - For bytes, contains the C escaped value. All bytes >= 128 are escaped. - - - - Gets whether the "default_value" field is set - - - Clears the value of the "default_value" field - - - Field number for the "oneof_index" field. - - - - If set, gives the index of a oneof in the containing type's oneof_decl - list. This field is a member of that oneof. - - - - Gets whether the "oneof_index" field is set - - - Clears the value of the "oneof_index" field - - - Field number for the "json_name" field. - - - - JSON name of this field. The value is set by protocol compiler. If the - user has set a "json_name" option on this field, that option's value - will be used. Otherwise, it's deduced from the field's name by converting - it to camelCase. - - - - Gets whether the "json_name" field is set - - - Clears the value of the "json_name" field - - - Field number for the "options" field. - - - Field number for the "proto3_optional" field. - - - - If true, this is a proto3 "optional". When a proto3 field is optional, it - tracks presence regardless of field type. - - When proto3_optional is true, this field must belong to a oneof to signal - to old proto3 clients that presence is tracked for this field. This oneof - is known as a "synthetic" oneof, and this field must be its sole member - (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs - exist in the descriptor only, and do not generate any API. Synthetic oneofs - must be ordered after all "real" oneofs. - - For message fields, proto3_optional doesn't create any semantic change, - since non-repeated message fields always track presence. However it still - indicates the semantic detail of whether the user wrote "optional" or not. - This can be useful for round-tripping the .proto file. For consistency we - give message fields a synthetic oneof also, even though it is not required - to track presence. This is especially important because the parser can't - tell if a field is a message or an enum, so it must always create a - synthetic oneof. - - Proto2 optional fields do not set this flag, because they already indicate - optional with `LABEL_OPTIONAL`. - - - - Gets whether the "proto3_optional" field is set - - - Clears the value of the "proto3_optional" field - - - Container for nested types declared in the FieldDescriptorProto message type. - - - - 0 is reserved for errors. - Order is weird for historical reasons. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - negative values are likely. - - - - - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - negative values are likely. - - - - - Tag-delimited aggregate. - Group type is deprecated and not supported after google.protobuf. However, Proto3 - implementations should still be able to parse the group wire format and - treat group fields as unknown fields. In Editions, the group wire format - can be enabled via the `message_encoding` feature. - - - - - Length-delimited aggregate. - - - - - New in version 2. - - - - - Uses ZigZag encoding. - - - - - Uses ZigZag encoding. - - - - - 0 is reserved for errors - - - - - The required label is only allowed in google.protobuf. In proto3 and Editions - it's explicitly prohibited. In Editions, the `field_presence` feature - can be used to get this behavior. - - - - - Describes a oneof. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "options" field. - - - - Describes an enum type. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "value" field. - - - Field number for the "options" field. - - - Field number for the "reserved_range" field. - - - - Range of reserved numeric values. Reserved numeric values may not be used - by enum values in the same enum declaration. Reserved ranges may not - overlap. - - - - Field number for the "reserved_name" field. - - - - Reserved enum value names, which may not be reused. A given name may only - be reserved once. - - - - Container for nested types declared in the EnumDescriptorProto message type. - - - - Range of reserved numeric values. Reserved values may not be used by - entries in the same enum. Reserved ranges may not overlap. - - Note that this is distinct from DescriptorProto.ReservedRange in that it - is inclusive such that it can appropriately represent the entire int32 - domain. - - - - Field number for the "start" field. - - - - Inclusive. - - - - Gets whether the "start" field is set - - - Clears the value of the "start" field - - - Field number for the "end" field. - - - - Inclusive. - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - - Describes a value within an enum. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "number" field. - - - Gets whether the "number" field is set - - - Clears the value of the "number" field - - - Field number for the "options" field. - - - - Describes a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "method" field. - - - Field number for the "options" field. - - - - Describes a method of a service. - - - - Field number for the "name" field. - - - Gets whether the "name" field is set - - - Clears the value of the "name" field - - - Field number for the "input_type" field. - - - - Input and output type names. These are resolved in the same way as - FieldDescriptorProto.type_name, but must refer to a message type. - - - - Gets whether the "input_type" field is set - - - Clears the value of the "input_type" field - - - Field number for the "output_type" field. - - - Gets whether the "output_type" field is set - - - Clears the value of the "output_type" field - - - Field number for the "options" field. - - - Field number for the "client_streaming" field. - - - - Identifies if client streams multiple client messages - - - - Gets whether the "client_streaming" field is set - - - Clears the value of the "client_streaming" field - - - Field number for the "server_streaming" field. - - - - Identifies if server streams multiple server messages - - - - Gets whether the "server_streaming" field is set - - - Clears the value of the "server_streaming" field - - - Field number for the "java_package" field. - - - - Sets the Java package where classes generated from this .proto will be - placed. By default, the proto package is used, but this is often - inappropriate because proto packages do not normally start with backwards - domain names. - - - - Gets whether the "java_package" field is set - - - Clears the value of the "java_package" field - - - Field number for the "java_outer_classname" field. - - - - Controls the name of the wrapper Java class generated for the .proto file. - That class will always contain the .proto file's getDescriptor() method as - well as any top-level extensions defined in the .proto file. - If java_multiple_files is disabled, then all the other classes from the - .proto file will be nested inside the single wrapper outer class. - - - - Gets whether the "java_outer_classname" field is set - - - Clears the value of the "java_outer_classname" field - - - Field number for the "java_multiple_files" field. - - - - If enabled, then the Java code generator will generate a separate .java - file for each top-level message, enum, and service defined in the .proto - file. Thus, these types will *not* be nested inside the wrapper class - named by java_outer_classname. However, the wrapper class will still be - generated to contain the file's getDescriptor() method as well as any - top-level extensions defined in the file. - - - - Gets whether the "java_multiple_files" field is set - - - Clears the value of the "java_multiple_files" field - - - Field number for the "java_generate_equals_and_hash" field. - - - - This option does nothing. - - - - Gets whether the "java_generate_equals_and_hash" field is set - - - Clears the value of the "java_generate_equals_and_hash" field - - - Field number for the "java_string_check_utf8" field. - - - - A proto2 file can set this to true to opt in to UTF-8 checking for Java, - which will throw an exception if invalid UTF-8 is parsed from the wire or - assigned to a string field. - - TODO: clarify exactly what kinds of field types this option - applies to, and update these docs accordingly. - - Proto3 files already perform these checks. Setting the option explicitly to - false has no effect: it cannot be used to opt proto3 files out of UTF-8 - checks. - - - - Gets whether the "java_string_check_utf8" field is set - - - Clears the value of the "java_string_check_utf8" field - - - Field number for the "optimize_for" field. - - - Gets whether the "optimize_for" field is set - - - Clears the value of the "optimize_for" field - - - Field number for the "go_package" field. - - - - Sets the Go package where structs generated from this .proto will be - placed. If omitted, the Go package will be derived from the following: - - The basename of the package import path, if provided. - - Otherwise, the package statement in the .proto file, if present. - - Otherwise, the basename of the .proto file, without extension. - - - - Gets whether the "go_package" field is set - - - Clears the value of the "go_package" field - - - Field number for the "cc_generic_services" field. - - - - Should generic services be generated in each language? "Generic" services - are not specific to any particular RPC system. They are generated by the - main code generators in each language (without additional plugins). - Generic services were the only kind of service generation supported by - early versions of google.protobuf. - - Generic services are now considered deprecated in favor of using plugins - that generate code specific to your particular RPC system. Therefore, - these default to false. Old code which depends on generic services should - explicitly set them to true. - - - - Gets whether the "cc_generic_services" field is set - - - Clears the value of the "cc_generic_services" field - - - Field number for the "java_generic_services" field. - - - Gets whether the "java_generic_services" field is set - - - Clears the value of the "java_generic_services" field - - - Field number for the "py_generic_services" field. - - - Gets whether the "py_generic_services" field is set - - - Clears the value of the "py_generic_services" field - - - Field number for the "deprecated" field. - - - - Is this file deprecated? - Depending on the target platform, this can emit Deprecated annotations - for everything in the file, or it will be completely ignored; in the very - least, this is a formalization for deprecating files. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "cc_enable_arenas" field. - - - - Enables the use of arenas for the proto messages in this file. This applies - only to generated classes for C++. - - - - Gets whether the "cc_enable_arenas" field is set - - - Clears the value of the "cc_enable_arenas" field - - - Field number for the "objc_class_prefix" field. - - - - Sets the objective c class prefix which is prepended to all objective c - generated classes from this .proto. There is no default. - - - - Gets whether the "objc_class_prefix" field is set - - - Clears the value of the "objc_class_prefix" field - - - Field number for the "csharp_namespace" field. - - - - Namespace for generated classes; defaults to the package. - - - - Gets whether the "csharp_namespace" field is set - - - Clears the value of the "csharp_namespace" field - - - Field number for the "swift_prefix" field. - - - - By default Swift generators will take the proto package and CamelCase it - replacing '.' with underscore and use that to prefix the types/symbols - defined. When this options is provided, they will use this value instead - to prefix the types/symbols defined. - - - - Gets whether the "swift_prefix" field is set - - - Clears the value of the "swift_prefix" field - - - Field number for the "php_class_prefix" field. - - - - Sets the php class prefix which is prepended to all php generated classes - from this .proto. Default is empty. - - - - Gets whether the "php_class_prefix" field is set - - - Clears the value of the "php_class_prefix" field - - - Field number for the "php_namespace" field. - - - - Use this option to change the namespace of php generated classes. Default - is empty. When this option is empty, the package name will be used for - determining the namespace. - - - - Gets whether the "php_namespace" field is set - - - Clears the value of the "php_namespace" field - - - Field number for the "php_metadata_namespace" field. - - - - Use this option to change the namespace of php generated metadata classes. - Default is empty. When this option is empty, the proto file name will be - used for determining the namespace. - - - - Gets whether the "php_metadata_namespace" field is set - - - Clears the value of the "php_metadata_namespace" field - - - Field number for the "ruby_package" field. - - - - Use this option to change the package of ruby generated classes. Default - is empty. When this option is not set, the package name will be used for - determining the ruby package. - - - - Gets whether the "ruby_package" field is set - - - Clears the value of the "ruby_package" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. - See the documentation for the "Options" section above. - - - - Container for nested types declared in the FileOptions message type. - - - - Generated classes can be optimized for speed or code size. - - - - - Generate complete code for parsing, serialization, - - - - - etc. - - - - - Generate code using MessageLite and the lite runtime. - - - - Field number for the "message_set_wire_format" field. - - - - Set true to use the old proto1 MessageSet wire format for extensions. - This is provided for backwards-compatibility with the MessageSet wire - format. You should not use this for any other reason: It's less - efficient, has fewer features, and is more complicated. - - The message must be defined exactly as follows: - message Foo { - option message_set_wire_format = true; - extensions 4 to max; - } - Note that the message cannot have any defined fields; MessageSets only - have extensions. - - All extensions of your type must be singular messages; e.g. they cannot - be int32s, enums, or repeated messages. - - Because this is an option, the above two restrictions are not enforced by - the protocol compiler. - - - - Gets whether the "message_set_wire_format" field is set - - - Clears the value of the "message_set_wire_format" field - - - Field number for the "no_standard_descriptor_accessor" field. - - - - Disables the generation of the standard "descriptor()" accessor, which can - conflict with a field of the same name. This is meant to make migration - from proto1 easier; new code should avoid fields named "descriptor". - - - - Gets whether the "no_standard_descriptor_accessor" field is set - - - Clears the value of the "no_standard_descriptor_accessor" field - - - Field number for the "deprecated" field. - - - - Is this message deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the message, or it will be completely ignored; in the very least, - this is a formalization for deprecating messages. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "map_entry" field. - - - - Whether the message is an automatically generated map entry type for the - maps field. - - For maps fields: - map<KeyType, ValueType> map_field = 1; - The parsed descriptor looks like: - message MapFieldEntry { - option map_entry = true; - optional KeyType key = 1; - optional ValueType value = 2; - } - repeated MapFieldEntry map_field = 1; - - Implementations may choose not to generate the map_entry=true message, but - use a native map in the target language to hold the keys and values. - The reflection APIs in such implementations still need to work as - if the field is a repeated message field. - - NOTE: Do not set the option in .proto files. Always use the maps syntax - instead. The option should only be implicitly set by the proto compiler - parser. - - - - Gets whether the "map_entry" field is set - - - Clears the value of the "map_entry" field - - - Field number for the "deprecated_legacy_json_field_conflicts" field. - - - - Enable the legacy handling of JSON field name conflicts. This lowercases - and strips underscored from the fields before comparison in proto3 only. - The new behavior takes `json_name` into account and applies to proto2 as - well. - - This should only be used as a temporary measure against broken builds due - to the change in behavior for JSON field name conflicts. - - TODO This is legacy behavior we plan to remove once downstream - teams have had time to migrate. - - - - Gets whether the "deprecated_legacy_json_field_conflicts" field is set - - - Clears the value of the "deprecated_legacy_json_field_conflicts" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "ctype" field. - - - - NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead. - The ctype option instructs the C++ code generator to use a different - representation of the field than it normally would. See the specific - options below. This option is only implemented to support use of - [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of - type "bytes" in the open source release. - TODO: make ctype actually deprecated. - - - - Gets whether the "ctype" field is set - - - Clears the value of the "ctype" field - - - Field number for the "packed" field. - - - - The packed option can be enabled for repeated primitive fields to enable - a more efficient representation on the wire. Rather than repeatedly - writing the tag and type for each element, the entire array is encoded as - a single length-delimited blob. In proto3, only explicit setting it to - false will avoid using packed encoding. This option is prohibited in - Editions, but the `repeated_field_encoding` feature can be used to control - the behavior. - - - - Gets whether the "packed" field is set - - - Clears the value of the "packed" field - - - Field number for the "jstype" field. - - - - The jstype option determines the JavaScript type used for values of the - field. The option is permitted only for 64 bit integral and fixed types - (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - is represented as JavaScript string, which avoids loss of precision that - can happen when a large value is converted to a floating point JavaScript. - Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - use the JavaScript "number" type. The behavior of the default option - JS_NORMAL is implementation dependent. - - This option is an enum to permit additional types to be added, e.g. - goog.math.Integer. - - - - Gets whether the "jstype" field is set - - - Clears the value of the "jstype" field - - - Field number for the "lazy" field. - - - - Should this field be parsed lazily? Lazy applies only to message-type - fields. It means that when the outer message is initially parsed, the - inner message's contents will not be parsed but instead stored in encoded - form. The inner message will actually be parsed when it is first accessed. - - This is only a hint. Implementations are free to choose whether to use - eager or lazy parsing regardless of the value of this option. However, - setting this option true suggests that the protocol author believes that - using lazy parsing on this field is worth the additional bookkeeping - overhead typically needed to implement it. - - This option does not affect the public interface of any generated code; - all method signatures remain the same. Furthermore, thread-safety of the - interface is not affected by this option; const methods remain safe to - call from multiple threads concurrently, while non-const methods continue - to require exclusive access. - - Note that lazy message fields are still eagerly verified to check - ill-formed wireformat or missing required fields. Calling IsInitialized() - on the outer message would fail if the inner message has missing required - fields. Failed verification would result in parsing failure (except when - uninitialized messages are acceptable). - - - - Gets whether the "lazy" field is set - - - Clears the value of the "lazy" field - - - Field number for the "unverified_lazy" field. - - - - unverified_lazy does no correctness checks on the byte stream. This should - only be used where lazy with verification is prohibitive for performance - reasons. - - - - Gets whether the "unverified_lazy" field is set - - - Clears the value of the "unverified_lazy" field - - - Field number for the "deprecated" field. - - - - Is this field deprecated? - Depending on the target platform, this can emit Deprecated annotations - for accessors, or it will be completely ignored; in the very least, this - is a formalization for deprecating fields. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "weak" field. - - - - For Google-internal migration only. Do not use. - - - - Gets whether the "weak" field is set - - - Clears the value of the "weak" field - - - Field number for the "debug_redact" field. - - - - Indicate that the field value should not be printed out when using debug - formats, e.g. when the field contains sensitive credentials. - - - - Gets whether the "debug_redact" field is set - - - Clears the value of the "debug_redact" field - - - Field number for the "retention" field. - - - Gets whether the "retention" field is set - - - Clears the value of the "retention" field - - - Field number for the "targets" field. - - - Field number for the "edition_defaults" field. - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "feature_support" field. - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the FieldOptions message type. - - - - Default mode. - - - - - The option [ctype=CORD] may be applied to a non-repeated field of type - "bytes". It indicates that in C++, the data should be stored in a Cord - instead of a string. For very large strings, this may reduce memory - fragmentation. It may also allow better performance when parsing from a - Cord, or when parsing with aliasing enabled, as the parsed Cord may then - alias the original buffer. - - - - - Use the default type. - - - - - Use JavaScript strings. - - - - - Use JavaScript numbers. - - - - - If set to RETENTION_SOURCE, the option will be omitted from the binary. - - - - - This indicates the types of entities that the field may apply to when used - as an option. If it is unset, then the field may be freely used as an - option on any kind of entity. - - - - Field number for the "edition" field. - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - Field number for the "value" field. - - - - Textproto value. - - - - Gets whether the "value" field is set - - - Clears the value of the "value" field - - - - Information about the support window of a feature. - - - - Field number for the "edition_introduced" field. - - - - The edition that this feature was first available in. In editions - earlier than this one, the default assigned to EDITION_LEGACY will be - used, and proto files will not be able to override it. - - - - Gets whether the "edition_introduced" field is set - - - Clears the value of the "edition_introduced" field - - - Field number for the "edition_deprecated" field. - - - - The edition this feature becomes deprecated in. Using this after this - edition may trigger warnings. - - - - Gets whether the "edition_deprecated" field is set - - - Clears the value of the "edition_deprecated" field - - - Field number for the "deprecation_warning" field. - - - - The deprecation warning text if this feature is used after the edition it - was marked deprecated in. - - - - Gets whether the "deprecation_warning" field is set - - - Clears the value of the "deprecation_warning" field - - - Field number for the "edition_removed" field. - - - - The edition this feature is no longer available in. In editions after - this one, the last default assigned will be used, and proto files will - not be able to override it. - - - - Gets whether the "edition_removed" field is set - - - Clears the value of the "edition_removed" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "allow_alias" field. - - - - Set this option to true to allow mapping different tag names to the same - value. - - - - Gets whether the "allow_alias" field is set - - - Clears the value of the "allow_alias" field - - - Field number for the "deprecated" field. - - - - Is this enum deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum, or it will be completely ignored; in the very least, this - is a formalization for deprecating enums. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "deprecated_legacy_json_field_conflicts" field. - - - - Enable the legacy handling of JSON field name conflicts. This lowercases - and strips underscored from the fields before comparison in proto3 only. - The new behavior takes `json_name` into account and applies to proto2 as - well. - TODO Remove this legacy behavior once downstream teams have - had time to migrate. - - - - Gets whether the "deprecated_legacy_json_field_conflicts" field is set - - - Clears the value of the "deprecated_legacy_json_field_conflicts" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this enum value deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the enum value, or it will be completely ignored; in the very least, - this is a formalization for deprecating enum values. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "debug_redact" field. - - - - Indicate that fields annotated with this enum value should not be printed - out when using debug formats, e.g. when the field contains sensitive - credentials. - - - - Gets whether the "debug_redact" field is set - - - Clears the value of the "debug_redact" field - - - Field number for the "feature_support" field. - - - - Information about the support window of a feature value. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "deprecated" field. - - - - Is this service deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the service, or it will be completely ignored; in the very least, - this is a formalization for deprecating services. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Field number for the "deprecated" field. - - - - Is this method deprecated? - Depending on the target platform, this can emit Deprecated annotations - for the method, or it will be completely ignored; in the very least, - this is a formalization for deprecating methods. - - - - Gets whether the "deprecated" field is set - - - Clears the value of the "deprecated" field - - - Field number for the "idempotency_level" field. - - - Gets whether the "idempotency_level" field is set - - - Clears the value of the "idempotency_level" field - - - Field number for the "features" field. - - - - Any features defined in the specific edition. - WARNING: This field should only be used by protobuf plugins or special - cases like the proto compiler. Other uses are discouraged and - developers should rely on the protoreflect APIs for their client language. - - - - Field number for the "uninterpreted_option" field. - - - - The parser stores options it doesn't recognize here. See above. - - - - Container for nested types declared in the MethodOptions message type. - - - - Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - or neither? HTTP based RPC implementation may choose GET verb for safe - methods, and PUT verb for idempotent methods instead of the default POST. - - - - - implies idempotent - - - - - idempotent, but may have side effects - - - - - A message representing a option the parser does not recognize. This only - appears in options protos created by the compiler::Parser class. - DescriptorPool resolves these when building Descriptor objects. Therefore, - options protos in descriptor objects (e.g. returned by Descriptor::options(), - or produced by Descriptor::CopyTo()) will never have UninterpretedOptions - in them. - - - - Field number for the "name" field. - - - Field number for the "identifier_value" field. - - - - The value of the uninterpreted option, in whatever type the tokenizer - identified it as during parsing. Exactly one of these should be set. - - - - Gets whether the "identifier_value" field is set - - - Clears the value of the "identifier_value" field - - - Field number for the "positive_int_value" field. - - - Gets whether the "positive_int_value" field is set - - - Clears the value of the "positive_int_value" field - - - Field number for the "negative_int_value" field. - - - Gets whether the "negative_int_value" field is set - - - Clears the value of the "negative_int_value" field - - - Field number for the "double_value" field. - - - Gets whether the "double_value" field is set - - - Clears the value of the "double_value" field - - - Field number for the "string_value" field. - - - Gets whether the "string_value" field is set - - - Clears the value of the "string_value" field - - - Field number for the "aggregate_value" field. - - - Gets whether the "aggregate_value" field is set - - - Clears the value of the "aggregate_value" field - - - Container for nested types declared in the UninterpretedOption message type. - - - - The name of the uninterpreted option. Each string represents a segment in - a dot-separated name. is_extension is true iff a segment represents an - extension (denoted with parentheses in options specs in .proto files). - E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents - "foo.(bar.baz).moo". - - - - Field number for the "name_part" field. - - - Gets whether the "name_part" field is set - - - Clears the value of the "name_part" field - - - Field number for the "is_extension" field. - - - Gets whether the "is_extension" field is set - - - Clears the value of the "is_extension" field - - - - TODO Enums in C++ gencode (and potentially other languages) are - not well scoped. This means that each of the feature enums below can clash - with each other. The short names we've chosen maximize call-site - readability, but leave us very open to this scenario. A future feature will - be designed and implemented to handle this, hopefully before we ever hit a - conflict here. - - - - Field number for the "field_presence" field. - - - Gets whether the "field_presence" field is set - - - Clears the value of the "field_presence" field - - - Field number for the "enum_type" field. - - - Gets whether the "enum_type" field is set - - - Clears the value of the "enum_type" field - - - Field number for the "repeated_field_encoding" field. - - - Gets whether the "repeated_field_encoding" field is set - - - Clears the value of the "repeated_field_encoding" field - - - Field number for the "utf8_validation" field. - - - Gets whether the "utf8_validation" field is set - - - Clears the value of the "utf8_validation" field - - - Field number for the "message_encoding" field. - - - Gets whether the "message_encoding" field is set - - - Clears the value of the "message_encoding" field - - - Field number for the "json_format" field. - - - Gets whether the "json_format" field is set - - - Clears the value of the "json_format" field - - - Field number for the "enforce_naming_style" field. - - - Gets whether the "enforce_naming_style" field is set - - - Clears the value of the "enforce_naming_style" field - - - Container for nested types declared in the FeatureSet message type. - - - - A compiled specification for the defaults of a set of features. These - messages are generated from FeatureSet extensions and can be used to seed - feature resolution. The resolution with this object becomes a simple search - for the closest matching edition, followed by proto merges. - - - - Field number for the "defaults" field. - - - Field number for the "minimum_edition" field. - - - - The minimum supported edition (inclusive) when this was constructed. - Editions before this will not have defaults. - - - - Gets whether the "minimum_edition" field is set - - - Clears the value of the "minimum_edition" field - - - Field number for the "maximum_edition" field. - - - - The maximum known edition (inclusive) when this was constructed. Editions - after this will not have reliable defaults. - - - - Gets whether the "maximum_edition" field is set - - - Clears the value of the "maximum_edition" field - - - Container for nested types declared in the FeatureSetDefaults message type. - - - - A map from every known edition with a unique set of defaults to its - defaults. Not all editions may be contained here. For a given edition, - the defaults at the closest matching edition ordered at or before it should - be used. This field must be in strict ascending order by edition. - - - - Field number for the "edition" field. - - - Gets whether the "edition" field is set - - - Clears the value of the "edition" field - - - Field number for the "overridable_features" field. - - - - Defaults of features that can be overridden in this edition. - - - - Field number for the "fixed_features" field. - - - - Defaults of features that can't be overridden in this edition. - - - - - Encapsulates information about the original source file from which a - FileDescriptorProto was generated. - - - - Field number for the "location" field. - - - - A Location identifies a piece of source code in a .proto file which - corresponds to a particular definition. This information is intended - to be useful to IDEs, code indexers, documentation generators, and similar - tools. - - For example, say we have a file like: - message Foo { - optional string foo = 1; - } - Let's look at just the field definition: - optional string foo = 1; - ^ ^^ ^^ ^ ^^^ - a bc de f ghi - We have the following locations: - span path represents - [a,i) [ 4, 0, 2, 0 ] The whole field definition. - [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - - Notes: - - A location may refer to a repeated field itself (i.e. not to any - particular index within it). This is used whenever a set of elements are - logically enclosed in a single code segment. For example, an entire - extend block (possibly containing multiple extension definitions) will - have an outer location whose path refers to the "extensions" repeated - field without an index. - - Multiple locations may have the same path. This happens when a single - logical declaration is spread out across multiple places. The most - obvious example is the "extend" block again -- there may be multiple - extend blocks in the same scope, each of which will have the same path. - - A location's span is not always a subset of its parent's span. For - example, the "extendee" of an extension declaration appears at the - beginning of the "extend" block and is shared by all extensions within - the block. - - Just because a location's span is a subset of some other location's span - does not mean that it is a descendant. For example, a "group" defines - both a type and a field in a single declaration. Thus, the locations - corresponding to the type and field and their components will overlap. - - Code which tries to interpret locations should probably be designed to - ignore those that it doesn't understand, as more types of locations could - be recorded in the future. - - - - Container for nested types declared in the SourceCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies which part of the FileDescriptorProto was defined at this - location. - - Each element is a field number or an index. They form a path from - the root FileDescriptorProto to the place where the definition appears. - For example, this path: - [ 4, 3, 2, 7, 1 ] - refers to: - file.message_type(3) // 4, 3 - .field(7) // 2, 7 - .name() // 1 - This is because FileDescriptorProto.message_type has field number 4: - repeated DescriptorProto message_type = 4; - and DescriptorProto.field has field number 2: - repeated FieldDescriptorProto field = 2; - and FieldDescriptorProto.name has field number 1: - optional string name = 1; - - Thus, the above path gives the location of a field name. If we removed - the last element: - [ 4, 3, 2, 7 ] - this path refers to the whole field declaration (from the beginning - of the label to the terminating semicolon). - - - - Field number for the "span" field. - - - - Always has exactly three or four elements: start line, start column, - end line (optional, otherwise assumed same as start line), end column. - These are packed into a single field for efficiency. Note that line - and column numbers are zero-based -- typically you will want to add - 1 to each before displaying to a user. - - - - Field number for the "leading_comments" field. - - - - If this SourceCodeInfo represents a complete declaration, these are any - comments appearing before and after the declaration which appear to be - attached to the declaration. - - A series of line comments appearing on consecutive lines, with no other - tokens appearing on those lines, will be treated as a single comment. - - leading_detached_comments will keep paragraphs of comments that appear - before (but not connected to) the current element. Each paragraph, - separated by empty lines, will be one comment element in the repeated - field. - - Only the comment content is provided; comment markers (e.g. //) are - stripped out. For block comments, leading whitespace and an asterisk - will be stripped from the beginning of each line other than the first. - Newlines are included in the output. - - Examples: - - optional int32 foo = 1; // Comment attached to foo. - // Comment attached to bar. - optional int32 bar = 2; - - optional string baz = 3; - // Comment attached to baz. - // Another line attached to baz. - - // Comment attached to moo. - // - // Another line attached to moo. - optional double moo = 4; - - // Detached comment for corge. This is not leading or trailing comments - // to moo or corge because there are blank lines separating it from - // both. - - // Detached comment for corge paragraph 2. - - optional string corge = 5; - /* Block comment attached - * to corge. Leading asterisks - * will be removed. */ - /* Block comment attached to - * grault. */ - optional int32 grault = 6; - - // ignored detached comments. - - - - Gets whether the "leading_comments" field is set - - - Clears the value of the "leading_comments" field - - - Field number for the "trailing_comments" field. - - - Gets whether the "trailing_comments" field is set - - - Clears the value of the "trailing_comments" field - - - Field number for the "leading_detached_comments" field. - - - - Describes the relationship between generated code and its original source - file. A GeneratedCodeInfo message is associated with only one generated - source file, but may contain references to different source .proto files. - - - - Field number for the "annotation" field. - - - - An Annotation connects some span of text in generated code to an element - of its generating .proto file. - - - - Container for nested types declared in the GeneratedCodeInfo message type. - - - Field number for the "path" field. - - - - Identifies the element in the original source .proto file. This field - is formatted the same as SourceCodeInfo.Location.path. - - - - Field number for the "source_file" field. - - - - Identifies the filesystem path to the original source .proto. - - - - Gets whether the "source_file" field is set - - - Clears the value of the "source_file" field - - - Field number for the "begin" field. - - - - Identifies the starting offset in bytes in the generated code - that relates to the identified object. - - - - Gets whether the "begin" field is set - - - Clears the value of the "begin" field - - - Field number for the "end" field. - - - - Identifies the ending offset in bytes in the generated code that - relates to the identified object. The end offset should be one past - the last relevant byte (so the length of the text = end - begin). - - - - Gets whether the "end" field is set - - - Clears the value of the "end" field - - - Field number for the "semantic" field. - - - Gets whether the "semantic" field is set - - - Clears the value of the "semantic" field - - - Container for nested types declared in the Annotation message type. - - - - Represents the identified object's effect on the element in the original - .proto file. - - - - - There is no effect or the effect is indescribable. - - - - - The element is set or otherwise mutated. - - - - - An alias to the element is returned. - - - - - Base class for nearly all descriptors, providing common functionality. - - - - - The feature set for this descriptor, including inherited features. - This is internal as external users should use the properties on individual - descriptor types (e.g. FieldDescriptor.IsPacked) rather than querying features directly. - - - - - The index of this descriptor within its parent descriptor. - - - This returns the index of this descriptor within its parent, for - this descriptor's type. (There can be duplicate values for different - types, e.g. one enum type with index 0 and one message type with index 0.) - - - - - Returns the name of the entity (field, message etc) being described. - - - - - The fully qualified name of the descriptor's target. - - - - - The file this descriptor was declared in. - - - - - The declaration information about the descriptor, or null if no declaration information - is available for this descriptor. - - - This information is typically only available for dynamically loaded descriptors, - for example within a protoc plugin where the full descriptors, including source info, - are passed to the code by protoc. - - - - - Retrieves the list of nested descriptors corresponding to the given field number, if any. - If the field is unknown or not a nested descriptor list, return null to terminate the search. - The default implementation returns null. - - - - - Provides additional information about the declaration of a descriptor, - such as source location and comments. - - - - - The descriptor this declaration relates to. - - - - - The start line of the declaration within the source file. This value is 1-based. - - - - - The start column of the declaration within the source file. This value is 1-based. - - - - - // The end line of the declaration within the source file. This value is 1-based. - - - - - The end column of the declaration within the source file. This value is 1-based, and - exclusive. (The final character of the declaration is on the column before this value.) - - - - - Comments appearing before the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing after the declaration. Never null, but may be empty. Multi-line comments - are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - are removed from each line. - - - - - Comments appearing before the declaration, but separated from it by blank - lines. Each string represents a newline-separated paragraph of comments. - Leading whitespace and the comment marker ("//") are removed from each line. - The list is never null, but may be empty. Likewise each element is never null, but may be empty. - - - - - Contains lookup tables containing all the descriptors defined in a particular file. - - - - - Finds a symbol of the given name within the pool. - - The type of symbol to look for - Fully-qualified name to look up - The symbol with the given name and type, - or null if the symbol doesn't exist or has the wrong type - - - - Adds a package to the symbol tables. If a package by the same name - already exists, that is fine, but if some other kind of symbol - exists under the same name, an exception is thrown. If the package - has multiple components, this also adds the parent package(s). - - - - - Adds a symbol to the symbol table. - - The symbol already existed - in the symbol table. - - - - Verifies that the descriptor's name is valid (i.e. it contains - only letters, digits and underscores, and does not start with a digit). - - - - - - Returns the field with the given number in the given descriptor, - or null if it can't be found. - - - - - Adds a field to the fieldsByNumber table. - - A field with the same - containing type and number already exists. - - - - Adds an enum value to the enumValuesByNumber and enumValuesByName tables. If an enum value - with the same type and number already exists, this method does nothing to enumValuesByNumber. - (This is allowed; the first value defined with the number takes precedence.) If an enum - value with the same name already exists, this method throws DescriptorValidationException. - (It is expected that this method is called after AddSymbol, which would already have thrown - an exception in this failure case.) - - - - - Looks up a descriptor by name, relative to some other descriptor. - The name may be fully-qualified (with a leading '.'), partially-qualified, - or unqualified. C++-like name lookup semantics are used to search for the - matching descriptor. - - - This isn't heavily optimized, but it's only used during cross linking anyway. - If it starts being used more widely, we should look at performance more carefully. - - - - - Struct used to hold the keys for the enumValuesByName table. - - - - - Internal class containing utility methods when working with descriptors. - - - - - Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert - arrays. - - - - - Converts the given array into a read-only list, applying the specified conversion to - each input element. - - - - - Thrown when building descriptors fails because the source DescriptorProtos - are not valid. - - - - - The full name of the descriptor where the error occurred. - - - - - A human-readable description of the error. (The Message property - is made up of the descriptor's name and this description.) - - - - - Descriptor for an enum type in a .proto file. - - - - - Returns a clone of the underlying describing this enum. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this enum descriptor. - - - - The brief name of the descriptor's target. - - - - - The CLR type for this enum. For generated code, this will be a CLR enum type. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - An unmodifiable list of defined value descriptors for this enum. - - - - - Finds an enum value by number. If multiple enum values have the - same number, this returns the first defined value with that number. - If there is no value for the given number, this returns null. - - - - - Finds an enum value by name. - - The unqualified name of the value (e.g. "FOO"). - The value's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this enum. - - - - - The EnumOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum option for this descriptor - - - - - Gets a repeated value enum option for this descriptor - - - - - Descriptor for a single enum value within an enum in a .proto file. - - - - - Returns a clone of the underlying describing this enum value. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this enum value descriptor. - - - - Returns the name of the enum value described by this object. - - - - - Returns the number associated with this enum value. - - - - - Returns the enum descriptor that this value is part of. - - - - - The (possibly empty) set of custom options for this enum value. - - - - - The EnumValueOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value enum value option for this descriptor - - - - - Gets a repeated value enum value option for this descriptor - - - - - A collection to simplify retrieving the descriptors of extensions in a descriptor for a message - - - - - Returns a readonly list of all the extensions defined in this type in - the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in the order they were defined in the source .proto file - - - - - Returns a readonly list of all the extensions define in this type that extend - the provided descriptor type in ascending field order - - - - - A resolved set of features for a file, message etc. - - - Only features supported by the C# runtime are exposed; currently - all enums in C# are open, and we never perform UTF-8 validation. - If either of those features are ever implemented in this runtime, - the feature settings will be exposed as properties in this class. - - - - - Only relevant to fields. Indicates if a field has explicit presence. - - - - - Only relevant to fields. Indicates how a repeated field should be encoded. - - - - - Only relevant to fields. Indicates how a message-valued field should be encoded. - - - - - Returns a new descriptor based on this one, with the specified overrides. - Multiple calls to this method that produce equivalent feature sets will return - the same instance. - - The proto representation of the "child" feature set to merge with this - one. May be null, in which case this descriptor is returned. - A descriptor based on the current one, with the given set of overrides. - - - - Base class for field accessors. - - - - - Descriptor for a field or extension within a message in a .proto file. - - - - - Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension. - - - - - Returns the oneof containing this field, or null if it is not part of a oneof. - - - - - Returns the oneof containing this field if it's a "real" oneof, or null if either this - field is not part of a oneof, or the oneof is synthetic. - - - - - The effective JSON name for this field. This is usually the lower-camel-cased form of the field name, - but can be overridden using the json_name option in the .proto file. - - - - - The name of the property in the ContainingType.ClrType class. - - - - - Indicates whether this field supports presence, either implicitly (e.g. due to it being a message - type field) or explicitly via Has/Clear members. If this returns true, it is safe to call - and - on this field's accessor with a suitable message. - - - - - Returns a clone of the underlying describing this field. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this field descriptor. - - - - An extension identifier for this field, or null if this field isn't an extension. - - - - - Returns the features from the direct parent: - - The file for top-level extensions - - The oneof for one-of fields - - Otherwise the message - - - - - Returns a feature set with inferred features for the given field, or null if no features - need to be inferred. - - - - - The brief name of the descriptor's target. - - - - - Returns the accessor for this field. - - - - While a describes the field, it does not provide - any way of obtaining or changing the value of the field within a specific message; - that is the responsibility of the accessor. - - - In descriptors for generated code, the value returned by this property will be non-null for all - regular fields. However, if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, and the value of the map field itself is represented by a dictionary in the - reflection API. There are never instances of those "hidden" messages, so no accessor is provided - and this property will return null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - - - Maps a field type as included in the .proto file to a FieldType. - - - - - Returns true if this field is a repeated field; false otherwise. - - - - - Returns true if this field is a required field; false otherwise. - - - - - Returns true if this field is a map field; false otherwise. - - - - - Returns true if this field is a packed, repeated field; false otherwise. - - - - - Returns true if this field extends another message type; false otherwise. - - - - - Returns the type of the field. - - - - - Returns the field number declared in the proto file. - - - - - Compares this descriptor with another one, ordering in "canonical" order - which simply means ascending order by field number. - must be a field of the same type, i.e. the of - both fields must be the same. - - - - - For enum fields, returns the field's type. - - - - - For embedded message and group fields, returns the field's type. - - - - - For extension fields, returns the extended type - - - - - The (possibly empty) set of custom options for this field. - - - - - The FieldOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value field option for this descriptor - - - - - Gets a repeated value field option for this descriptor - - - - - Look up and cross-link all field types etc. - - - - - Enumeration of all the possible field types. - - - - - The double field type. - - - - - The float field type. - - - - - The int64 field type. - - - - - The uint64 field type. - - - - - The int32 field type. - - - - - The fixed64 field type. - - - - - The fixed32 field type. - - - - - The bool field type. - - - - - The string field type. - - - - - The field type used for groups. - - - - - The field type used for message fields. - - - - - The bytes field type. - - - - - The uint32 field type. - - - - - The sfixed32 field type. - - - - - The sfixed64 field type. - - - - - The sint32 field type. - - - - - The sint64 field type. - - - - - The field type used for enum fields. - - - - - The syntax of a .proto file - - - - - Proto2 syntax - - - - - Proto3 syntax - - - - - Editions syntax - - - - - An unknown declared syntax - - - - - Describes a .proto file, including everything defined within. - IDescriptor is implemented such that the File property returns this descriptor, - and the FullName is the same as the Name. - - - - - Computes the full name of a descriptor within this file, with an optional parent message. - - - - - Extracts public dependencies from direct dependencies. This is a static method despite its - first parameter, as the value we're in the middle of constructing is only used for exceptions. - - - - - The descriptor in its protocol message representation. - - - - - Returns a clone of the underlying describing this file. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this file descriptor. - - - - The feature set for this file, including inherited features. - - - - - Returns the edition of the file descriptor. - - - - - The syntax of the file. - - - - - The file name. - - - - - The package as declared in the .proto file. This may or may not - be equivalent to the .NET namespace of the generated classes. - - - - - Unmodifiable list of top-level message types declared in this file. - - - - - Unmodifiable list of top-level enum types declared in this file. - - - - - Unmodifiable list of top-level services declared in this file. - - - - - Unmodifiable list of top-level extensions declared in this file. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if this descriptor was generated using a version of protoc that did not fully - support extensions in C#. - - - - - Unmodifiable list of this file's dependencies (imports). - - - - - Unmodifiable list of this file's public dependencies (public imports). - - - - - The original serialized binary form of this descriptor. - - - - - Implementation of IDescriptor.FullName - just returns the same as Name. - - - - - Implementation of IDescriptor.File - just returns this descriptor. - - - - - Pool containing symbol descriptors. - - - - - Finds a type (message, enum, service or extension) in the file by name. Does not find nested types. - - The unqualified type name to look for. - The type of descriptor to look for - The type's descriptor, or null if not found. - - - - Builds a FileDescriptor from its protocol buffer representation. - - The original serialized descriptor data. - We have only limited proto2 support, so serializing FileDescriptorProto - would not necessarily give us this. - The protocol message form of the FileDescriptor. - FileDescriptors corresponding to all of the - file's dependencies, in the exact order listed in the .proto file. May be null, - in which case it is treated as an empty array. - Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false). - Details about generated code, for the purposes of reflection. - If is not - a valid descriptor. This can occur for a number of reasons, such as a field - having an undefined type or because two messages were defined with the same name. - - - - Creates a descriptor for generated code. - - - This method is only designed to be used by the results of generating code with protoc, - which creates the appropriate dependencies etc. It has to be public because the generated - code is "external", but should not be called directly by end users. - - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The extension registry to use when parsing, or null if no extensions are required. - The file descriptors corresponding to . - - - - Converts the given descriptor binary data into FileDescriptor objects. - Note: reflection using the returned FileDescriptors is not currently supported. - - The binary file descriptor proto data. Must not be null, and any - dependencies must come before the descriptor which depends on them. (If A depends on B, and B - depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - with the order in which protoc provides descriptors to plugins. - The file descriptors corresponding to . - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Returns the file descriptor for descriptor.proto. - - - This is used for protos which take a direct dependency on descriptor.proto, typically for - annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf - runtime for reflection purposes. The messages are internal to the runtime as they would require - proto2 semantics for full support, but the file descriptor is available via this property. The - C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto. - - - The file descriptor for descriptor.proto. - - - - - The (possibly empty) set of custom options for this file. - - - - - The FileOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value file option for this descriptor - - - - - Gets a repeated value file option for this descriptor - - - - - Performs initialization for the given generic type argument. - - - This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated) - to make calls into the reflection machinery of this library to express an intention to use that type - reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers - attempting to determine which generic type arguments need to be handled will spot the code path and act - accordingly. - - The type to force initialization for. - - - - Extra information provided by generated code when initializing a message or file descriptor. - These are constructed as required, and are not long-lived. Hand-written code should - never need to use this type. - - - - - Irrelevant for file descriptors; the CLR type for the message for message descriptors. - - - - - Irrelevant for file descriptors; the parser for message descriptors. - - - - - Irrelevant for file descriptors; the CLR property names (in message descriptor field order) - for fields in the message for message descriptors. - - - - - The extensions defined within this file/message descriptor - - - - - Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order) - for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo", - there will be a "FooCase" property and a "ClearFoo" method. - - - - - The reflection information for types within this file/message descriptor. Elements may be null - if there is no corresponding generated type, e.g. for map entry types. - - - - - The CLR types for enums within this file/message descriptor. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - Each array parameter may be null, to indicate a lack of values. - The parameter order is designed to make it feasible to format the generated code readably. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions. - - - - - Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums. - - - - - Interface implemented by all descriptor types. - - - - - Returns the name of the entity (message, field etc) being described. - - - - - Returns the fully-qualified name of the entity being described. - - - - - Returns the descriptor for the .proto file that this entity is part of. - - - - - Allows fields to be reflectively accessed. - - - - - Returns the descriptor associated with this field. - - - - - Clears the field in the specified message. (For repeated fields, - this clears the list.) - - - - - Fetches the field value. For repeated values, this will be an - implementation. For map values, this will be an - implementation. - - - - - Indicates whether the field in the specified message is set. - For proto3 fields that aren't explicitly optional, this throws an - - - - - Mutator for single "simple" fields only. - - - Repeated fields are mutated by fetching the value and manipulating it as a list. - Map fields are mutated by fetching the value and manipulating it as a dictionary. - - The field is not a "simple" field. - - - - Accessor for map fields. - - - - - Describes a message type. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this message. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this message descriptor. - - - - The CLR type used to represent message instances from this descriptor. - - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. This is not represented in any - generated type, so this property will return null in such cases. - - - For wrapper types ( and the like), the type returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - A parser for this message type. - - - - As is not generic, this cannot be statically - typed to the relevant type, but it should produce objects of a type compatible with . - - - The value returned by this property will be non-null for all regular fields. However, - if a message containing a map field is introspected, the list of nested messages will include - an auto-generated nested key/value pair message for the field. No message parser object is created for - such messages, so this property will return null in such cases. - - - For wrapper types ( and the like), the parser returned here - will be the generated message type, not the native type used by reflection for fields of those types. Code - using reflection should call to determine whether a message descriptor represents - a wrapper type, and handle the result appropriately. - - - - - - Returns whether this message is one of the "well known types" which may have runtime/protoc support. - - - - - Returns whether this message is one of the "wrapper types" used for fields which represent primitive values - with the addition of presence. - - - - - Returns whether this message was synthetically-created to store key/value pairs in a - map field. - - - - - If this is a nested type, get the outer descriptor, otherwise null. - - - - - A collection of fields, which can be retrieved by name or field number. - - - - - An unmodifiable list of extensions defined in this message's scope. - Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) - if they are declared in a file generated using a version of protoc that did not fully - support extensions in C#. - - - - - An unmodifiable list of this message type's nested types. - - - - - An unmodifiable list of this message type's enum types. - - - - - An unmodifiable list of the "oneof" field collections in this message type. - All "real" oneofs (where returns false) - come before synthetic ones. - - - - - The number of real "oneof" descriptors in this message type. Every element in - with an index less than this will have a property value - of false; every element with an index greater than or equal to this will have a - property value of true. - - - - - Finds a field by field name. - - The unqualified name of the field (e.g. "foo"). - The field's descriptor, or null if not found. - - - - Finds a field by field number. - - The field number within this message type. - The field's descriptor, or null if not found. - - - - Finds a nested descriptor by name. The is valid for fields, nested - message types, oneofs and enums. - - The unqualified name of the descriptor, e.g. "Foo" - The descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this message. - - - - - The MessageOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value message option for this descriptor - - - - - Gets a repeated value message option for this descriptor - - - - - Looks up and cross-links all fields and nested types. - - - - - A collection to simplify retrieving the field accessor for a particular field. - - - - - Returns the fields in the message as an immutable list, in the order in which they - are declared in the source .proto file. - - - - - Returns the fields in the message as an immutable list, in ascending field number - order. Field numbers need not be contiguous, so there is no direct mapping from the - index in the list to the field number; to retrieve a field by field number, it is better - to use the indexer. - - - - - Returns a read-only dictionary mapping the field names in this message as they're available - in the JSON representation to the field descriptors. For example, a field foo_bar - in the message would result two entries, one with a key fooBar and one with a key - foo_bar, both referring to the same field. - - - - - Retrieves the descriptor for the field with the given number. - - Number of the field to retrieve the descriptor for - The accessor for the given field - The message descriptor does not contain a field - with the given number - - - - Retrieves the descriptor for the field with the given name. - - Name of the field to retrieve the descriptor for - The descriptor for the given field - The message descriptor does not contain a field - with the given name - - - - Describes a single method in a service. - - - - - The service this method belongs to. - - - - - The method's input type. - - - - - The method's input type. - - - - - Indicates if client streams multiple requests. - - - - - Indicates if server streams multiple responses. - - - - - The (possibly empty) set of custom options for this method. - - - - - The MethodOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value method option for this descriptor - - - - - Gets a repeated value method option for this descriptor - - - - - Returns a clone of the underlying describing this method. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this method descriptor. - - - - The brief name of the descriptor's target. - - - - - Reflection access for a oneof, allowing clear and "get case" actions. - - - - - Gets the descriptor for this oneof. - - - The descriptor of the oneof. - - - - - Clears the oneof in the specified message. - - - - - Indicates which field in the oneof is set for specified message - - - - - Describes a "oneof" field collection in a message type: a set of - fields of which at most one can be set in any particular message. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this oneof. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this oneof descriptor. - - - - Gets the message type containing this oneof. - - - The message type containing this oneof. - - - - - Gets the fields within this oneof, in declaration order. - - - The fields within this oneof, in declaration order. - - - - - Returns true if this oneof is a synthetic oneof containing a proto3 optional field; - false otherwise. - - - - - Gets an accessor for reflective access to the values associated with the oneof - in a particular message. - - - - In descriptors for generated code, the value returned by this property will always be non-null. - - - In dynamically loaded descriptors, the value returned by this property will current be null; - if and when dynamic messages are supported, it will return a suitable accessor to work with - them. - - - - The accessor used for reflective access. - - - - - The (possibly empty) set of custom options for this oneof. - - - - - The OneofOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value oneof option for this descriptor - - - - - Gets a repeated value oneof option for this descriptor - - - - - Specifies the original name (in the .proto file) of a named element, - such as an enum value. - - - - - The name of the element in the .proto file. - - - - - If the name is preferred in the .proto file. - - - - - Constructs a new attribute instance for the given name. - - The name of the element in the .proto file. - - - - Represents a package in the symbol table. We use PackageDescriptors - just as placeholders so that someone cannot define, say, a message type - that has the same name as an existing package. - - - - - The methods in this class are somewhat evil, and should not be tampered with lightly. - Basically they allow the creation of relatively weakly typed delegates from MethodInfos - which are more strongly typed. They do this by creating an appropriate strongly typed - delegate from the MethodInfo, and then calling that within an anonymous method. - Mind-bending stuff (at least to your humble narrator) but the resulting delegates are - very fast compared with calling Invoke later on. - - - - - Empty Type[] used when calling GetProperty to force property instead of indexer fetching. - - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to object. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will cast the argument to the type that declares the method, - call the method on it, then convert the result to the specified type. The method is expected - to actually return an enum (because of where we're calling it - for oneof cases). Sometimes - that means we need some extra work to perform conversions. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of - the method. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - type that declares the method. - - The method to create a delegate for, which must be declared in an - IMessage implementation. - - - - Creates a delegate which will execute the given method after casting the first argument to - the type that declares the method, and the second argument to the first parameter type of - the method. - - - - - Creates a reflection helper for the given type arguments. Currently these are created on - demand rather than cached; this will be "busy" when initially loading a message's - descriptor, but after that they can be garbage collected. We could cache them by type if - that proves to be important, but creating an object is pretty cheap. - - - - - Accessor for repeated fields. - - - - - Describes a service type. - - - - - The brief name of the descriptor's target. - - - - - Returns a clone of the underlying describing this service. - Note that a copy is taken every time this method is called, so clients using it frequently - (and not modifying it) may want to cache the returned value. - - A protobuf representation of this service descriptor. - - - - An unmodifiable list of methods in this service. - - - - - Finds a method by name. - - The unqualified name of the method (e.g. "Foo"). - The method's descriptor, or null if not found. - - - - The (possibly empty) set of custom options for this service. - - - - - The ServiceOptions, defined in descriptor.proto. - If the options message is not present (i.e. there are no options), null is returned. - Custom options can be retrieved as extensions of the returned message. - NOTE: A defensive copy is created each time this property is retrieved. - - - - - Gets a single value service option for this descriptor - - - - - Gets a repeated value service option for this descriptor - - - - - Accessor for single fields. - - - - - An immutable registry of types which can be looked up by their full name. - - - - - An empty type registry, containing no types. - - - - - Attempts to find a message descriptor by its full name. - - The full name of the message, which is the dot-separated - combination of package, containing messages and message name - The message descriptor corresponding to or null - if there is no such message descriptor. - - - - Creates a type registry from the specified set of file descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the specified set of file descriptors. - - - All message types within all the specified files are added to the registry, and - the dependencies of the specified files are also added, recursively. - - The set of files to include in the registry. Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - This is a convenience overload for - to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Creates a type registry from the file descriptor parents of the specified set of message descriptors. - - - The specified message descriptors are only used to identify their file descriptors; the returned registry - contains all the types within the file descriptors which contain the specified message descriptors (and - the dependencies of those files), not just the specified messages. - - The set of message descriptors to use to identify file descriptors to include in the registry. - Must not contain null values. - A type registry for the given files. - - - - Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls. - - - - - A set of extension methods on - - - - Adds the elements of the specified span to the end of the . - The type of elements in the . - The list to which the elements should be added. - The span whose elements should be added to the end of the . - The is null. - - - - Abstraction for reading from a stream / read only sequence. - Parsing from the buffer is a loop of reading from current buffer / refreshing the buffer once done. - - - - - Initialize an instance with a coded input stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a read only sequence. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Sets currentLimit to (current position) + byteLimit. This is called - when descending into a length-delimited embedded message. The previous - limit is returned. - - The old limit. - - - - Discards the current limit, returning the previous limit. - - - - - Returns whether or not all the data before the limit has been read. - - - - - - Returns true if the stream has reached the end of the input. This is the - case if either the end of the underlying input source has been reached or - the stream has reached a limit created using PushLimit. - - - - - Represents a single field in an UnknownFieldSet. - - An UnknownField consists of four lists of values. The lists correspond - to the four "wire types" used in the protocol buffer binary format. - Normally, only one of the four lists will contain any values, since it - is impossible to define a valid message type that declares two different - types for the same field number. However, the code is designed to allow - for the case where the same unknown field number is encountered using - multiple different wire types. - - - - - - Creates a new UnknownField. - - - - - Checks if two unknown field are equal. - - - - - Get the hash code of the unknown field. - - - - - Serializes the field, including the field number, and writes it to - - - The unknown field number. - The write context to write to. - - - - Computes the number of bytes required to encode this field, including field - number. - - - - - Merge the values in into this field. For each list - of values, 's values are append to the ones in this - field. - - - - - Returns a new list containing all of the given specified values from - both the and lists. - If is null and is null or empty, - null is returned. Otherwise, either a new list is created (if - is null) or the elements of are added to . - - - - - Adds a varint value. - - - - - Adds a fixed32 value. - - - - - Adds a fixed64 value. - - - - - Adds a length-delimited value. - - - - - Adds to the , creating - a new list if is null. The list is returned - either - the original reference or the new list. - - - - - Used to keep track of fields which were seen when parsing a protocol message - but whose field numbers or types are unrecognized. This most frequently - occurs when new fields are added to a message type and then messages containing - those fields are read by old software that was built before the new types were - added. - - Most users will never need to use this class directly. - - - - - Creates a new UnknownFieldSet. - - - - - Checks whether or not the given field number is present in the set. - - - - - Serializes the set and writes it to . - - - - - Serializes the set and writes it to . - - - - - Gets the number of bytes required to encode this set. - - - - - Checks if two unknown field sets are equal. - - - - - Gets the unknown field set's hash code. - - - - - Adds a field to the set. If a field with the same number already exists, it - is replaced. - - - - - Parse a single field from and merge it - into this set. - - The parse context from which to read the field - false if the tag is an "end group" tag, true otherwise - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The coded input stream containing the field - The merged UnknownFieldSet - - - - Create a new UnknownFieldSet if unknownFields is null. - Parse a single field from and merge it - into unknownFields. If is configured to discard unknown fields, - will be returned as-is and the field will be skipped. - - The UnknownFieldSet which need to be merged - The parse context from which to read the field - The merged UnknownFieldSet - - - - Merges the fields from into this set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Created a new UnknownFieldSet to if - needed and merges the fields from into the first set. - If a field number exists in both sets, the values in - will be appended to the values in this set. - - - - - Adds a field to the unknown field set. If a field with the same - number already exists, the two are merged. - - - - - Clone an unknown field set from . - - - - - Provides a number of unsafe byte operations to be used by advanced applications with high performance - requirements. These methods are referred to as "unsafe" due to the fact that they potentially expose - the backing buffer of a to the application. - - - - The methods in this class should only be called if it is guaranteed that the buffer backing the - will never change! Mutation of a can lead to unexpected - and undesirable consequences in your application, and will likely be difficult to debug. Proceed with caution! - - - This can have a number of significant side affects that have spooky-action-at-a-distance-like behavior. In - particular, if the bytes value changes out from under a Protocol Buffer: - - - - serialization may throw - - - serialization may succeed but the wrong bytes may be written out - - - objects that are normally immutable (such as ByteString) are no longer immutable - - - hashCode may be incorrect - - - - - - - Constructs a new from the given bytes. The bytes are not copied, - and must not be modified while the is in use. - This API is experimental and subject to change. - - - - - An unsafe class that provides a set of methods to access the underlying data representations of - collections. - - - - - - Returns a that wraps the current backing array of the given - . - - - Values in the should not be set to null. Use - or to - remove items instead. - - - The returned is only valid until the size of the - is modified, after which its state becomes undefined. - Modifying existing elements without changing the size is safe as long as the modifications - do not set null values. - - - - The type of elements in the . - - - The for which to wrap the current backing array. Must not be - null. - - - A that wraps the current backing array of the - . - - - Thrown if is . - - - - - - Sets the count of the specified to the given value. - - - This method should only be called if the subsequent code guarantees to populate - the field with the specified number of items. - - - If count is less than , the collection is effectively - trimmed down to the first count elements. - is unchanged, meaning the underlying array remains allocated. - - - - The type of elements in the . - - - The field to set the count of. Must not be null. - - - The value to set the field's count to. Must be non-negative. - - - Thrown if is . - - - Thrown if is negative. - - - - Holder for reflection information generated from google/protobuf/any.proto - - - File descriptor for google/protobuf/any.proto - - - - `Any` contains an arbitrary serialized protocol buffer message along with a - URL that describes the type of the serialized message. - - Protobuf library provides support to pack/unpack Any values in the form - of utility functions or additional generated methods of the Any type. - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". - - JSON - ==== - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": <string>, - "lastName": <string> - } - - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - - - - Field number for the "type_url" field. - - - - A URL/resource name that uniquely identifies the type of the serialized - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical form - (e.g., leading "." is not accepted). - - In practice, teams usually precompile into the binary all types that they - expect it to use in the context of Any. However, for URLs which use the - scheme `http`, `https`, or no scheme, one can optionally set up a type - server that maps type URLs to message definitions as follows: - - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. As of May 2023, there are no widely used type server - implementations and no plans to implement one. - - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - - - - Field number for the "value" field. - - - - Must be a valid serialized protocol buffer of the above specified type. - - - - - Retrieves the type name for a type URL, matching the - of the packed message type. - - - - This is always just the last part of the URL, after the final slash. No validation of - anything before the trailing slash is performed. If the type URL does not include a slash, - an empty string is returned rather than an exception being thrown; this won't match any types, - and the calling code is probably in a better position to give a meaningful error. - - - There is no handling of fragments or queries at the moment. - - - The URL to extract the type name from - The type name - - - - Returns a bool indictating whether this Any message is of the target message type - - The descriptor of the message type - true if the type name matches the descriptor's full name or false otherwise - - - - Unpacks the content of this Any message into the target message type, - which must match the type URL within this Any message. - - The type of message to unpack the content into. - The unpacked message. - The target message type doesn't match the type URL in this message - - - - Attempts to unpack the content of this Any message into the target message type, - if it matches the type URL within this Any message. - - The type of message to attempt to unpack the content into. - true if the message was successfully unpacked; false if the type name didn't match - - - - Attempts to unpack the content of this Any message into one of the message types - in the given type registry, based on the type URL. - - The type registry to consult for messages. - The unpacked message, or null if no matching message was found. - - - - Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com". - - The message to pack. - An Any message with the content and type URL of . - - - - Packs the specified message into an Any message using the specified type URL prefix. - - The message to pack. - The prefix for the type URL. - An Any message with the content and type URL of . - - - Holder for reflection information generated from google/protobuf/api.proto - - - File descriptor for google/protobuf/api.proto - - - - Api is a light-weight descriptor for an API Interface. - - Interfaces are also described as "protocol buffer services" in some contexts, - such as by the "service" keyword in a .proto file, but they are different - from API Services, which represent a concrete implementation of an interface - as opposed to simply a description of methods and bindings. They are also - sometimes simply referred to as "APIs" in other contexts, such as the name of - this message itself. See https://cloud.google.com/apis/design/glossary for - detailed terminology. - - - - Field number for the "name" field. - - - - The fully qualified name of this interface, including package name - followed by the interface's simple name. - - - - Field number for the "methods" field. - - - - The methods of this interface, in unspecified order. - - - - Field number for the "options" field. - - - - Any metadata attached to the interface. - - - - Field number for the "version" field. - - - - A version string for this interface. If specified, must have the form - `major-version.minor-version`, as in `1.10`. If the minor version is - omitted, it defaults to zero. If the entire version field is empty, the - major version is derived from the package name, as outlined below. If the - field is not empty, the version in the package name will be verified to be - consistent with what is provided here. - - The versioning schema uses [semantic - versioning](http://semver.org) where the major version number - indicates a breaking change and the minor version an additive, - non-breaking change. Both version numbers are signals to users - what to expect from different versions, and should be carefully - chosen based on the product plan. - - The major version is also reflected in the package name of the - interface, which must end in `v<major-version>`, as in - `google.feature.v1`. For major versions 0 and 1, the suffix can - be omitted. Zero major versions must only be used for - experimental, non-GA interfaces. - - - - Field number for the "source_context" field. - - - - Source context for the protocol buffer service represented by this - message. - - - - Field number for the "mixins" field. - - - - Included interfaces. See [Mixin][]. - - - - Field number for the "syntax" field. - - - - The source syntax of the service. - - - - - Method represents a method of an API interface. - - - - Field number for the "name" field. - - - - The simple name of this method. - - - - Field number for the "request_type_url" field. - - - - A URL of the input message type. - - - - Field number for the "request_streaming" field. - - - - If true, the request is streamed. - - - - Field number for the "response_type_url" field. - - - - The URL of the output message type. - - - - Field number for the "response_streaming" field. - - - - If true, the response is streamed. - - - - Field number for the "options" field. - - - - Any metadata attached to the method. - - - - Field number for the "syntax" field. - - - - The source syntax of this method. - - - - - Declares an API Interface to be included in this interface. The including - interface must redeclare all the methods from the included interface, but - documentation and options are inherited as follows: - - - If after comment and whitespace stripping, the documentation - string of the redeclared method is empty, it will be inherited - from the original method. - - - Each annotation belonging to the service config (http, - visibility) which is not set in the redeclared method will be - inherited. - - - If an http annotation is inherited, the path pattern will be - modified as follows. Any version prefix will be replaced by the - version of the including interface plus the [root][] path if - specified. - - Example of a simple mixin: - - package google.acl.v1; - service AccessControl { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v1/{resource=**}:getAcl"; - } - } - - package google.storage.v2; - service Storage { - rpc GetAcl(GetAclRequest) returns (Acl); - - // Get a data record. - rpc GetData(GetDataRequest) returns (Data) { - option (google.api.http).get = "/v2/{resource=**}"; - } - } - - Example of a mixin configuration: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - - The mixin construct implies that all methods in `AccessControl` are - also declared with same name and request/response types in - `Storage`. A documentation generator or annotation processor will - see the effective `Storage.GetAcl` method after inheriting - documentation and annotations as follows: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/{resource=**}:getAcl"; - } - ... - } - - Note how the version in the path pattern changed from `v1` to `v2`. - - If the `root` field in the mixin is specified, it should be a - relative path under which inherited HTTP paths are placed. Example: - - apis: - - name: google.storage.v2.Storage - mixins: - - name: google.acl.v1.AccessControl - root: acls - - This implies the following inherited HTTP annotation: - - service Storage { - // Get the underlying ACL object. - rpc GetAcl(GetAclRequest) returns (Acl) { - option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; - } - ... - } - - - - Field number for the "name" field. - - - - The fully qualified name of the interface which is included. - - - - Field number for the "root" field. - - - - If non-empty specifies a path under which inherited HTTP paths - are rooted. - - - - Holder for reflection information generated from google/protobuf/duration.proto - - - File descriptor for google/protobuf/duration.proto - - - - A Duration represents a signed, fixed-length span of time represented - as a count of seconds and fractions of seconds at nanosecond - resolution. It is independent of any calendar and concepts like "day" - or "month". It is related to Timestamp in that the difference between - two Timestamp values is a Duration and it can be added or subtracted - from a Timestamp. Range is approximately +-10,000 years. - - # Examples - - Example 1: Compute Duration from two Timestamps in pseudo code. - - Timestamp start = ...; - Timestamp end = ...; - Duration duration = ...; - - duration.seconds = end.seconds - start.seconds; - duration.nanos = end.nanos - start.nanos; - - if (duration.seconds < 0 && duration.nanos > 0) { - duration.seconds += 1; - duration.nanos -= 1000000000; - } else if (duration.seconds > 0 && duration.nanos < 0) { - duration.seconds -= 1; - duration.nanos += 1000000000; - } - - Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - - Timestamp start = ...; - Duration duration = ...; - Timestamp end = ...; - - end.seconds = start.seconds + duration.seconds; - end.nanos = start.nanos + duration.nanos; - - if (end.nanos < 0) { - end.seconds -= 1; - end.nanos += 1000000000; - } else if (end.nanos >= 1000000000) { - end.seconds += 1; - end.nanos -= 1000000000; - } - - Example 3: Compute Duration from datetime.timedelta in Python. - - td = datetime.timedelta(days=3, minutes=10) - duration = Duration() - duration.FromTimedelta(td) - - # JSON Mapping - - In JSON format, the Duration type is encoded as a string rather than an - object, where the string ends in the suffix "s" (indicating seconds) and - is preceded by the number of seconds, with nanoseconds expressed as - fractional seconds. For example, 3 seconds with 0 nanoseconds should be - encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - microsecond should be expressed in JSON format as "3.000001s". - - - - Field number for the "seconds" field. - - - - Signed seconds of the span of time. Must be from -315,576,000,000 - to +315,576,000,000 inclusive. Note: these bounds are computed from: - 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - - - - Field number for the "nanos" field. - - - - Signed fractions of a second at nanosecond resolution of the span - of time. Durations less than one second are represented with a 0 - `seconds` field and a positive or negative `nanos` field. For durations - of one second or more, a non-zero value for the `nanos` field must be - of the same sign as the `seconds` field. Must be from -999,999,999 - to +999,999,999 inclusive. - - - - - The number of nanoseconds in a second. - - - - - The number of nanoseconds in a BCL tick (as used by and ). - - - - - The maximum permitted number of seconds. - - - - - The minimum permitted number of seconds. - - - - - Converts this to a . - - If the duration is not a precise number of ticks, it is truncated towards 0. - The value of this duration, as a TimeSpan. - This value isn't a valid normalized duration, as - described in the documentation. - - - - Converts the given to a . - - The TimeSpan to convert. - The value of the given TimeSpan, as a Duration. - - - - Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes. - - The duration to negate. Must not be null. - The negated value of this duration. - - - - Adds the two specified values together. - - The first value to add. Must not be null. - The second value to add. Must not be null. - - - - - Subtracts one from another. - - The duration to subtract from. Must not be null. - The duration to subtract. Must not be null. - The difference between the two specified durations. - - - - Creates a duration with the normalized values from the given number of seconds and - nanoseconds, conforming with the description in the proto file. - - - - - Converts a duration specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in duration.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which - case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well - as Duration. - - - - - Given another duration, returns 0 if the durations are equivalent, -1 if this duration is shorter than the other, and 1 otherwise. - - - This method expects that both durations are normalized; that is, that the values of - and are within the documented bounds. - If either value is not normalized, the results of this method are unspecified. - - The duration to compare with this object. - An integer indicating whether this duration is shorter or longer than . - - - Holder for reflection information generated from google/protobuf/empty.proto - - - File descriptor for google/protobuf/empty.proto - - - - A generic empty message that you can re-use to avoid defining duplicated - empty messages in your APIs. A typical example is to use it as the request - or the response type of an API method. For instance: - - service Foo { - rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - } - - - - Holder for reflection information generated from google/protobuf/field_mask.proto - - - File descriptor for google/protobuf/field_mask.proto - - - - `FieldMask` represents a set of symbolic field paths, for example: - - paths: "f.a" - paths: "f.b.d" - - Here `f` represents a field in some root message, `a` and `b` - fields in the message found in `f`, and `d` a field found in the - message in `f.b`. - - Field masks are used to specify a subset of fields that should be - returned by a get operation or modified by an update operation. - Field masks also have a custom JSON encoding (see below). - - # Field Masks in Projections - - When used in the context of a projection, a response message or - sub-message is filtered by the API to only contain those fields as - specified in the mask. For example, if the mask in the previous - example is applied to a response message as follows: - - f { - a : 22 - b { - d : 1 - x : 2 - } - y : 13 - } - z: 8 - - The result will not contain specific values for fields x,y and z - (their value will be set to the default, and omitted in proto text - output): - - f { - a : 22 - b { - d : 1 - } - } - - A repeated field is not allowed except at the last position of a - paths string. - - If a FieldMask object is not present in a get operation, the - operation applies to all fields (as if a FieldMask of all fields - had been specified). - - Note that a field mask does not necessarily apply to the - top-level response message. In case of a REST get operation, the - field mask applies directly to the response, but in case of a REST - list operation, the mask instead applies to each individual message - in the returned resource list. In case of a REST custom method, - other definitions may be used. Where the mask applies will be - clearly documented together with its declaration in the API. In - any case, the effect on the returned resource/resources is required - behavior for APIs. - - # Field Masks in Update Operations - - A field mask in update operations specifies which fields of the - targeted resource are going to be updated. The API is required - to only change the values of the fields as specified in the mask - and leave the others untouched. If a resource is passed in to - describe the updated values, the API ignores the values of all - fields not covered by the mask. - - If a repeated field is specified for an update operation, new values will - be appended to the existing repeated field in the target resource. Note that - a repeated field is only allowed in the last position of a `paths` string. - - If a sub-message is specified in the last position of the field mask for an - update operation, then new value will be merged into the existing sub-message - in the target resource. - - For example, given the target message: - - f { - b { - d: 1 - x: 2 - } - c: [1] - } - - And an update message: - - f { - b { - d: 10 - } - c: [2] - } - - then if the field mask is: - - paths: ["f.b", "f.c"] - - then the result will be: - - f { - b { - d: 10 - x: 2 - } - c: [1, 2] - } - - An implementation may provide options to override this default behavior for - repeated and message fields. - - In order to reset a field's value to the default, the field must - be in the mask and set to the default value in the provided resource. - Hence, in order to reset all fields of a resource, provide a default - instance of the resource and set all fields in the mask, or do - not provide a mask as described below. - - If a field mask is not present on update, the operation applies to - all fields (as if a field mask of all fields has been specified). - Note that in the presence of schema evolution, this may mean that - fields the client does not know and has therefore not filled into - the request will be reset to their default. If this is unwanted - behavior, a specific service may require a client to always specify - a field mask, producing an error if not. - - As with get operations, the location of the resource which - describes the updated values in the request message depends on the - operation kind. In any case, the effect of the field mask is - required to be honored by the API. - - ## Considerations for HTTP REST - - The HTTP kind of an update operation which uses a field mask must - be set to PATCH instead of PUT in order to satisfy HTTP semantics - (PUT must only be used for full updates). - - # JSON Encoding of Field Masks - - In JSON, a field mask is encoded as a single string where paths are - separated by a comma. Fields name in each path are converted - to/from lower-camel naming conventions. - - As an example, consider the following message declarations: - - message Profile { - User user = 1; - Photo photo = 2; - } - message User { - string display_name = 1; - string address = 2; - } - - In proto a field mask for `Profile` may look as such: - - mask { - paths: "user.display_name" - paths: "photo" - } - - In JSON, the same mask is represented as below: - - { - mask: "user.displayName,photo" - } - - # Field Masks and Oneof Fields - - Field masks treat fields in oneofs just as regular fields. Consider the - following message: - - message SampleMessage { - oneof test_oneof { - string name = 4; - SubMessage sub_message = 9; - } - } - - The field mask can be: - - mask { - paths: "name" - } - - Or: - - mask { - paths: "sub_message" - } - - Note that oneof type names ("test_oneof" in this case) cannot be used in - paths. - - ## Field Mask Verification - - The implementation of any API method which has a FieldMask type field in the - request should verify the included field paths, and return an - `INVALID_ARGUMENT` error if any path is unmappable. - - - - Field number for the "paths" field. - - - - The set of field mask paths. - - - - - Converts a field mask specified by paths to a string. - - - If the value is a normalized duration in the range described in field_mask.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Paths in the field mask - Determines the handling of non-normalized values - The represented field mask is invalid, and is false. - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - - Parses from a string to a FieldMask. - - - - - Parses from a string to a FieldMask and validates all field paths. - - The type to validate the field paths against. - - - - Constructs a FieldMask for a list of field paths in a certain type. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Constructs a FieldMask from the passed field numbers. - - The type to validate the field paths against. - - - - Checks whether the given path is valid for a field mask. - - true if the path is valid; false otherwise - - - - Checks whether paths in a given fields mask are valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Checks whether a given field path is valid. - - The type to validate the field paths against. - - - - Checks whether paths in a given fields mask are valid. - - - - - Converts this FieldMask to its canonical form. In the canonical form of a - FieldMask, all field paths are sorted alphabetically and redundant field - paths are removed. - - - - - Creates a union of two or more FieldMasks. - - - - - Calculates the intersection of two FieldMasks. - - - - - Merges fields specified by this FieldMask from one message to another with the - specified merge options. - - - - - Merges fields specified by this FieldMask from one message to another. - - - - - Options to customize merging behavior. - - - - - Whether to replace message fields(i.e., discard existing content in - destination message fields) when merging. - Default behavior is to merge the source message field into the - destination message field. - - - - - Whether to replace repeated fields (i.e., discard existing content in - destination repeated fields) when merging. - Default behavior is to append elements from source repeated field to the - destination repeated field. - - - - - Whether to replace primitive (non-repeated and non-message) fields in - destination message fields with the source primitive fields (i.e., if the - field is set in the source, the value is copied to the - destination; if the field is unset in the source, the field is cleared - from the destination) when merging. - - Default behavior is to always set the value of the source primitive - field to the destination primitive field, and if the source field is - unset, the default value of the source field is copied to the - destination. - - - - Holder for reflection information generated from google/protobuf/source_context.proto - - - File descriptor for google/protobuf/source_context.proto - - - - `SourceContext` represents information about the source of a - protobuf element, like the file in which it is defined. - - - - Field number for the "file_name" field. - - - - The path-qualified name of the .proto file that contained the associated - protobuf element. For example: `"google/protobuf/source_context.proto"`. - - - - Holder for reflection information generated from google/protobuf/struct.proto - - - File descriptor for google/protobuf/struct.proto - - - - `NullValue` is a singleton enumeration to represent the null value for the - `Value` type union. - - The JSON representation for `NullValue` is JSON `null`. - - - - - Null value. - - - - - `Struct` represents a structured data value, consisting of fields - which map to dynamically typed values. In some languages, `Struct` - might be supported by a native representation. For example, in - scripting languages like JS a struct is represented as an - object. The details of that representation are described together - with the proto support for the language. - - The JSON representation for `Struct` is JSON object. - - - - Field number for the "fields" field. - - - - Unordered map of dynamically typed values. - - - - - `Value` represents a dynamically typed value which can be either - null, a number, a string, a boolean, a recursive struct value, or a - list of values. A producer of value is expected to set one of these - variants. Absence of any variant indicates an error. - - The JSON representation for `Value` is JSON value. - - - - Field number for the "null_value" field. - - - - Represents a null value. - - - - Gets whether the "null_value" field is set - - - Clears the value of the oneof if it's currently set to "null_value" - - - Field number for the "number_value" field. - - - - Represents a double value. - - - - Gets whether the "number_value" field is set - - - Clears the value of the oneof if it's currently set to "number_value" - - - Field number for the "string_value" field. - - - - Represents a string value. - - - - Gets whether the "string_value" field is set - - - Clears the value of the oneof if it's currently set to "string_value" - - - Field number for the "bool_value" field. - - - - Represents a boolean value. - - - - Gets whether the "bool_value" field is set - - - Clears the value of the oneof if it's currently set to "bool_value" - - - Field number for the "struct_value" field. - - - - Represents a structured value. - - - - Field number for the "list_value" field. - - - - Represents a repeated `Value`. - - - - Enum of possible cases for the "kind" oneof. - - - - Convenience method to create a Value message with a string value. - - Value to set for the StringValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a number value. - - Value to set for the NumberValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a Boolean value. - - Value to set for the BoolValue property. - A newly-created Value message with the given value. - - - - Convenience method to create a Value message with a null initial value. - - A newly-created Value message a null initial value. - - - - Convenience method to create a Value message with an initial list of values. - - The values provided are not cloned; the references are copied directly. - A newly-created Value message an initial list value. - - - - Convenience method to create a Value message with an initial struct value - - The value provided is not cloned; the reference is copied directly. - A newly-created Value message an initial struct value. - - - - `ListValue` is a wrapper around a repeated field of values. - - The JSON representation for `ListValue` is JSON array. - - - - Field number for the "values" field. - - - - Repeated field of dynamically typed values. - - - - - Extension methods on BCL time-related types, converting to protobuf types. - - - - - Converts the given to a . - - The date and time to convert to a timestamp. - The value has a other than Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts the given to a . - - The time span to convert. - The converted duration. - - - Holder for reflection information generated from google/protobuf/timestamp.proto - - - File descriptor for google/protobuf/timestamp.proto - - - - A Timestamp represents a point in time independent of any time zone or local - calendar, encoded as a count of seconds and fractions of seconds at - nanosecond resolution. The count is relative to an epoch at UTC midnight on - January 1, 1970, in the proleptic Gregorian calendar which extends the - Gregorian calendar backwards to year one. - - All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - second table is needed for interpretation, using a [24-hour linear - smear](https://developers.google.com/time/smear). - - The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - restricting to that range, we ensure that we can convert to and from [RFC - 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - - # Examples - - Example 1: Compute Timestamp from POSIX `time()`. - - Timestamp timestamp; - timestamp.set_seconds(time(NULL)); - timestamp.set_nanos(0); - - Example 2: Compute Timestamp from POSIX `gettimeofday()`. - - struct timeval tv; - gettimeofday(&tv, NULL); - - Timestamp timestamp; - timestamp.set_seconds(tv.tv_sec); - timestamp.set_nanos(tv.tv_usec * 1000); - - Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - - FILETIME ft; - GetSystemTimeAsFileTime(&ft); - UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - - // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - Timestamp timestamp; - timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - - Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - - long millis = System.currentTimeMillis(); - - Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - .setNanos((int) ((millis % 1000) * 1000000)).build(); - - Example 5: Compute Timestamp from Java `Instant.now()`. - - Instant now = Instant.now(); - - Timestamp timestamp = - Timestamp.newBuilder().setSeconds(now.getEpochSecond()) - .setNanos(now.getNano()).build(); - - Example 6: Compute Timestamp from current time in Python. - - timestamp = Timestamp() - timestamp.GetCurrentTime() - - # JSON Mapping - - In JSON format, the Timestamp type is encoded as a string in the - [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - where {year} is always expressed using four digits while {month}, {day}, - {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - is required. A proto3 JSON serializer should always use UTC (as indicated by - "Z") when printing the Timestamp type and a proto3 JSON parser should be - able to accept both UTC and other timezones (as indicated by an offset). - - For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - 01:30 UTC on January 15, 2017. - - In JavaScript, one can convert a Date object to this format using the - standard - [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - method. In Python, a standard `datetime.datetime` object can be converted - to this format using - [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - the Joda Time's [`ISODateTimeFormat.dateTime()`]( - http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() - ) to obtain a formatter capable of generating timestamps in this format. - - - - Field number for the "seconds" field. - - - - Represents seconds of UTC time since Unix epoch - 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - 9999-12-31T23:59:59Z inclusive. - - - - Field number for the "nanos" field. - - - - Non-negative fractions of a second at nanosecond resolution. Negative - second values with fractions must still have non-negative nanos values - that count forward in time. Must be from 0 to 999,999,999 - inclusive. - - - - - Returns the difference between one and another, as a . - - The timestamp to subtract from. Must not be null. - The timestamp to subtract. Must not be null. - The difference between the two specified timestamps. - - - - Adds a to a , to obtain another Timestamp. - - The timestamp to add the duration to. Must not be null. - The duration to add. Must not be null. - The result of adding the duration to the timestamp. - - - - Subtracts a from a , to obtain another Timestamp. - - The timestamp to subtract the duration from. Must not be null. - The duration to subtract. - The result of subtracting the duration from the timestamp. - - - - Converts this timestamp into a . - - - The resulting DateTime will always have a Kind of Utc. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTime. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts this timestamp into a . - - - The resulting DateTimeOffset will always have an Offset of zero. - If the timestamp is not a precise number of ticks, it will be truncated towards the start - of time. For example, a timestamp with a value of 99 will result in a - value precisely on a second. - - This timestamp as a DateTimeOffset. - The timestamp contains invalid values; either it is - incorrectly normalized or is outside the valid range. - - - - Converts the specified to a . - - - The Kind of is not DateTimeKind.Utc. - The converted timestamp. - - - - Converts the given to a - - The offset is taken into consideration when converting the value (so the same instant in time - is represented) but is not a separate part of the resulting value. In other words, there is no - roundtrip operation to retrieve the original DateTimeOffset. - The date and time (with UTC offset) to convert to a timestamp. - The converted timestamp. - - - - Converts a timestamp specified in seconds/nanoseconds to a string. - - - If the value is a normalized duration in the range described in timestamp.proto, - is ignored. Otherwise, if the parameter is true, - a JSON object with a warning is returned; if it is false, an is thrown. - - Seconds portion of the duration. - Nanoseconds portion of the duration. - Determines the handling of non-normalized values - The represented duration is invalid, and is false. - - - - Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - Timestamp to compare - an integer indicating whether this timestamp precedes or follows the other - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a precedes b - - - - Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if a follows b - - - - Returns whether two timestamps are equivalent - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps refer to the same nanosecond - - - - Returns whether two timestamps differ - - - Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - - - - true if the two timestamps differ - - - - Returns a string representation of this for diagnostic purposes. - - - Normally the returned value will be a JSON string value (including leading and trailing quotes) but - when the value is non-normalized or out of range, a JSON object representation will be returned - instead, including a warning. This is to avoid exceptions being thrown when trying to - diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - values. - - A string representation of this value. - - - Holder for reflection information generated from google/protobuf/type.proto - - - File descriptor for google/protobuf/type.proto - - - - The syntax in which a protocol buffer element is defined. - - - - - Syntax `proto2`. - - - - - Syntax `proto3`. - - - - - Syntax `editions`. - - - - - A protocol buffer message type. - - - - Field number for the "name" field. - - - - The fully qualified message name. - - - - Field number for the "fields" field. - - - - The list of fields. - - - - Field number for the "oneofs" field. - - - - The list of types appearing in `oneof` definitions in this type. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - Field number for the "edition" field. - - - - The source edition string, only valid when syntax is SYNTAX_EDITIONS. - - - - - A single field of a message type. - - - - Field number for the "kind" field. - - - - The field type. - - - - Field number for the "cardinality" field. - - - - The field cardinality. - - - - Field number for the "number" field. - - - - The field number. - - - - Field number for the "name" field. - - - - The field name. - - - - Field number for the "type_url" field. - - - - The field type URL, without the scheme, for message or enumeration - types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - - - - Field number for the "oneof_index" field. - - - - The index of the field type in `Type.oneofs`, for message or enumeration - types. The first type has index 1; zero means the type is not in the list. - - - - Field number for the "packed" field. - - - - Whether to use alternative packed wire representation. - - - - Field number for the "options" field. - - - - The protocol buffer options. - - - - Field number for the "json_name" field. - - - - The field JSON name. - - - - Field number for the "default_value" field. - - - - The string value of the default value of this field. Proto2 syntax only. - - - - Container for nested types declared in the Field message type. - - - - Basic field types. - - - - - Field type unknown. - - - - - Field type double. - - - - - Field type float. - - - - - Field type int64. - - - - - Field type uint64. - - - - - Field type int32. - - - - - Field type fixed64. - - - - - Field type fixed32. - - - - - Field type bool. - - - - - Field type string. - - - - - Field type group. Proto2 syntax only, and deprecated. - - - - - Field type message. - - - - - Field type bytes. - - - - - Field type uint32. - - - - - Field type enum. - - - - - Field type sfixed32. - - - - - Field type sfixed64. - - - - - Field type sint32. - - - - - Field type sint64. - - - - - Whether a field is optional, required, or repeated. - - - - - For fields with unknown cardinality. - - - - - For optional fields. - - - - - For required fields. Proto2 syntax only. - - - - - For repeated fields. - - - - - Enum type definition. - - - - Field number for the "name" field. - - - - Enum type name. - - - - Field number for the "enumvalue" field. - - - - Enum value definitions. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - Field number for the "source_context" field. - - - - The source context. - - - - Field number for the "syntax" field. - - - - The source syntax. - - - - Field number for the "edition" field. - - - - The source edition string, only valid when syntax is SYNTAX_EDITIONS. - - - - - Enum value definition. - - - - Field number for the "name" field. - - - - Enum value name. - - - - Field number for the "number" field. - - - - Enum value number. - - - - Field number for the "options" field. - - - - Protocol buffer options. - - - - - A protocol buffer option, which can be attached to a message, field, - enumeration, etc. - - - - Field number for the "name" field. - - - - The option's name. For protobuf built-in options (options defined in - descriptor.proto), this is the short name. For example, `"map_entry"`. - For custom options, it should be the fully-qualified name. For example, - `"google.api.http"`. - - - - Field number for the "value" field. - - - - The option's value packed in an Any message. If the value is a primitive, - the corresponding wrapper type defined in google/protobuf/wrappers.proto - should be used. If the value is an enum, it should be stored as an int32 - value using the google.protobuf.Int32Value type. - - - - Holder for reflection information generated from google/protobuf/wrappers.proto - - - File descriptor for google/protobuf/wrappers.proto - - - - Field number for the single "value" field in all wrapper types. - - - - - Wrapper message for `double`. - - The JSON representation for `DoubleValue` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The double value. - - - - - Wrapper message for `float`. - - The JSON representation for `FloatValue` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The float value. - - - - - Wrapper message for `int64`. - - The JSON representation for `Int64Value` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The int64 value. - - - - - Wrapper message for `uint64`. - - The JSON representation for `UInt64Value` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The uint64 value. - - - - - Wrapper message for `int32`. - - The JSON representation for `Int32Value` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The int32 value. - - - - - Wrapper message for `uint32`. - - The JSON representation for `UInt32Value` is JSON number. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The uint32 value. - - - - - Wrapper message for `bool`. - - The JSON representation for `BoolValue` is JSON `true` and `false`. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The bool value. - - - - - Wrapper message for `string`. - - The JSON representation for `StringValue` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The string value. - - - - - Wrapper message for `bytes`. - - The JSON representation for `BytesValue` is JSON string. - - Not recommended for use in new APIs, but still useful for legacy APIs and - has no plan to be removed. - - - - Field number for the "value" field. - - - - The bytes value. - - - - - This class is used internally by the Protocol Buffer Library and generated - message implementations. It is public only for the sake of those generated - messages. Others should not use this class directly. - - This class contains constants and helper functions useful for dealing with - the Protocol Buffer wire format. - - - - - - Wire types within protobuf encoding. - - - - - Variable-length integer. - - - - - A fixed-length 64-bit value. - - - - - A length-delimited value, i.e. a length followed by that many bytes of data. - - - - - A "start group" value - - - - - An "end group" value - - - - - A fixed-length 32-bit value. - - - - - Given a tag value, determines the wire type (lower 3 bits). - - - - - Given a tag value, determines the field number (the upper 29 bits). - - - - - Makes a tag value given a field number and wire type. - - - - - Abstraction for writing to a steam / IBufferWriter - - - - - Initialize an instance with a coded output stream. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer writer. - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Initialize an instance with a buffer represented by a single span (i.e. buffer cannot be refreshed) - This approach is faster than using a constructor because the instance to initialize is passed by reference - and we can write directly into it without copying. - - - - - Verifies that SpaceLeft returns zero. - - - - - If writing to a flat array, returns the space left in the array. Otherwise, - throws an InvalidOperationException. - - - - - An opaque struct that represents the current serialization state and is passed along - as the serialization proceeds. - All the public methods are intended to be invoked only by the generated code, - users should never invoke them directly. - - - - - Creates a WriteContext instance from CodedOutputStream. - WARNING: internally this copies the CodedOutputStream's state, so after done with the WriteContext, - the CodedOutputStream's state needs to be updated. - - - - - Writes a double field value, without a tag. - - The value to write - - - - Writes a float field value, without a tag. - - The value to write - - - - Writes a uint64 field value, without a tag. - - The value to write - - - - Writes an int64 field value, without a tag. - - The value to write - - - - Writes an int32 field value, without a tag. - - The value to write - - - - Writes a fixed64 field value, without a tag. - - The value to write - - - - Writes a fixed32 field value, without a tag. - - The value to write - - - - Writes a bool field value, without a tag. - - The value to write - - - - Writes a string field value, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a message, without a tag. - The data is length-prefixed. - - The value to write - - - - Writes a group, without a tag, to the stream. - - The value to write - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - The value to write - - - - Writes a uint32 value, without a tag. - - The value to write - - - - Writes an enum value, without a tag. - - The value to write - - - - Writes an sfixed32 value, without a tag. - - The value to write. - - - - Writes an sfixed64 value, without a tag. - - The value to write - - - - Writes an sint32 value, without a tag. - - The value to write - - - - Writes an sint64 value, without a tag. - - The value to write - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - Length value, in bytes. - - - - Encodes and writes a tag. - - The number of the field to write the tag for - The wire format type of the tag to write - - - - Writes an already-encoded tag. - - The encoded tag - - - - Writes the given single-byte tag. - - The encoded tag - - - - Writes the given two-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - - - - Writes the given three-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - - - - Writes the given four-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - - - - Writes the given five-byte tag. - - The first byte of the encoded tag - The second byte of the encoded tag - The third byte of the encoded tag - The fourth byte of the encoded tag - The fifth byte of the encoded tag - - - - Primitives for encoding protobuf wire format. - - - - - Writes a double field value, without a tag, to the stream. - - - - - Writes a float field value, without a tag, to the stream. - - - - - Writes a uint64 field value, without a tag, to the stream. - - - - - Writes an int64 field value, without a tag, to the stream. - - - - - Writes an int32 field value, without a tag, to the stream. - - - - - Writes a fixed64 field value, without a tag, to the stream. - - - - - Writes a fixed32 field value, without a tag, to the stream. - - - - - Writes a bool field value, without a tag, to the stream. - - - - - Writes a string field value, without a tag, to the stream. - The data is length-prefixed. - - - - - Given a QWORD which represents a buffer of 4 ASCII chars in machine-endian order, - narrows each WORD to a BYTE, then writes the 4-byte result to the output buffer - also in machine-endian order. - - - - - Write a byte string, without a tag, to the stream. - The data is length-prefixed. - - - - - Writes a uint32 value, without a tag, to the stream. - - - - - Writes an enum value, without a tag, to the stream. - - - - - Writes an sfixed32 value, without a tag, to the stream. - - - - - Writes an sfixed64 value, without a tag, to the stream. - - - - - Writes an sint32 value, without a tag, to the stream. - - - - - Writes an sint64 value, without a tag, to the stream. - - - - - Writes a length (in bytes) for length-delimited data. - - - This method simply writes a rawint, but exists for clarity in calling code. - - - - - Writes a 32 bit value as a varint. The fast route is taken when - there's enough buffer space left to whizz through without checking - for each byte; otherwise, we resort to calling WriteRawByte each time. - - - - - Writes out an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Writes out part of an array of bytes. - - - - - Encodes and writes a tag. - - - - - Writes an already-encoded tag. - - - - - Writes the given single-byte tag directly to the stream. - - - - - Writes the given two-byte tag directly to the stream. - - - - - Writes the given three-byte tag directly to the stream. - - - - - Writes the given four-byte tag directly to the stream. - - - - - Writes the given five-byte tag directly to the stream. - - - - - Encode a 32-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Encode a 64-bit value with ZigZag encoding. - - - ZigZag encodes signed integers into values that can be efficiently - encoded with varint. (Otherwise, negative values must be - sign-extended to 64 bits to be varint encoded, thus always taking - 10 bytes on the wire.) - - - - - Writing messages / groups. - - - - - Writes a message, without a tag. - The data is length-prefixed. - - - - - Writes a group, without a tag. - - - - - Writes a message, without a tag. - Message will be written without a length prefix. - - - - - Indicates that certain members on a specified are accessed dynamically, - for example through . - - - This allows tools to understand which members are being accessed during the execution - of a program. - - This attribute is valid on members whose type is or . - - When this attribute is applied to a location of type , the assumption is - that the string represents a fully qualified type name. - - When this attribute is applied to a class, interface, or struct, the members specified - can be accessed dynamically on instances returned from calling - on instances of that class, interface, or struct. - - If the attribute is applied to a method it's treated as a special case and it implies - the attribute should be applied to the "this" parameter of the method. As such the attribute - should only be used on instance methods of types assignable to System.Type (or string, but no methods - will use it there). - - - - - Initializes a new instance of the class - with the specified member types. - - The types of members dynamically accessed. - - - - Gets the which specifies the type - of members dynamically accessed. - - - - - Specifies the types of members that are dynamically accessed. - - This enumeration has a attribute that allows a - bitwise combination of its member values. - - - - - Specifies no members. - - - - - Specifies the default, parameterless public constructor. - - - - - Specifies all public constructors. - - - - - Specifies all non-public constructors. - - - - - Specifies all public methods. - - - - - Specifies all non-public methods. - - - - - Specifies all public fields. - - - - - Specifies all non-public fields. - - - - - Specifies all public nested types. - - - - - Specifies all non-public nested types. - - - - - Specifies all public properties. - - - - - Specifies all non-public properties. - - - - - Specifies all public events. - - - - - Specifies all non-public events. - - - - - Specifies all interfaces implemented by the type. - - - - - Specifies all members. - - - - - Indicates that the specified method requires dynamic access to code that is not referenced - statically, for example through . - - - This allows tools to understand which methods are unsafe to call when removing unreferenced - code from an application. - - - - - Initializes a new instance of the class - with the specified message. - - - A message that contains information about the usage of unreferenced code. - - - - - Gets a message that contains information about the usage of unreferenced code. - - - - - Gets or sets an optional URL that contains more information about the method, - why it requires unreferenced code, and what options a consumer has to deal with it. - - - - - Suppresses reporting of a specific rule violation, allowing multiple suppressions on a - single code artifact. - - - is different than - in that it doesn't have a - . So it is always preserved in the compiled assembly. - - - - - Initializes a new instance of the - class, specifying the category of the tool and the identifier for an analysis rule. - - The category for the attribute. - The identifier of the analysis rule the attribute applies to. - - - - Gets the category identifying the classification of the attribute. - - - The property describes the tool or tool analysis category - for which a message suppression attribute applies. - - - - - Gets the identifier of the analysis tool rule to be suppressed. - - - Concatenated together, the and - properties form a unique check identifier. - - - - - Gets or sets the scope of the code that is relevant for the attribute. - - - The Scope property is an optional argument that specifies the metadata scope for which - the attribute is relevant. - - - - - Gets or sets a fully qualified path that represents the target of the attribute. - - - The property is an optional argument identifying the analysis target - of the attribute. An example value is "System.IO.Stream.ctor():System.Void". - Because it is fully qualified, it can be long, particularly for targets such as parameters. - The analysis tool user interface should be capable of automatically formatting the parameter. - - - - - Gets or sets an optional argument expanding on exclusion criteria. - - - The property is an optional argument that specifies additional - exclusion where the literal metadata target is not sufficiently precise. For example, - the cannot be applied within a method, - and it may be desirable to suppress a violation against a statement in the method that will - give a rule violation, but not against all statements in the method. - - - - - Gets or sets the justification for suppressing the code analysis message. - - -
-
diff --git a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.Streams.dll b/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.Streams.dll deleted file mode 100644 index 4c68abb..0000000 Binary files a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.Streams.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.Streams.xml b/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.Streams.xml deleted file mode 100644 index 4e02583..0000000 --- a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.Streams.xml +++ /dev/null @@ -1,296 +0,0 @@ - - - - K4os.Compression.LZ4.Streams - - - - - LZ4 Frame descriptor. - - - - Content length. Not always known. - - - Indicates if content checksum is provided. - - - Indicates if blocks are chained (dependent) or not (independent). - - - Indicates if block checksums are provided. - - - Dictionary id. May be null. - - - Block size. - - - - Decoder settings. - - - - Extra memory for decompression. - - - - LZ4 Decompression stream handling. - - - - Creates new instance . - Inner stream. - A function which will create appropriate decoder depending - on frame descriptor. - If true inner stream will not be closed after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of stream. Please note, this will only work if original LZ4 stream has - ContentLength field set in descriptor. Otherwise returned value will be -1. - - - - - Position within the stream. Position can be read, but cannot be set as LZ4 stream does - not have Seek capability. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 encoder settings. - - - - - Content length. It is not enforced, it can be set to any value, but it will be - written to the stream so it can be used while decoding. If you don't know the length - just leave default value. - - - - - Indicates if blocks should be chained (dependent) or not (independent). Dependent blocks - (with chaining) provide better compression ratio but are a little but slower and take - more memory. - - - - - Block size. You can use any block size, but default values for LZ4 are 64k, 256k, 1m, - and 4m. 64k is good enough for dependent blocks, but for independent blocks bigger is - better. - - - - Indicates is content checksum is provided. Not implemented yet. - - - Indicates if block checksum is provided. Not implemented yet. - - - Dictionary id. Not implemented yet. - - - Compression level. - - - Extra memory (for the process, more is usually better). - - - - LZ4 compression stream. - - - - Creates new instance of . - Inner stream. - LZ4 Descriptor. - Function which will take descriptor and return - appropriate encoder. - Indicates if stream should be left - open after disposing. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Length of the stream and number of bytes written so far. - - - Read-only position in the stream. Trying to set it will throw - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - LZ4 frame descriptor. - - - - Content length (if available). - - - Indicates if content checksum if present. - - - Indicates if blocks are chained. - - - Indicates if block checksums are present. - - - Dictionary id (or null). - - - Block size. - - - Creates new instance of . - Content length. - Content checksum flag. - Chaining flag. - Block checksum flag. - Dictionary id. - Block size. - - - - Utility class with factory methods to create LZ4 compression and decompression streams. - - - - Created compression stream on top of inner stream. - Inner stream. - Compression settings. - Leave inner stream open after disposing. - Compression stream. - - - Created compression stream on top of inner stream. - Inner stream. - Compression level. - Extra memory used for compression. - Leave inner stream open after disposing. - Compression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Decompression settings. - Leave inner stream open after disposing. - Decompression stream. - - - Creates decompression stream on top of inner stream. - Inner stream. - Extra memory used for decompression. - Leave inner stream open after disposing. - Decompression stream. - - - diff --git a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.dll b/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.dll deleted file mode 100644 index ea7a325..0000000 Binary files a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.xml b/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.xml deleted file mode 100644 index 9af6341..0000000 --- a/AUTS_UpdateService/bin/Debug/K4os.Compression.LZ4.xml +++ /dev/null @@ -1,794 +0,0 @@ - - - - K4os.Compression.LZ4 - - - - - Action performed by encoder using FlushAndEncode method. - - - - Nothing has happened, most likely loading 0 bytes. - - - Some bytes has been loaded into encoder. - - - Compression was not possible so bytes has been copied. - - - Compression succeeded. - - - - Interface of LZ4 decoder used by LZ4 streams. - - - - Block size. - - - Bytes already decoded and available to be read. - Always smaller than - - - - Decodes previously compressed block and caches decompressed block in decoder. - Returns number of bytes decoded. These bytes can be read with . - - Points to compressed block. - Length of compressed block. - Size of the block. Value 0 indicates default block size. - Number of decoded bytes. - - - - Inject already decompressed block and caches it in decoder. - Used with uncompressed-yet-chained blocks and pre-made dictionaries. - These bytes can be read with . - - Points to uncompressed block. - Length of uncompressed block. - Number of decoded bytes. - - - - Reads previously decoded bytes. Please note, should be - negative number, pointing to bytes before current head. - - Buffer to write to. - Offset in source buffer relatively to current head. - Please note, it should be negative value. - Number of bytes to read. - - - - Interface of LZ4 encoder used by LZ4 streams. - - - - Block size. - - - Number of bytes read for compression. - Always smaller than - - - Adds bytes to internal buffer. Increases - Source buffer. - Source buffer length. - Number of bytes topped up. If this function returns 0 it means that buffer - is full ( equals ) and - should be called to flush it. - - - - Encodes bytes in internal buffer (see: , ). - If is true then if encoded buffer is bigger than - source buffer source bytes are copied instead. In such case returned length is negative. - - Target buffer. - Target buffer length. - Indicates if copying is allowed. - Length of encoded buffer. Negative if bytes are just copied. - - - - LZ4 decoder used with independent blocks mode. Plase note, that it will fail - if input data has been compressed with chained blocks - ( and ) - - - - - - - - - - Creates new instance of block decoder. - Block size. Must be equal or greater to one used for compression. - - - - - - - - - - - - - - - - Independent block encoder. Produces larger files but uses less memory and - gives better performance. - - - - Creates new instance of - Compression level. - Block size. - - - - - - - - - LZ4 decoder handling dependent blocks. - - - Creates new instance of . - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - - - - - - - - Static class with factory methods to create LZ4 decoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Block size. - Number of extra blocks. - LZ4 decoder. - - - - Static class with factory method to create LZ4 encoders. - - - - Creates appropriate decoder for given parameters. - Dependent blocks. - Compression level. - Block size. - Number of extra blocks. - LZ4 encoder. - - - - Base class for LZ4 encoders. Provides basic functionality shared by - , , - and encoders. Do not used directly. - - - - Creates new instance of encoder. - Needs to be true if using dependent blocks. - Block size. - Number of extra blocks. - - - - - - - - - - - - - - - Encodes single block using appropriate algorithm. - Source buffer. - Source buffer length. - Target buffer. - Target buffer length. - Number of bytes actually written to target buffer. - - - Copies current dictionary. - Target buffer. - Dictionary length. - Dictionary length. - - - - - - - Functionality of encoders added on top of fixed interface. - - - - Tops encoder up with some data. - Encoder. - Buffer pointer, will be shifted after operation by the number of - bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset. - Length of buffer. - Number of bytes actually loaded. - - - Tops encoder up with some data. - Encoder. - Buffer. - Buffer offset, will be increased after operation by the number - of bytes actually loaded. - Length of buffer. - true if buffer was topped up, false if no bytes were loaded. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. - Length of target buffer. - if true copying bytes is allowed. - Number of bytes encoder. If bytes were copied than this value is negative. - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. - Offset in target buffer. Will be updated after operation. - Length of target buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Encodes all bytes currently stored in encoder into target buffer. - Encoder. - Target buffer. Will be updated after operation. - Length of buffer. - if true copying bytes is allowed. - Result of this action. Bytes can be Copied (), - Encoded () or nothing could have - happened (). - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Source buffer length. - Target buffer (used to encode into) - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Tops encoder and encodes content. - Encoder. - Source buffer (used to top up from). - Offset within source buffer. - Source buffer length. - Target buffer (used to encode into) - Offset within target buffer. - Target buffer length. - Forces encoding even if encoder is not full. - Allows to copy bytes if compression was not possible. - Number of bytes loaded (topped up) - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Encoded remaining bytes in encoder. - Encoder. - Target buffer. - Offset within target buffer. - Target buffer length. - Allows to copy bytes if compression was not possible. - Number if bytes encoded or copied. - Value is 0 if no encoding was done. - Action performed. - - - Drains decoder by reading all bytes which are ready. - Decoder. - Target buffer. - Offset within target buffer. - Offset in decoder relatively to decoder's head. - Please note, it should be negative value. - Number of bytes. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Source buffer length. - Target buffer (to drained into). - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - Decodes data and immediately drains it into target buffer. - Decoder. - Source buffer (with compressed data, to be decoded). - Offset within source buffer. - Source buffer length. - Target buffer (to drained into). - Offset within target buffer. - Target buffer length. - Number of bytes actually decoded. - true decoder was drained, false otherwise. - - - - LZ4 encoder using dependent blocks with fast compression. - - - - Creates new instance of - Block size. - Number of extra blocks. - - - - - - - - - - - - - LZ4 encoder using dependent blocks with high compression. - - - - Creates new instance of - Compression level. - Block size. - Number of extra blocks. - - - - - - - - - - - - Utility class with memory related functions. - - - 1 KiB - - - 2 KiB - - - 4 KiB - - - 8 KiB - - - 16 KiB - - - 32 KiB - - - 64 KiB - - - 128 KiB - - - 256 KiB - - - 512 KiB - - - 1 MiB - - - 4 MiB - - - Empty byte array. - - - Rounds integer value up to nearest multiple of step. - A value. - A step. - Value rounded up. - - - - Copies memory block for to . - Even though it is called "copy" it actually behaves like "move" which - might be potential problem, although it shouldn't as I cannot think about - any situation when "copy" invalid behaviour (forward copy of overlapping blocks) - can be a desired. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to . - It handle "move" semantic properly handling overlapping blocks properly. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block for to - up to (around) . - It does not handle overlapping blocks and may copy up to 8 bytes more than expected. - - The target block address. - The source block address. - The limit (in target block). - - - Fill block of memory with zeroes. - Address. - Length. - - - Fills memory block with repeating pattern of a single byte. - Address. - A pattern. - Length. - - - - Copies memory block for to . - This is proper implementation of memcpy (with all then weird behaviour for - overlapping blocks). It is slower than "Copy" but may be required if "Copy" - causes problems. - - The target block address. - The source block address. - Length in bytes. - - - - Copies memory block backwards from to . - This is needed to implement memmove It is slower than "Move" but is needed for .NET 4.5, - which does not implement Buffer.MemoryCopy. - - The target block address. - The source block address. - Length in bytes. - - - - Moves memory block for to . - It handles overlapping block properly. - - The target block address. - The source block address. - Length in bytes. - - - Copies exactly 8 bytes from source to target. - Target address. - Source address. - - - Copies exactly 16 bytes from source to target. - Target address. - Source address. - - - Copies exactly 18 bytes from source to target. - Target address. - Source address. - - - Allocated block of memory. It is NOT initialized with zeroes. - Size in bytes. - Pointer to allocated block. - - - Allocated block of memory and fills it with zeroes. - Size in bytes. - Pointer to allocated block. - - - - Free memory allocated previously with or - - - - - Reads exactly 1 byte from given address. - Address. - Byte at given address. - - - Reads exactly 2 bytes from given address. - Address. - 2 bytes at given address. - - - Reads exactly 4 bytes from given address. - Address. - 4 bytes at given address. - - - Reads exactly 8 bytes from given address. - Address. - 8 bytes at given address. - - - Writes exactly 1 byte to given address. - Address. - Value. - - - Writes exactly 2 bytes to given address. - Address. - Value. - - - Writes exactly 4 bytes to given address. - Address. - Value. - - - Writes exactly 8 bytes to given address. - Address. - Value. - - - - Skeleton for class with unmanaged resources. - Implements but also handles proper release in - case was not called. - - - - Determines if object was already disposed. - - - Throws exception is object has been disposed already. Convenience method. - Thrown if object is already disposed. - - - Method releasing unmanaged resources. - - - Method releasing managed resources. - - - - Disposed resources. - - true if dispose was explicitly called, - false if called from GC. - - - - - - Destructor. - - - - Static class exposing LZ4 block compression methods. - - - - Maximum size after compression. - Length of input buffer. - Maximum length after compression. - - - Compresses data from one buffer into another. - Input buffer. - Length of input buffer. - Output buffer. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Output buffer. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Compresses data from one buffer into another. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Compression level. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer length. - Output buffer. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Output buffer. - Number of bytes written, or negative value if output buffer is too small. - - - Decompresses data from given buffer. - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - Output buffer offset. - Output buffer length. - Number of bytes written, or negative value if output buffer is too small. - - - Compression level. - - - Fast compression. - - - High compression, level 3. - - - High compression, level 4. - - - High compression, level 5. - - - High compression, level 6. - - - High compression, level 7. - - - High compression, level 8. - - - High compression, level 9. - - - Optimal compression, level 10. - - - Optimal compression, level 11. - - - Maximum compression, level 12. - - - - Pickling support with LZ4 compression. - - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Input buffer offset. - Input buffer length. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Compression level. - Output buffer. - - - Compresses input buffer into self-contained package. - Input buffer. - Length of input data. - Compression level. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer offset. - Input buffer length. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Output buffer. - - - Decompresses previously pickled buffer (see: . - Input buffer. - Input buffer length. - Output buffer. - - - diff --git a/AUTS_UpdateService/bin/Debug/K4os.Hash.xxHash.dll b/AUTS_UpdateService/bin/Debug/K4os.Hash.xxHash.dll deleted file mode 100644 index b4cb8d9..0000000 Binary files a/AUTS_UpdateService/bin/Debug/K4os.Hash.xxHash.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/K4os.Hash.xxHash.xml b/AUTS_UpdateService/bin/Debug/K4os.Hash.xxHash.xml deleted file mode 100644 index 2b84147..0000000 --- a/AUTS_UpdateService/bin/Debug/K4os.Hash.xxHash.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - - K4os.Hash.xxHash - - - - - Adapter implementing - - - - - Creates new . - - Hash size (in bytes) - Reset function. - Update function. - Digest function. - - - - - - - - - - - - - - - - - - - Base class for both and . Do not use directly. - - - - Protected constructor to prevent instantiation. - - - - xxHash 32-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - - xxHash 64-bit. - - - - Hash of empty buffer. - - - Hash of provided buffer. - Buffer. - Length of buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Digest. - - - Hash of provided buffer. - Buffer. - Starting offset. - Length of buffer. - Digest. - - - Creates xxHash instance. - - - Resets hash calculation. - - - Updates the has using given buffer. - Buffer. - Length of buffer. - - - Updates the has using given buffer. - Buffer. - - - Updates the has using given buffer. - Buffer. - Starting offset. - Length of buffer. - - - Hash so far. - Hash so far. - - - Hash so far, as byte array. - Hash so far. - - - Converts this class to - - - - diff --git a/AUTS_UpdateService/bin/Debug/MySql.Data.dll b/AUTS_UpdateService/bin/Debug/MySql.Data.dll deleted file mode 100644 index eb11cd9..0000000 Binary files a/AUTS_UpdateService/bin/Debug/MySql.Data.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/MySql.Data.xml b/AUTS_UpdateService/bin/Debug/MySql.Data.xml deleted file mode 100644 index 09316cf..0000000 --- a/AUTS_UpdateService/bin/Debug/MySql.Data.xml +++ /dev/null @@ -1,18808 +0,0 @@ - - - - MySql.Data - - - - - The implementation of the caching_sha2_password authentication plugin. - - - - - Generates a byte array set with the password of the user in the expected format based on the - SSL settings of the current connection. - - A byte array that contains the password of the user in the expected format. - - - - Defines the stage of the authentication. - - - - - Allows connections to a user account set with the mysql_clear_password authentication plugin. - - - - - The GSSAPI mechanism. - - - - - Obtain credentials to be used to create a security context - - username - password - host - - - - Processes the challenge data. - - A byte array containing the challenge data from the server - A byte array containing the response to be sent to the server - - - - Security context already established. - - A byte array containing the challenge data from the server - A non-null byte array containing the response to be sent to the server - - - - Enables connections to a user account set with the authentication_kerberos authentication plugin. - - - - - Defines the default behavior for an authentication plugin. - - - - - Gets or sets the authentication data returned by the server. - - - - - This is a factory method that is used only internally. It creates an auth plugin based on the method type - - - - - - - - - Gets the connection option settings. - - - - - Gets the server version associated with this authentication plugin. - - - - - Gets the encoding assigned to the native driver. - - - - - Sets the authentication data required to encode, encrypt, or convert the password of the user. - - A byte array containing the authentication data provided by the server. - This method may be overriden based on the requirements by the implementing authentication plugin. - - - - Defines the behavior when checking for constraints. - - This method is intended to be overriden. - - - - Throws a that encapsulates the original exception. - - The exception to encapsulate. - - - - Defines the behavior when authentication is successful. - - This method is intended to be overriden. - - - - Defines the behavior when more data is required from the server. - - The data returned by the server. - The data to return to the server. - This method is intended to be overriden. - - - - Gets the plugin name based on the authentication plugin type defined during the creation of this object. - - - - - Gets the user name associated to the connection settings. - - The user name associated to the connection settings. - - - - Gets the encoded, encrypted, or converted password based on the authentication plugin type defined during the creation of this object. - This method is intended to be overriden. - - An object containing the encoded, encrypted, or converted password. - - - - Provides functionality to read, decode and convert PEM files to objects supported in .NET. - - - - - Converts the binary data of a PEM file to an object. - - A binary representation of the public key provided by the server. - An object containing the data found in the public key. - - - - Allows connections to a user account set with the authentication_ldap_sasl authentication plugin. - - - - - Determines if the character is a non-ASCII space. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.1.2 - - true if the character is a non-ASCII space; otherwise, false. - The character. - - - - Determines if the character is commonly mapped to nothing. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-B.1 - - true if the character is commonly mapped to nothing; otherwise, false. - The character. - - - - Determines if the character is prohibited. - - - This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.3 - - true if the character is prohibited; otherwise, false. - The string. - The character index. - - - - Prepares the user name or password string. - - The string to prepare. - The prepared string. - - - - Allows connections to a user account set with the mysql_native_password authentication plugin. - - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Base class to handle SCRAM authentication methods - - - - - Defines the state of the authentication process. - - - - - Gets the name of the method. - - - - - Parses the server's challenge token and returns the next challenge response. - - The next challenge response. - - - - Builds up the client-first message. - - An array of bytes containig the client-first message. - - - - Processes the server response from the client-first message and - builds up the client-final message. - - Response from the server. - An array of bytes containing the client-final message. - - - - Validates the server response. - - Server-final message - - - - Creates the HMAC SHA1 context. - - The HMAC context. - The secret key. - - - - Apply the HMAC keyed algorithm. - - The results of the HMAC keyed algorithm. - The key. - The string. - - - - Applies the cryptographic hash function. - - The results of the hash. - The string. - - - - Applies the exclusive-or operation to combine two octet strings. - - The alpha component. - The blue component. - - - - The SCRAM-SHA-1 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-1 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-1 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The SCRAM-SHA-256 SASL mechanism. - - - A salted challenge/response SASL mechanism that uses the HMAC SHA-256 algorithm. - - - - - Initializes a new instance of the class. - - - Creates a new SCRAM-SHA-256 SASL context. - - The user name. - The password. - The host. - - - - Gets the name of the method. - - - - - The implementation of the sha256_password authentication plugin. - - - - - The byte array representation of the public key provided by the server. - - - - - Applies XOR to the byte arrays provided as input. - - A byte array that contains the results of the XOR operation. - - - - - - - - - Defines the type of the security buffer. - - - - - Defines a security handle. - - - - - Describes a buffer allocated by a transport to pass to a security package. - - - - - Specifies the size, in bytes, of the buffer. - - - - - Bit flags that indicate the type of the buffer. - - - - - Pointer to a buffer. - - - - - Hold a numeric value used in defining other data types. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Holds a pointer used to define a security handle. - - - - - Least significant digits. - - - - - Most significant digits. - - - - - Indicates the sizes of important structures used in the message support functions. - - - - - Specifies the maximum size of the security token used in the authentication changes. - - - - - Specifies the maximum size of the signature created by the MakeSignature function. - This member must be zero if integrity services are not requested or available. - - - - - Specifies the preferred integral size of the messages. - - - - - Size of the security trailer to be appended to messages. - This member should be zero if the relevant services are not requested or available. - - - - - Allows importing large amounts of data into a database with bulk loading. - - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the field terminator. - - The field terminator. - - - - Gets or sets the line terminator. - - The line terminator. - - - - Gets or sets the name of the table. - - The name of the table. - - - - Gets or sets the character set. - - The character set. - - - - Gets or sets the name of the file. - - The name of the file. - - - - Gets or sets the timeout. - - The timeout. - - - - Gets or sets a value indicating whether the file name that is to be loaded - is local to the client or not. The default value is false. - - true if local; otherwise, false. - - - - Gets or sets the number of lines to skip. - - The number of lines to skip. - - - - Gets or sets the line prefix. - - The line prefix. - - - - Gets or sets the field quotation character. - - The field quotation character. - - - - Gets or sets a value indicating whether [field quotation optional]. - - - true if [field quotation optional]; otherwise, false. - - - - - Gets or sets the escape character. - - The escape character. - - - - Gets or sets the conflict option. - - The conflict option. - - - - Gets or sets the priority. - - The priority. - - - - Gets the columns. - - The columns. - - - - Gets the expressions. - - The expressions. - - - - Executes the load operation. - - The number of rows inserted. - - - - Asynchronous version of the load operation. - - The number of rows inserted. - - - - Executes the load operation asynchronously while the cancellation isn't requested. - - The cancellation token. - The number of rows inserted. - - - - Represents the priority set for bulk loading operations. - - - - - This is the default and indicates normal priority - - - - - Low priority will cause the load operation to wait until all readers of the table - have finished. This only affects storage engines that use only table-level locking - such as MyISAM, Memory, and Merge. - - - - - Concurrent priority is only relevant for MyISAM tables and signals that if the table - has no free blocks in the middle that other readers can retrieve data from the table - while the load operation is happening. - - - - - Represents the behavior when conflicts arise during bulk loading operations. - - - - - This is the default and indicates normal operation. In the event of a LOCAL load, this - is the same as ignore. When the data file is on the server, then a key conflict will - cause an error to be thrown and the rest of the data file ignored. - - - - - Replace column values when a key conflict occurs. - - - - - Ignore any rows where the primary key conflicts. - - - - - Summary description for CharSetMap. - - - - - Returns the text encoding for a given MySQL character set name - - Version of the connection requesting the encoding - Name of the character set to get the encoding for - Encoding object for the given character set name - - - - Initializes the mapping. - - - - - Represents a character set object. - - - - Represents a SQL statement to execute against a MySQL database. This class cannot be inherited. - The object includes the following methods for executing commands at a MySQL database: - - - Item - Description - - - - - - Executes commands that return rows. - - - - - - Executes commands such as SQL INSERT, DELETE, and UPDATE statements. - - - - - - Retrieves a single value (for example, an aggregate value) from a database. - - - - You can reset the property and reuse the - object. However, you must close the object before you can execute a new or previous command. - - If an exception of type is generated by the method executing , - the instance remains open. It is the responsibility of the programmer to close the connection. - - - Using the '@' symbol for paramters is now the preferred approach although the old pattern of using - '?' is still supported. Please be aware that using '@' can cause conflicts when user variables - are also used. For more information, see the documentation on the AllowUserVariables connection string option. - - - The following example creates an instance each of and . - The object opens a connection and then is set as the - property for the . The example then calls the method, - passes to it a connection string and a query string that consists of a SQL INSERT statement, and closes the connection. - - Public Sub InsertRow(myConnectionString As String) - " If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - - Initializes a new instance of the MySqlCommand class. - - - The following example creates a MySqlCommand and sets some of its properties. - - - This example shows how to use one of the overloaded - versions of the MySqlCommand constructor. For other examples that might be available, - see the individual overload topics. - - - - Public Sub CreateMySqlCommand() - Dim myConnection As New MySqlConnection _ - ("Persist Security Info=False;database=test;server=myServer") - myConnection.Open() - Dim myTrans As MySqlTransaction = myConnection.BeginTransaction() - Dim mySelectQuery As String = "SELECT * FROM MyTable" - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection, myTrans) - myCommand.CommandTimeout = 20 - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection myConnection = new MySqlConnection("Persist Security Info=False; - database=test;server=myServer"); - myConnection.Open(); - MySqlTransaction myTrans = myConnection.BeginTransaction(); - string mySelectQuery = "SELECT * FROM myTable"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection,myTrans); - myCommand.CommandTimeout = 20; - } - - - public: - void CreateMySqlCommand() - { - MySqlConnection* myConnection = new MySqlConnection(S"Persist Security Info=False; - database=test;server=myServer"); - myConnection->Open(); - MySqlTransaction* myTrans = myConnection->BeginTransaction(); - String* mySelectQuery = S"SELECT * FROM myTable"; - MySqlCommand* myCommand = new MySqlCommand(mySelectQuery, myConnection, myTrans); - myCommand->CommandTimeout = 20; - }; - - - - Initializes a new instance of the MySqlCommand class. - - The base constructor initializes all fields to their default values. The - following table shows initial property values for an instance of . - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class with the text of the query. - The text of the query. - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - Null - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query and a . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Initializes a new instance of the class - with the text of the query, a , and the - . - The text of the query. - A that represents the - connection to an instance of SQL Server. - - The in which the executes. - - When an instance of is created, - the following read/write properties are set to initial values. - - - - Properties - Initial Value - - - - - - - cmdText - - - - - - - 0 - - - - - - CommandType.Text - - - - - - - connection - - - - - You can change the value for any of these properties through a separate call to - the property. - - - The following example creates a and - sets some of its properties. - - - Public Sub CreateMySqlCommand() - Dim conn as new MySqlConnection("server=myServer") - conn.Open(); - Dim txn as MySqlTransaction = conn.BeginTransaction() - Dim sql as String = "SELECT * FROM mytable" - Dim myCommand As New MySqlCommand(sql, conn, txn) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlConnection conn = new MySqlConnection("server=myserver") - conn.Open(); - MySqlTransaction txn = conn.BeginTransaction(); - string sql = "SELECT * FROM mytable"; - MySqlCommand myCommand = new MySqlCommand(sql, conn, txn); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the last inserted id. - - - - - - Gets or sets the SQL statement to execute at the data source. - - The SQL statement or stored procedure to execute. The default is an empty string. - - - When the property is set to , - the property should be set to the name of the stored procedure. - The user may be required to use escape character syntax if the stored procedure name - contains any special characters. The command executes this stored procedure when - you call one of the execute methods. In Connector/NET 8.0 (and previous versions), having both a stored function - and stored procedure with the same name in the same database is not supported. It is - suggested that you provide unqiue names for your stored routines. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandText = "SELECT * FROM Mytable ORDER BY id" - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandText = "SELECT * FROM mytable ORDER BY id"; - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets or sets the wait time before terminating the attempt to execute a command - and generating an error. - - The time (in seconds) to wait for the command to execute. The default is 30 - seconds. - - CommandTimeout is dependent on the ability of MySQL to cancel an executing query. - Because of this, CommandTimeout is only supported when connected to MySQL - version 5.0.0 or higher. - - - - - Gets or sets a value indicating how the property is to be interpreted. - - One of the values. - The default is . - - - When you set the property to , you - should set the property to the name of the stored - procedure. The command executes this stored procedure when you call one of the - execute methods. - - - The following example creates an instance of and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim myCommand As New MySqlCommand() - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets a boolean value that indicates whether the Prepared method has been called. - - - - - - Gets or sets the object used by this instance of the - . - - The connection to a data source. The default value is a null reference - (Nothing in Visual Basic). - - - If you set Connection while a transaction is in progress and the - property is not null, an - is generated. If the Transaction property is not null and the transaction - has already been committed or rolled back, Transaction is set to - null. - - - The following example creates a and sets some of its properties. - - Public Sub CreateMySqlCommand() - Dim mySelectQuery As String = "SELECT * FROM mytable ORDER BY id" - Dim myConnectString As String = "Persist Security Info=False;database=test;server=myServer" - Dim myCommand As New MySqlCommand(mySelectQuery) - myCommand.Connection = New MySqlConnection(myConnectString) - myCommand.CommandType = CommandType.Text - End Sub - - - public void CreateMySqlCommand() - { - string mySelectQuery = "SELECT * FROM mytable ORDER BY id"; - string myConnectString = "Persist Security Info=False;database=test;server=myServer"; - MySqlCommand myCommand = new MySqlCommand(mySelectQuery); - myCommand.Connection = new MySqlConnection(myConnectString); - myCommand.CommandType = CommandType.Text; - } - - - - - - Gets the object. - - The parameters of the SQL statement or stored procedure. The default is - an empty collection. - - Connector/NET does not support unnamed parameters. Every parameter added to the collection must - have an associated name. - - Parameters can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and displays its parameters. - To accomplish this, the method is passed a , a query string - that is a SQL SELECT statement, and an array of objects. - - Public Sub CreateMySqlCommand(myConnection As MySqlConnection, _ - mySelectQuery As String, myParamArray() As MySqlParameter) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age" - myCommand.UpdatedRowSource = UpdateRowSource.Both - myCommand.Parameters.Add(myParamArray) - Dim j As Integer - For j = 0 To myCommand.Parameters.Count - 1 - myCommand.Parameters.Add(myParamArray(j)) - Next j - Dim myMessage As String = "" - Dim i As Integer - For i = 0 To myCommand.Parameters.Count - 1 - myMessage += myCommand.Parameters(i).ToString() & ControlChars.Cr - Next i - Console.WriteLine(myMessage) - End Sub - - - public void CreateMySqlCommand(MySqlConnection myConnection, string mySelectQuery, - MySqlParameter[] myParamArray) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age"; - myCommand.Parameters.Add(myParamArray); - for (int j=0; j<myParamArray.Length; j++) - { - myCommand.Parameters.Add(myParamArray[j]) ; - } - string myMessage = ""; - for (int i = 0; i < myCommand.Parameters.Count; i++) - { - myMessage += myCommand.Parameters[i].ToString() + "\n"; - } - MessageBox.Show(myMessage); - } - - - - - - Gets the object. - - The query attributes defined for the statement. The default is an empty collection. - - Connector/NET does not support unnamed query attributes. Every query attribute added to the collection must - have an associated name. - - Query Attributes can be used along with . There are no restrictions in this regard. - - The following example creates an instance of and also a couple of - to be added later to the . Then, it prints out the values of . - - Public Sub CreateMySqlCommandWithQueryAttributes(ByVal myConnection As MySqlConnection) - Dim myCommand As MySqlCommand = New MySqlCommand() - myCommand.Connection = myConnection - Dim mySqlAttribute As MySqlAttribute = New MySqlAttribute("qa1", "qaValue") - Dim mySqlAttribute2 As MySqlAttribute = New MySqlAttribute("qa2", 2) - myCommand.Attributes.SetAttribute(mySqlAttribute) - myCommand.Attributes.SetAttribute(mySqlAttribute2) - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," & - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2" - - Using reader = myCommand.ExecuteReader() - While reader.Read() - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}") - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}") - End While - End Using - End Sub - - - public void CreateMySqlCommandWithQueryAttributes(MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(); - myCommand.Connection = myConnection; - - MySqlAttribute mySqlAttribute = new MySqlAttribute("qa1", "qaValue"); - MySqlAttribute mySqlAttribute2 = new MySqlAttribute("qa2", 2); - - myCommand.Attributes.SetAttribute(mySqlAttribute); - myCommand.Attributes.SetAttribute(mySqlAttribute2); - - myCommand.CommandText = $"SELECT mysql_query_attribute_string('{mySqlAttribute.AttributeName}') AS attr1," + - $"mysql_query_attribute_string('{mySqlAttribute2.AttributeName}') AS attr2"; - - using (var reader = myCommand.ExecuteReader()) - { - while (reader.Read()) - { - Console.WriteLine($"Attribute1 Value: {reader.GetString(0)}"); - Console.WriteLine($"Attribute1 Value: {reader.GetString(1)}"); - } - } - } - - - - - - Gets or sets the instance of within which executes. - - The . The default value is a null reference (Nothing in Visual Basic). - - You cannot set the Transaction property if it is already set to a - specific value, and the command is in the process of executing. If you set the - transaction to use a object that is not connected - to the same as the object, - an exception will be thrown the next time you attempt to execute a statement. - - - - - Gets or sets a boolean value that indicates whether caching is enabled. - - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - - - - Gets or sets how command results are applied to the DataRow when used by the - Update method of the DbDataAdapter. - - - - - Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control. - - - - - Attempts to cancel the execution of a currently active command - - - Cancelling a currently active query only works with MySQL versions 5.0.0 and higher. - - - - - Creates a new instance of a object. - - - This method is a strongly-typed version of . - - A object. - - - - - Check the connection to make sure - - it is open - - it is not currently being used by a reader - - and we have the right version of MySQL for the requested command type - - - - - Executes a SQL statement against the connection and returns the number of rows affected. - Number of rows affected - You can use ExecuteNonQuery to perform any type of database operation, - however any resultsets returned will not be available. Any output parameters - used in calling a stored procedure will be populated with data and can be - retrieved after execution is complete. - For UPDATE, INSERT, and DELETE statements, the return value is the number - of rows affected by the command. For all other types of statements, the return - value is -1. - - The following example creates a MySqlCommand and then - executes it using ExecuteNonQuery. The example is passed a string that is a - SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to - connect to the data source. - - Public Sub CreateMySqlCommand(myExecuteQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myExecuteQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteNonQuery() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteNonQuery(); - myConnection.Close(); - } - - - - - - Reset reader to null, to avoid "There is already an open data reader" - on the next ExecuteReader(). Used in error handling scenarios. - - - - - Reset SQL_SELECT_LIMIT that could have been modified by CommandBehavior. - - - - - Sends the value to - and builds a object. - - A object. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of MySqlDataReader is called. - - - The following example creates an instance of , then executes it by - passing a string that is a SQL SELECT statement, and a string to use to connect to the - data source. - - Public Sub CreateMySqlDataReader(mySelectQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - Try - While myReader.Read() - Console.WriteLine(myReader.GetString(0)) - End While - Finally - myReader.Close - myConnection.Close - End Try - End Sub - - - public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection); - myConnection.Open(); - MMySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - try - { - while(myReader.Read()) - { - Console.WriteLine(myReader.GetString(0)); - } - } - finally - { - myReader.Close(); - myConnection.Close(); - } - } - - - - - - Sends the to the Connection, - and builds a using one of the values. - - One of the values. - - - When the property is set to StoredProcedure, - the property should be set to the name of the stored - procedure. The command executes this stored procedure when you call - ExecuteReader. - - - The supports a special mode that enables large binary - values to be read efficiently. For more information, see the SequentialAccess - setting for . - - - While is in use, the associated - instance of is busy serving it - and no other operations can be performed on , other than closing it. - This is the case until the method of the MySqlDataReader is called. - If the MySqlDataReader object is created with CommandBehavior set to - CloseConnection, closing the MySqlDataReader instance closes the connection - automatically. - - - When calling ExecuteReader with the SingleRow behavior, you should be aware that using a limit - clause in your SQL will cause all rows (up to the limit given) to be retrieved by the client. The - method will still return false after the first row but pulling all rows of data - into the client will have a performance impact. If the limit clause is not necessary, it should - be avoided. - - - A object. - - - - - Executes the query, and returns the first column of the first row in the - result set returned by the query. Extra columns or rows are ignored. - - The first column of the first row in the result set, or a null reference if the - result set is empty - - - Use the ExecuteScalar method to retrieve a single value (for example, - an aggregate value) from a database. This requires less code than using the - method, and then performing the operations necessary - to generate the single value using the data returned by a - - - The following example creates a and then - executes it using ExecuteScalar. The example is passed a string that is a - SQL statement that returns an aggregate result, and a string to use to - connect to the data source. - - - Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As MySqlConnection) - Dim myCommand As New MySqlCommand(myScalarQuery, myConnection) - myCommand.Connection.Open() - myCommand.ExecuteScalar() - myConnection.Close() - End Sub - - - public void CreateMySqlCommand(string myScalarQuery, MySqlConnection myConnection) - { - MySqlCommand myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand.Connection.Open(); - myCommand.ExecuteScalar(); - myConnection.Close(); - } - - - public: - void CreateMySqlCommand(String* myScalarQuery, MySqlConnection* myConnection) - { - MySqlCommand* myCommand = new MySqlCommand(myScalarQuery, myConnection); - myCommand->Connection->Open(); - myCommand->ExecuteScalar(); - myConnection->Close(); - } - - - - - - - - - - Creates a prepared version of the command on an instance of MySQL Server. - - - Prepared statements are only supported on MySQL version 4.1 and higher. Calling - prepare while connected to earlier versions of MySQL will succeed but will execute - the statement in the same way as unprepared. - - - The following example demonstrates the use of the Prepare method. - - public sub PrepareExample() - Dim cmd as New MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection) - cmd.Parameters.Add( "@val", 10 ) - cmd.Prepare() - cmd.ExecuteNonQuery() - - cmd.Parameters(0).Value = 20 - cmd.ExecuteNonQuery() - end sub - - - private void PrepareExample() - { - MySqlCommand cmd = new MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection); - cmd.Parameters.Add( "@val", 10 ); - cmd.Prepare(); - cmd.ExecuteNonQuery(); - - cmd.Parameters[0].Value = 20; - cmd.ExecuteNonQuery(); - } - - - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this , and retrieves one or more - result sets from the server. - - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this using one of the - CommandBehavior values. - - One of the values, indicating - options for statement execution and data retrieval. - An that can be used to poll, wait for results, - or both; this value is also needed when invoking EndExecuteReader, - which returns a instance that can be used to retrieve - the returned rows. - - - - Finishes asynchronous execution of a SQL statement, returning the requested - . - - The returned by the call to - . - A MySqlDataReader object that can be used to retrieve the requested rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - - An delegate that is invoked when the command's - execution has completed. Pass a null reference (Nothing in Visual Basic) - to indicate that no callback is required. - A user-defined state object that is passed to the - callback procedure. Retrieve this object from within the callback procedure - using the property. - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Initiates the asynchronous execution of the SQL statement or stored procedure - that is described by this . - - An that can be used to poll or wait for results, - or both; this value is also needed when invoking , - which returns the number of affected rows. - - - - Finishes asynchronous execution of a SQL statement. - - The returned by the call - to . - - - - - Verifies if a query is valid even if it has not spaces or is a stored procedure call - - Query to validate - If it is necessary to add call statement - - - - Creates a clone of this object. CommandText, Connection, and Transaction properties - are included as well as the entire parameter list. - - The cloned object. - - - - Summary description for API. - - - - - Summary description for CompressedStream. - - - - - Represents an open connection to a MySQL Server database. This class cannot be inherited. - - - A MySqlConnection object represents a session to a MySQL Server - data source. When you create an instance of MySqlConnection, all - properties are set to their initial values. For a list of these values, see the - MySqlConnection constructor. - - - - If the MySqlConnection goes out of scope, it is not closed. Therefore, - you must explicitly close the connection by calling - or . - - - The following example creates a and - a MySqlConnection. The MySqlConnection is opened and set as the - for the MySqlCommand. The example then calls - , and closes the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - - Public Sub InsertRow(myConnectionString As String) - ' If the connection string is null, use a default. - If myConnectionString = "" Then - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass" - End If - Dim myConnection As New MySqlConnection(myConnectionString) - Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)" - Dim myCommand As New MySqlCommand(myInsertQuery) - myCommand.Connection = myConnection - myConnection.Open() - myCommand.ExecuteNonQuery() - myCommand.Connection.Close() - End Sub - - - - - public void InsertRow(string myConnectionString) - { - // If the connection string is null, use a default. - if(myConnectionString == "") - { - myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"; - } - MySqlConnection myConnection = new MySqlConnection(myConnectionString); - string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"; - MySqlCommand myCommand = new MySqlCommand(myInsertQuery); - myCommand.Connection = myConnection; - myConnection.Open(); - myCommand.ExecuteNonQuery(); - myCommand.Connection.Close(); - } - - - - - - Occurs when MySQL returns warnings as a result of executing a command or query. - - - - - Initializes a new instance of the class. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class when given a string containing the connection string. - - When a new instance of is created, the read/write - properties are set to the following initial values unless they are specifically - set using their associated keywords in the property. - - - - Properties - Initial Value - - - - - - empty string ("") - - - - - - 15 - - - - - - empty string ("") - - - - - - empty string ("") - - - - - - empty string ("") - - - - You can change the value for these properties only by using the ConnectionString property. - - - The connection properties used to open the MySQL database. - - - - - Determines whether the connection is a clone of other connection. - - - - - Returns the id of the server thread this connection is executing on - - - - - Gets the name of the MySQL server to which to connect. - - - - - Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error. - The value set is less than 0. - A value of 0 indicates no limit, and should be avoided in a - because an attempt to connect - will wait indefinitely. - - The following example creates a MySqlConnection - and sets some of its properties in the connection string. - - Public Sub CreateSqlConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30" - myConnection.Open() - End Sub - - - public void CreateSqlConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30"; - myConnection.Open(); - } - - - - - Gets the name of the current database or the database to be used after a connection is opened.The name of the current database or the name of the database to be used after a connection is opened. The default value is an empty string. - - The Database property does not update dynamically. - If you change the current database using a SQL statement, then this property - may reflect the wrong value. If you change the current database using the - method, this property is updated to reflect the new database. - - - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Indicates if this connection should use compression when communicating with the server. - - - - Gets the current state of the connection. - A bitwise combination of the values. The default is Closed. - - The allowed state changes are: - - - From Closed to Open, using the Open method of the connection object. - - - From Open to Closed, using either the Close method or the Dispose method of the connection object. - - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - Gets a string containing the version of the MySQL server to which the client is connected.The version of the instance of MySQL.The connection is closed. - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Gets or sets the string used to connect to a MySQL Server database. - - - The ConnectionString returned may not be exactly like what was originally - set but will be indentical in terms of keyword/value pairs. Security information - will not be included unless the Persist Security Info value is set to true. - - - You can use the ConnectionString property to connect to a database. - The following example illustrates a typical connection string. - - "Persist Security Info=False;database=MyDB;server=MySqlServer;user id=myUser;Password=myPass" - - The ConnectionString property can be set only when the connection is - closed. Many of the connection string values have corresponding read-only - properties. When the connection string is set, all of these properties are - updated, except when an error is detected. In this case, none of the properties - are updated. properties return only those settings contained in the - ConnectionString. - - - To connect to a local machine, specify "localhost" for the server. If you do not - specify a server, localhost is assumed. - - - Resetting the ConnectionString on a closed connection resets all - connection string values (and related properties) including the password. For - example, if you set a connection string that includes "Database= MyDb", and - then reset the connection string to "Data Source=myserver;User Id=myUser;Password=myPass", - the property is no longer set to MyDb. - - - The connection string is parsed immediately after being set. If errors in - syntax are found when parsing, a runtime exception, such as , - is generated. Other errors can be found only when an attempt is made to open the - connection. - - - The basic format of a connection string consists of a series of keyword/value - pairs separated by semicolons. The equal sign (=) connects each keyword and its - value. To include values that contain a semicolon, single-quote character, or - double-quote character, the value must be enclosed in double quotes. If the - value contains both a semicolon and a double-quote character, the value can be - enclosed in single quotes. The single quote is also useful if the value begins - with a double-quote character. Conversely, the double quote can be used if the - value begins with a single quote. If the value contains both single-quote and - double-quote characters, the quote character used to enclose the value must be - doubled each time it occurs within the value. - - - To include preceding or trailing spaces in the string value, the value must - be enclosed in either single quotes or double quotes. Any leading or trailing - spaces around integer, Boolean, or enumerated values are ignored, even if - enclosed in quotes. However, spaces within a string literal keyword or value are - preserved. Using .NET Framework version 1.1, single or double quotes may be used - within a connection string without using delimiters (for example, Data Source= - my'Server or Data Source= my"Server), unless a quote character is the first or - last character in the value. - - - To include an equal sign (=) in a keyword or value, it must be preceded by - another equal sign. For example, in the hypothetical connection string - - "key==word=value" - - the keyword is "key=word" and the value is "value". - - If a specific keyword in a keyword= value pair occurs multiple times in a - connection string, the last occurrence listed is used in the value set. - - Keywords are not case sensitive. - - The following table lists the valid names for keyword values within the - ConnectionString. - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
- Connect Timeout -or- Connection Timeout - 15 - The length of time (in seconds) to wait for a connection to the server before - terminating the attempt and generating an error. -
- Host -or- Server -or- Data Source -or- - DataSource -or- Address -or- Addr -or- - Network Address - localhost - - The name or network address of the instance of MySQL to which to connect. Multiple hosts can be - specified separated by &. This can be useful where multiple MySQL servers are configured for replication - and you are not concerned about the precise server you are connecting to. No attempt is made by the provider to - synchronize writes to the database so care should be taken when using this option. - - - In Unix environment with Mono, this can be a fully qualified path to MySQL socket filename. With this configuration, the Unix socket will be used instead of TCP/IP socket. - Currently only a single socket name can be given so accessing MySQL in a replicated environment using Unix sockets is not currently supported. - -
Port3306 - The port MySQL is using to listen for connections. This value is ignored if the connection protocol - is anything but socket. -
Protocolsocket - Specifies the type of connection to make to the server.Values can be: - socket or tcp for a socket connection
- pipe for a named pipe connection
- unix for a Unix socket connection
- memory to use MySQL shared memory -
- CharSet -or Character Set - - - Specifies the character set that should be used to encode all queries sent to the server. - Resultsets are still returned in the character set of the data returned. -
LoggingfalseWhen true, various pieces of information is output to any configured TraceListeners.
Allow Batchtrue - When true, multiple SQL statements can be sent with one command execution.

- -Note-
- Starting with MySQL 4.1.1, batch statements should be separated by the server-defined seperator character.
- Commands sent to earlier versions of MySQL should be seperated with ';'. -
Encryptfalse - When true, SSL/TLS encryption is used for all data sent between the - client and server if the server has a certificate installed. Recognized values - are true, false, yes, and no. -
- Initial Catalog -or- Database - mysqlThe name of the database to use intially
- Password -or- pwd - - The password for the MySQL account being used.
Persist Security Infofalse - When set to false or no (strongly recommended), security-sensitive - information, such as the password, is not returned as part of the connection if - the connection is open or has ever been in an open state. Resetting the - connection string resets all connection string values including the password. - Recognized values are true, false, yes, and no. -
- User Id -or- Username -or- Uid -or- User name - - The MySQL login account being used.
Shared Memory NameMYSQLThe name of the shared memory object to use for communication if the connection protocol is set to memory.
Allow Zero Datetimefalse - True to have MySqlDataReader.GetValue() return a MySqlDateTime for date or datetime columns that have illegal values. - False will cause a DateTime object to be returned for legal values and an exception will be thrown for illegal values. -
Convert Zero Datetimefalse - True to have MySqlDataReader.GetValue() and MySqlDataReader.GetDateTime() - return DateTime.MinValue for date or datetime columns that have illegal values. -
- Pipe Name -or- Pipe - mysql - When set to the name of a named pipe, the MySqlConnection will attempt to connect to MySQL - on that named pipe.

This settings only applies to the Windows platform. -
- Use Performance Monitor -or- UsePerformanceMonitor - false - Posts performance data that can be tracked using perfmon -
- Procedure Cache Size - 25 - How many stored procedure definitions can be held in the cache -
Use Procedure Bodiestrue - Instructs the provider to attempt to call the procedure without first resolving the metadata. This - is useful in situations where the calling user does not have access to the mysql.proc table. To - use this mode, the parameters for the procedure must be added to the command in the same order - as they appear in the procedure definition and their types must be explicitly set. -
Auto Enlisttrue - Indicates whether the connection should automatically enlist in the current transaction, - if there is one. -
Respect Binary Flagstrue - Indicates whether the connection should respect all binary flags sent to the client - as part of column metadata. False will cause the connector to behave like - Connector/NET 5.0 and earlier. -
BlobAsUTF8IncludePatternnull - Pattern that should be used to indicate which blob columns should be treated as UTF-8. -
BlobAsUTF8ExcludePatternnull - Pattern that should be used to indicate which blob columns should not be treated as UTF-8. -
Default Command Timeout30 - The default timeout that new MySqlCommand objects will use unless changed. -
Allow User Variablesfalse - Should the provider expect user variables in the SQL. -
Interactive -or- Interactive Sessionfalse - Should this session be considered interactive? -
Functions Return Stringfalse - Set this option to true to force the return value of SQL functions to be string. -
Use Affected Rowsfalse - Set this option to true to cause the affected rows reported to reflect only the - rows that are actually changed. By default, the number of rows that are matched - is returned. -
-
- - The following table lists the valid names for connection pooling values within - the ConnectionString. For more information about connection pooling, see - Connection Pooling for the MySql Data Provider. - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDefaultDescription
Connection Lifetime0 - When a connection is returned to the pool, its creation time is compared with - the current time, and the connection is destroyed if that time span (in seconds) - exceeds the value specified by Connection Lifetime. This is useful in - clustered configurations to force load balancing between a running server and a - server just brought online. - - A value of zero (0) causes pooled connections to have the maximum connection - timeout. - -
Max Pool Size100The maximum number of connections allowed in the pool.
Min Pool Size0The minimum number of connections allowed in the pool.
Poolingtrue - When true, the MySqlConnection object is drawn from the appropriate - pool, or if necessary, is created and added to the appropriate pool. Recognized - values are true, false, yes, and no. -
Connection Resetfalse - Specifies whether the database connection should be reset when being - drawn from the pool. Leaving this as false will yeild much faster - connection opens but the user should understand the side effects - of doing this such as temporary tables and user variables from the previous - session not being cleared out. -
Cache Server Propertiesfalse - Specifies whether the server variables are cached between pooled connections. - On systems where the variables change infrequently and there are lots of - connection attempts, this can speed up things dramatically. -
-
- - When setting keyword or connection pooling values that require a Boolean - value, you can use 'yes' instead of 'true', and 'no' instead of 'false'. - - - Note The MySql Data Provider uses the native socket protocol to - communicate with MySQL. Therefore, it does not support the use of an ODBC data source name (DSN) when - connecting to MySQL because it does not add an ODBC layer. - - - CAUTION In this release, the application should use caution when constructing a - connection string based on user input (for example when retrieving user ID and password information from a - dialog box, and appending it to the connection string). The application should - ensure that a user cannot embed extra connection string parameters in these - values (for example, entering a password as "validpassword;database=somedb" in - an attempt to attach to a different database). - -
- The following example creates a and sets some of its properties - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - - The following example creates a in Unix environment with Mono installed. MySQL socket filename used in this example is "/var/lib/mysql/mysql.sock". The actual filename depends on your MySQL configuration. - - Public Sub CreateConnection() - Dim myConnection As New MySqlConnection() - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass" - myConnection.Open() - End Sub 'CreateConnection - - - public void CreateConnection() - { - MySqlConnection myConnection = new MySqlConnection(); - myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass"; - myConnection.Open(); - } - - -
- - - Gets a boolean value that indicates whether the password associated to the connection is expired. - - - - Begins a database transaction.An object representing the new transaction.Parallel transactions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. Also - note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Begins a database transaction with the specified isolation level.The isolation level under which the transaction should run. The scope of the transaction. An object representing the new transaction.Parallel exceptions are not supported. - This command is equivalent to the MySQL BEGIN TRANSACTION command. - - You must explicitly commit or roll back the transaction using the or - method. - - If you do not specify an isolation level, the default isolation level is used. To specify an isolation - level with the method, use the overload that takes the iso parameter. - Also note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher. - On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status. - - - - The following example creates a and a - . It also demonstrates how to use the BeginTransaction, a - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " + ex.GetType().ToString() + _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " + e.GetType().ToString() + _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (SqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - Changes the current database for an open MySqlConnection.The name of the database to use. - - The value supplied in the database parameter must be a valid database - name. The database parameter cannot contain a null value, an empty - string, or a string with only blank characters. - - - - When you are using connection pooling against MySQL, and you close - the connection, it is returned to the connection pool. The next time the - connection is retrieved from the pool, the reset connection request - executes before the user performs any operations. - - The database name is not valid.The connection is not open.Cannot change the database. - The following example creates a and displays - some of its read-only properties. - - - Public Sub CreateMySqlConnection() - Dim myConnString As String = _ - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass" - Dim myConnection As New MySqlConnection( myConnString ) - myConnection.Open() - MessageBox.Show( "Server Version: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.ChangeDatabase( "test2" ) - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.NewLine + "Database: " + myConnection.Database ) - myConnection.Close() - End Sub - - - - public void CreateMySqlConnection() - { - string myConnString = - "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"; - MySqlConnection myConnection = new MySqlConnection( myConnString ); - myConnection.Open(); - MessageBox.Show( "Server Version: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.ChangeDatabase( "test2" ); - MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion - + "\nDatabase: " + myConnection.Database ); - myConnection.Close(); - } - - - - - - Pings the server. - - true if the ping was successful; otherwise, false. - - - Opens a database connection with the property settings specified by the ConnectionString.Cannot open a connection without specifying a data source or server.A connection-level error occurred while opening the connection. - - The draws an open connection from the connection pool if one is available. - Otherwise, it establishes a new connection to an instance of MySQL. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Creates and returns a object associated with the . - - A object. - - - - Closes the connection to the database. This is the preferred method of closing any open connection. - - The Close method rolls back any pending transactions. It then releases - the connection to the connection pool, or closes the connection if connection - pooling is disabled. - - - An application can call Close more than one time. No exception is - generated. - - - The following example creates a , opens it, - displays some of its properties, then closes the connection. - - - Public Sub CreateMySqlConnection(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _ - + ControlChars.Cr + "State: " + myConnection.State.ToString()) - myConnection.Close() - End Sub - - - public void CreateMySqlConnection(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - MessageBox.Show("ServerVersion: " + myConnection.ServerVersion + - "\nState: " + myConnection.State.ToString()); - myConnection.Close(); - } - - - - - - Cancels the query after the specified time interval. - - The length of time (in seconds) to wait for the cancelation of the command execution. - - - - Sets query timeout. If timeout has been set prior and not - yet cleared ClearCommandTimeout(), it has no effect. - - timeout in seconds - true if - - - - Clears query timeout, allowing next SetCommandTimeout() to succeed. - - - - - Gets a schema collection based on the provided restriction values. - - The name of the collection. - The values to restrict. - A schema collection object. - - - Empties the connection pool associated with the specified connection. - The associated with the pool to be cleared. - - - ClearPool clears the connection pool that is associated with the connection. - If additional connections associated with connection are in use at the time of the call, - they are marked appropriately and are discarded (instead of being returned to the pool) - when Close is called on them. - - - - - Clears all connection pools. - - ClearAllPools essentially performs a on all current connection - pools. - - - - - - Initiates the asynchronous execution of a transaction. - - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - An object representing the new transaction. - - - - Asynchronous version of BeginTransaction. - - The isolation level under which the transaction should run. - The cancellation token. - An object representing the new transaction. - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - - - - - Asynchronous version of the ChangeDataBase method. - - The name of the database to use. - The cancellation token. - - - - - Asynchronous version of the Close method. - - - - - Asynchronous version of the Close method. - - The cancellation token. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - - - - Asynchronous version of the ClearPool method. - - The connection associated with the pool to be cleared. - The cancellation token. - - - - Asynchronous version of the ClearAllPools method. - - - - - Asynchronous version of the ClearAllPools method. - - The cancellation token. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - A collection of schema objects. - - - - Asynchronous version of the GetSchemaCollection method. - - The name of the collection. - The values to restrict. - The cancellation token. - A collection of schema objects. - - - - Returns schema information for the data source of this . - - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name. - - Specifies the name of the schema to return. - A that contains schema information. - - - - Returns schema information for the data source of this - using the specified string for the schema name and the specified string array - for the restriction values. - - Specifies the name of the schema to return. - Specifies a set of restriction values for the requested schema. - A that contains schema information. - - - - Enlists in the specified transaction. - - - A reference to an existing in which to enlist. - - - - - Creates a new MySqlConnection object with the exact same ConnectionString value - - A cloned MySqlConnection object - - - - Represents the method that will handle the event of a - . - - - - - Provides data for the InfoMessage event. This class cannot be inherited. - - - - - Gets or sets an array of objects set with the errors found. - - - - - IDisposable wrapper around SetCommandTimeout and ClearCommandTimeout functionality. - - - - - Summary description for Crypt. - - - - - Simple XOR scramble - - Source array - Index inside source array - Destination array - Index inside destination array - Password used to xor the bits - Number of bytes to scramble - - - - Returns a byte array containing the proper encryption of the - given password/seed according to the new 4.1.1 authentication scheme. - - - - - - - - Encrypts a password using the MySql encryption scheme - - The password to encrypt - The encryption seed the server gave us - Indicates if we should use the old or new encryption scheme - - - - - Hashes a password using the algorithm from Monty's code. - The first element in the return is the result of the "old" hash. - The second element is the rest of the "new" hash. - - Password to be hashed - Two element array containing the hashed values - - - - Provides a means of reading a forward-only stream of rows from a MySQL database. This class cannot be inherited. - - - To create a MySQLDataReader, you must call the - method of the object, rather than directly using a constructor. - - - While the MySqlDataReader is in use, the associated - is busy serving the MySqlDataReader, and no other operations can be performed - on the MySqlConnection other than closing it. This is the case until the - method of the MySqlDataReader is called. - - - and - are the only properties that you can call after the MySqlDataReader is - closed. Though the RecordsAffected property may be accessed at any time - while the MySqlDataReader exists, always call Close before returning - the value of RecordsAffected to ensure an accurate return value. - - - For optimal performance, MySqlDataReader avoids creating - unnecessary objects or making unnecessary copies of data. As a result, multiple calls - to methods such as return a reference to the - same object. Use caution if you are modifying the underlying value of the objects - returned by methods such as GetValue. - - - The following example creates a , - a , and a MySqlDataReader. The example reads through - the data, writing it out to the console. Finally, the example closes the MySqlDataReader, then the - MySqlConnection. - - Public Sub ReadMyData(myConnString As String) - Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders" - Dim myConnection As New MySqlConnection(myConnString) - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - myConnection.Open() - Dim myReader As MySqlDataReader - myReader = myCommand.ExecuteReader() - ' Always call Read before accessing data. - While myReader.Read() - Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1))) - End While - ' always call Close when done reading. - myReader.Close() - ' Close the connection when done with it. - myConnection.Close() - End Sub 'ReadMyData - - - public void ReadMyData(string myConnString) { - string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders"; - MySqlConnection myConnection = new MySqlConnection(myConnString); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - myConnection.Open(); - MySqlDataReader myReader; - myReader = myCommand.ExecuteReader(); - // Always call Read before accessing data. - while (myReader.Read()) { - Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1)); - } - // always call Close when done reading. - myReader.Close(); - // Close the connection when done with it. - myConnection.Close(); - } - - - - - - Gets the number of columns in the current row. - - - - - Gets a value indicating whether the MySqlDataReader contains one or more rows. - - - - - Gets a value indicating whether the data reader is closed. - - - - - Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. - - - - - Overloaded. Gets the value of a column in its native format. - In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets the value of a column in its native format. - [C#] In C#, this property is the indexer for the MySqlDataReader class. - - - - - Gets a value indicating the depth of nesting for the current row. This method is not - supported currently and always returns 0. - - - - - Closes the MySqlDataReader object. - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a Boolean. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a byte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Gets the value of the specified column as a sbyte. - - - - - - - Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset. - - The zero-based column ordinal. - The index within the field from which to begin the read operation. - The buffer into which to read the stream of bytes. - The index for buffer to begin the read operation. - The maximum length to copy into the buffer. - The actual number of bytes read. - - - - - Gets the value of the specified column as a single character. - - - - - - - Gets the value of the specified column as a single character. - - - - - - - Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset. - - - - - - - - - - - Gets the name of the source data type. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a DateTime object. - - - Call IsDBNull to check for null values before calling this method. - - - - MySql allows date columns to contain the value '0000-00-00' and datetime - columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain - or represent these values. To read a datetime value from a column that might - contain zero values, use . - - - The behavior of reading a zero datetime column using this method is defined by the - ZeroDateTimeBehavior connection string option. For more information on this option, - please refer to . - - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Decimal object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinalThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a double-precision floating point number. - - No conversions are performed; therefore, the data retrieved must already be a Double object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the Type that is the data type of the object. - - - - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - - Gets the value of the specified column as a single-precision floating point number. - - - No conversions are performed; therefore, the data retrieved must already be a Float object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a globally-unique identifier(GUID). - - The name of the column. - - - - - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; threfore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column nameThe value of the specified column. - - - Gets the value of the specified column as a 16-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit signed integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the name of the specified column. - - - - - - - Gets the column ordinal, given the name of the column. - - - - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a String object. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column as a object. - - - No conversions are performed; therefore, the data retrieved must already be a Time value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets the value of the specified column in its native format. - - - - - - - Gets all attribute columns in the collection for the current row. - - - - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 16-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 32-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - Gets the value of the specified column as a 64-bit unsigned integer. - - No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value. - - - Call IsDBNull to check for null values before calling this method. - - The zero-based column ordinal or column name.The value of the specified column. - - - - Gets a value indicating whether the column contains non-existent or missing values. - - - - - - - Advances the data reader to the next result, when reading the results of batch SQL statements. - - - - - - Advances the MySqlDataReader to the next record. - - - - - - Gets the value of the specified column as a . - - The index of the colum. - The value of the specified column as a . - - - - Gets the value of the specified column as a . - - The name of the colum. - The value of the specified column as a . - - - - Returns an that iterates through the . - - - - - Returns a DataTable that describes the column metadata of the MySqlDataReader. - - - - - - Summary description for BaseDriver. - - - - - For pooled connections, time when the driver was - put into idle queue - - - - - Loads the properties from the connected server into a hashtable - - - - - - - Loads all the current character set names and ids for this server - into the charSets hashtable - - - - - The exception that is thrown when MySQL returns an error. This class cannot be inherited. - - - - This class is created whenever the MySql Data Provider encounters an error generated from the server. - - - Any open connections are not automatically closed when an exception is thrown. If - the client application determines that the exception is fatal, it should close any open - objects or objects. - - - The following example generates a MySqlException due to a missing server, - and then displays the exception. - - - Public Sub ShowException() - Dim mySelectQuery As String = "SELECT column1 FROM table1" - Dim myConnection As New MySqlConnection ("Data Source=localhost;Database=Sample;") - Dim myCommand As New MySqlCommand(mySelectQuery, myConnection) - - Try - myCommand.Connection.Open() - Catch e As MySqlException - MessageBox.Show( e.Message ) - End Try - End Sub - - - public void ShowException() - { - string mySelectQuery = "SELECT column1 FROM table1"; - MySqlConnection myConnection = - new MySqlConnection("Data Source=localhost;Database=Sample;"); - MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection); - - try - { - myCommand.Connection.Open(); - } - catch (MySqlException e) - { - MessageBox.Show( e.Message ); - } - } - - - - - - Gets a number that identifies the type of error. - - - - - True if this exception was fatal and cause the closing of the connection, false otherwise. - - - - - Gets the SQL state. - - - - - Gets an integer that representes the MySQL error code. - - - - - Summary description for Field. - - - - - We are adding a custom installer class to our assembly so our installer - can make proper changes to the machine.config file. - - - - - We override Install so we can add our assembly to the proper - machine.config files. - - - - - - We override Uninstall so we can remove out assembly from the - machine.config files. - - - - - - Automatically generates single-table commands used to reconcile changes made to a DataSet with the associated MySQL database. This class cannot be inherited. - - - The does not automatically generate the SQL statements required to - reconcile changes made to a DataSet with the associated instance of MySQL. - However, you can create a MySqlCommandBuilder object to automatically generate SQL statements for - single-table updates if you set the SelectCommand property - of the MySqlDataAdapter. Then, any additional SQL statements that you do not set are generated by the - MySqlCommandBuilder. - - - - The MySqlCommandBuilder registers itself as a listener for RowUpdating - events whenever you set the property. You can only associate one - MySqlDataAdapter or MySqlCommandBuilder object with each other at one time. - - - - To generate INSERT, UPDATE, or DELETE statements, the MySqlCommandBuilder uses the - SelectCommand property to retrieve a required set of metadata automatically. If you change - the SelectCommand after the metadata has is retrieved (for example, after the first update), you - should call the method to update the metadata. - - - - The SelectCommand must also return at least one primary key or unique - column. If none are present, an InvalidOperation exception is generated, - and the commands are not generated. - - - - The MySqlCommandBuilder also uses the Connection, - CommandTimeout, and Transaction - properties referenced by the SelectCommand. The user should call - RefreshSchema if any of these properties are modified, or if the - SelectCommand itself is replaced. Otherwise the InsertCommand, - UpdateCommand, and - DeleteCommand properties retain - their previous values. - - - - If you call Dispose, the MySqlCommandBuilder is disassociated - from the MySqlDataAdapter, and the generated commands are no longer used. - - - - Caution must be used when using MySqlCOmmandBuilder on MySql 4.0 systems. With MySql 4.0, - database/schema information is not provided to the connector for a query. This means that - a query that pulls columns from two identically named tables in two or more different databases - will not cause an exception to be thrown but will not work correctly. Even more dangerous - is the situation where your select statement references database X but is executed in - database Y and both databases have tables with similar layouts. This situation can cause - unwanted changes or deletes. - This note does not apply to MySQL versions 4.1 and later. - - - - The following example uses the , along - and , to - select rows from a data source. The example is passed an initialized - , a connection string, a - query string that is a SQL SELECT statement, and a string that is the - name of the database table. The example then creates a MySqlCommandBuilder. - - - Public Shared Function SelectRows(myConnection As String, mySelectQuery As String, myTableName As String) As DataSet - Dim myConn As New MySqlConnection(myConnection) - Dim myDataAdapter As New MySqlDataAdapter() - myDataAdapter.SelectCommand = New MySqlCommand(mySelectQuery, myConn) - Dim cb As SqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter) - - myConn.Open() - - Dim ds As DataSet = New DataSet - myDataAdapter.Fill(ds, myTableName) - - ' Code to modify data in DataSet here - - ' Without the MySqlCommandBuilder this line would fail. - myDataAdapter.Update(ds, myTableName) - - myConn.Close() - End Function 'SelectRows - - - public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName) - { - MySqlConnection myConn = new MySqlConnection(myConnection); - MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); - myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn); - MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter); - - myConn.Open(); - - DataSet ds = new DataSet(); - myDataAdapter.Fill(ds, myTableName); - - //code to modify data in DataSet here - - //Without the MySqlCommandBuilder this line would fail - myDataAdapter.Update(ds, myTableName); - - myConn.Close(); - - return ds; - } - - - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with the associated object. - - The to use. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Gets or sets a object for which SQL statements are automatically generated. - - A object. - - - The registers itself as a listener for - events that are generated by the - specified in this property. - - - When you create a new instance MySqlCommandBuilder, any existing - MySqlCommandBuilder associated with this MySqlDataAdapter - is released. - - - - - - Retrieves parameter information from the stored procedure specified - in the MySqlCommand and populates the Parameters collection of the - specified MySqlCommand object. - This method is not currently supported since stored procedures are - not available in MySql. - - The MySqlCommand referencing the stored - procedure from which the parameter information is to be derived. - The derived parameters are added to the Parameters collection of the - MySqlCommand. - The command text is not - a valid stored procedure name. - - - - Gets the delete command. - - - - - - Gets the update command. - - - - - - Gets the insert command. - - - - - - - - - - - - - Represents a set of data commands and a database connection that are used to fill a dataset and update a MySQL database. This class cannot be inherited. - - - The MySQLDataAdapter, serves as a bridge between a - and MySQL for retrieving and saving data. The MySQLDataAdapter provides this - bridge by mapping , which changes the data in the - DataSet to match the data in the data source, and , - which changes the data in the data source to match the data in the DataSet, - using the appropriate SQL statements against the data source. - - - When the MySQLDataAdapter fills a DataSet, it will create the necessary - tables and columns for the returned data if they do not already exist. However, primary - key information will not be included in the implicitly created schema unless the - property is set to . - You may also have the MySQLDataAdapter create the schema of the DataSet, - including primary key information, before filling it with data using . - - - MySQLDataAdapter is used in conjunction with - and to increase performance when connecting to a MySQL database. - - - The MySQLDataAdapter also includes the , - , , - , and - properties to facilitate the loading and updating of data. - - - When an instance of MySQLDataAdapter is created, the read/write properties - are set to initial values. For a list of these values, see the MySQLDataAdapter - constructor. - - - Please be aware that the class allows only - Int16, Int32, and Int64 to have the AutoIncrement property set. - If you plan to use autoincremement columns with MySQL, you should consider - using signed integer columns. - - - The following example creates a and a . - The MySqlConnection is opened and set as the for the - MySqlCommand. The example then calls , and closes - the connection. To accomplish this, the ExecuteNonQuery is - passed a connection string and a query string that is a SQL INSERT - statement. - - Public Function SelectRows(dataSet As DataSet, connection As String, query As String) As DataSet - Dim conn As New MySqlConnection(connection) - Dim adapter As New MySqlDataAdapter() - adapter.SelectCommand = new MySqlCommand(query, conn) - adapter.Fill(dataset) - Return dataset - End Function - - - public DataSet SelectRows(DataSet dataset,string connection,string query) - { - MySqlConnection conn = new MySqlConnection(connection); - MySqlDataAdapter adapter = new MySqlDataAdapter(); - adapter.SelectCommand = new MySqlCommand(query, conn); - adapter.Fill(dataset); - return dataset; - } - - - - - - Occurs during Update before a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Occurs during Update after a command is executed against the data source. The attempt to update is made, so the event fires. - - - - - Initializes a new instance of the MySqlDataAdapter class. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.SelectCommand = New MySqlCommand("SELECT id, name FROM mytable", conn) - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter(); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.SelectCommand = new MySqlCommand("SELECT id, name FROM mytable", conn); - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - the specified as the - property. - - that is a SQL SELECT statement or stored procedure and is set - as the property of the . - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - When SelectCommand (or any of the other command properties) is assigned - to a previously created , the MySqlCommand is not cloned. - The SelectCommand maintains a reference to the previously created MySqlCommand - object. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim cmd as new MySqlCommand("SELECT id, name FROM mytable", conn) - Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlCommand cmd = new MySqlCommand("SELECT id, name FROM mytable", conn); - MySqlDataAdapter da = new MySqlDataAdapter(cmd); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a object. - - A String that is a SQL SELECT statement or stored procedure to be used by - the property of the . - - A that represents the connection. - - - This implementation of the opens and closes a - if it is not already open. This can be useful in a an application that must call the - method for two or more MySqlDataAdapter objects. - If the MySqlConnection is already open, you must explicitly call - or to close it. - - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _ - "database=test") - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", conn) - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test"); - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", conn); - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Initializes a new instance of the class with - a and a connection string. - - A that is a SQL SELECT statement or stored procedure to - be used by the property of the . - The connection string - - When an instance of is created, - the following read/write properties are set to the following initial - values. - - - - Properties - Initial Value - - - - - - - MissingMappingAction.Passthrough - - - - - - - - MissingSchemaAction.Add - - - - - You can change the value of any of these properties through a separate call - to the property. - - - The following example creates a and sets some of - its properties. - - Public Sub CreateSqlDataAdapter() - Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test") - Dim conn As MySqlConnection = da.SelectCommand.Connection - da.MissingSchemaAction = MissingSchemaAction.AddWithKey - - da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _ - "VALUES (@id, @name)", conn) - da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _ - "WHERE id=@oldId", conn) - da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name") - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original - End Sub - - - public static void CreateSqlDataAdapter() - { - MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test"); - MySqlConnection conn = da.SelectCommand.Connection; - da.MissingSchemaAction = MissingSchemaAction.AddWithKey; - - da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " + - "VALUES (@id, @name)", conn); - da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " + - "WHERE id=@oldId", conn); - da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - - da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name"); - da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - - da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original; - } - - - - - - Gets or sets a SQL statement or stored procedure used to delete records from the data set. - - A used during to delete records in the - database that correspond to deleted rows in the . - - - During , if this property is not set and primary key information - is present in the , the DeleteCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When DeleteCommand is assigned to a previously created , - the MySqlCommand is not cloned. The DeleteCommand maintains a reference - to the previously created MySqlCommand object. - - - The following example creates a and sets the - and DeleteCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the DeleteCommand. - cmd = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn) - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id") - parm.SourceVersion = DataRowVersion.Original - - da.DeleteCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the DeleteCommand. - cmd = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn); - - parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id"); - parm.SourceVersion = DataRowVersion.Original; - - da.DeleteCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to insert records into the data set. - - A used during to insert records into the - database that correspond to new rows in the . - - - During , if this property is not set and primary key information - is present in the , the InsertCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When InsertCommand is assigned to a previously created , - the MySqlCommand is not cloned. The InsertCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be added to the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to select records in the data source. - - A used during to select records from the - database for placement in the . - - - When SelectCommand is assigned to a previously created , - the MySqlCommand is not cloned. The SelectCommand maintains a reference to the - previously created MySqlCommand object. - - - If the SelectCommand does not return any rows, no tables are added to the - , and no exception is raised. - - - The following example creates a and sets the - and InsertCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the InsertCommand. - cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - da.InsertCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the InsertCommand. - cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - da.InsertCommand = cmd; - - return da; - } - - - - - - Gets or sets a SQL statement or stored procedure used to updated records in the data source. - - A used during to update records in the - database with data from the . - - - During , if this property is not set and primary key information - is present in the , the UpdateCommand can be generated - automatically if you set the property and use the - . Then, any additional commands that you do not set are - generated by the MySqlCommandBuilder. This generation logic requires key column - information to be present in the DataSet. - - - When UpdateCommand is assigned to a previously created , - the MySqlCommand is not cloned. The UpdateCommand maintains a reference - to the previously created MySqlCommand object. - - - If execution of this command returns rows, these rows may be merged with the DataSet - depending on how you set the property of the MySqlCommand object. - - - The following example creates a and sets the - and UpdateCommand properties. It assumes you have already - created a object. - - Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter - - Dim da As MySqlDataAdapter = New MySqlDataAdapter() - Dim cmd As MySqlCommand - Dim parm As MySqlParameter - - ' Create the SelectCommand. - cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn) - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15) - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15) - - da.SelectCommand = cmd - - ' Create the UpdateCommand. - cmd = New MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn) - - cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" ) - cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" ) - - parm = cmd.Parameters.Add("@oldId", MySqlDbType.VarChar, 15, "id") - parm.SourceVersion = DataRowVersion.Original - - da.UpdateCommand = cmd - - Return da - End Function - - - public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn) - { - MySqlDataAdapter da = new MySqlDataAdapter(); - MySqlCommand cmd; - MySqlParameter parm; - - // Create the SelectCommand. - cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn); - - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15); - - da.SelectCommand = cmd; - - // Create the UpdateCommand. - cmd = new MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn); - cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" ); - cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" ); - - parm = cmd.Parameters.Add( "@oldId", MySqlDbType.VarChar, 15, "id" ); - parm.SourceVersion = DataRowVersion.Original; - - da.UpdateCommand = cmd; - - return da; - } - - - - - - Open connection if it was closed. - Necessary to workaround "connection must be open and valid" error - with batched updates. - - Row state - list of opened connections - If connection is opened by this function, the list is updated - - true if connection was opened - - - - Overridden. See . - - - - - - - - - - Overridden. See . - - - - - - - - - - Overridden. Raises the RowUpdating event. - - A MySqlRowUpdatingEventArgs that contains the event data. - - - - Overridden. Raises the RowUpdated event. - - A MySqlRowUpdatedEventArgs that contains the event data. - - - - Asynchronous version of the Fill method. - - The to fill records with. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill records with. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The name of the to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - An instance of . - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The start record. - The max number of affected records. - The cancellation token. - The s to fill with records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The name of the source table to use for table mapping. - An instance of . - The start record. - The max number of affected records. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The s to fill with records. - The start record. - The max number of affected records. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the s. - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The number of rows successfully added to or refreshed in the . - - - - Asynchronous version of the Fill method. - - The to fill with records. - The start record. - The max number of affected records. - The name of the source table to use for table mapping. - The SQL SELECT statement used to retrieve rows from the data source. - One of the values. - The cancellation token. - The number of rows successfully added to or refreshed in the . - - - - Async version of FillSchema - - DataSet to use - Schema Type - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - Source Table - DataReader to use - DataTable[] - - - - Async version of FillSchema - - DataSet to use - Schema Type - DBCommand to use - Source Table - Command Behavior - DataTable[] - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DataReader to use - DataTable - - - - Async version of FillSchema - - DataTable to use - Schema Type - DBCommand to use - Command Behavior - DataTable - - - - Async version of Update - - DataRow[] to use - int - - - - Async version of Update - - DataSet to use - int - - - - Async version of Update - - DataTable to use - int - - - - Async version of Update - - DataRow[] to use - Data Table Mapping - int - - - - Async version of Update - - DataSet to use - Source Table - - - - - Represents the method that will handle the event of a . - - - - - Represents the method that will handle the event of a . - - - - - Provides data for the RowUpdating event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatingEventArgs class. - - The to - . - The to execute during . - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand to execute when performing the Update. - - - - - Provides data for the RowUpdated event. This class cannot be inherited. - - - - - Initializes a new instance of the MySqlRowUpdatedEventArgs class. - - The sent through an . - The executed when is called. - One of the values that specifies the type of query executed. - The sent through an . - - - - Gets or sets the MySqlCommand executed when Update is called. - - - - - Enables the provider to help ensure that a user has a security level adequate for accessing data. - - - - - Adds a new connection string with set of restricted keywords to the MySqlClientPermission object - - Settings to be used for the connection - Keywords to define the restrictions - KeyRestrictionBehavior to be used - - - - Returns MySqlClientPermission as an IPermission - - - - - - Associates a security action with a custom security attribute. - - - - - Represents a section within a configuration file. - - - - - Gets the MySQL configuations associated to the current configuration. - - - - - Gets a collection of the exception interceptors available in the current configuration. - - - - - Gets a collection of the command interceptors available in the current configuration. - - - - - Gets a collection of the authentication plugins available in the current configuration. - - - - - Gets or sets the replication configurations. - - - - - Defines the configurations allowed for an authentication plugin. - - - - - Gets or sets the name of the authentication plugin. - - - - - Gets or sets the type of the authentication plugin. - - - - - Defines the configurations allowed for an interceptor. - - - - - Gets or sets the name of the interceptor. - - - - - Gets or sets the type of the interceptor. - - - - - Represents a generic configuration element. - - - - - - Gets an enumerator that iterates through the returned list. - - An enumerator that iterates through the returned list. - - - - Helper class that makes it easier to work with the provider. - - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Asynchronous version of ExecuteDataRow. - - The settings to be used for the connection. - The command to execute. - The cancellation token. - The parameters to use for the command. - The DataRow containing the first row of the resultset. - - - - Executes a single SQL command and returns the first row of the resultset. A new MySqlConnection object - is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - DataRow containing the first row of the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - A new MySqlConnection object is created, opened, and closed during this method. - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - containing the resultset - - - - Executes a single SQL command and returns the resultset in a . - The state of the object remains unchanged after execution - of this method. - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Updates the given table with data from the given - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - Settings to be used for the connection - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - containing the resultset - - - - Async version of ExecuteDataset - - object to use - Command to execute - Parameters to use for the command - containing the resultset - - - - Async version of UpdateDataset - - Settings to use for the update - Command text to use for the update - containing the new data to use in the update - Tablename in the dataset to update - - - - Executes a single command against a MySQL database. The is assumed to be - open when the method is called and remains open after the method completes. - - The object to use - The SQL command to be executed. - An array of objects to use with the command. - The number of affected records. - - - - Executes a single command against a MySQL database. - - to use. - The SQL command to be executed. - An rray of objects to use with the command. - The number of affected records. - A new is created using the given. - - - - Executes a single command against a MySQL database, possibly inside an existing transaction. - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Executes a single command against a MySQL database. - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Execute a single command against a MySQL database. - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Execute a single command against a MySQL database. - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Escapes the string. - - The string to escape. - The string with all quotes escaped. - - - - Replaces quotes with double quotes. - - The string to modidify. - A string containing double quotes instead of single quotes. - - - - Async version of ExecuteNonQuery - - object to use - SQL command to be executed - Array of objects to use with the command. - Rows affected - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - An array of objects to use with the command. - The number of rows affected. - - - - Asynchronous version of the ExecuteNonQuery method. - - to use. - The SQL command to be executed. - The cancellation token. - An array of objects to use with the command. - The number of rows affected. - - - - Async version of ExecuteReader - - object to use for the command - object to use for the command - Command text to use - Array of objects to use with the command - True if the connection should be preserved, false if not - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - object to use for the command - Command text to use - object ready to read the results of the command - - - - Async version of ExecuteReader - - Settings to use for this command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteReader - - Connection to use for the command - Command text to use - Array of objects to use with the command - object ready to read the results of the command - - - - Async version of ExecuteScalar - - Settings to use for the update - Command text to use for the update - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - Settings to use for the command - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Async version of ExecuteScalar - - object to use - Command text to use for the command - Parameters to use for the command - The first column of the first row in the result set, or a null reference if the result set is empty. - - - - Represents a parameter to a , This class cannot be inherited. - - - - - Gets or sets the to use when loading . - - - - - CLoses this object. - - An object that is a clone of this object. - - - - Initializes a new instance of the class with the parameter name, the , the size, and the source column name. - - The name of the parameter to map. - One of the values. - The length of the parameter. - The name of the source column. - - - - Initializes a new instance of the class with the parameter name and a value of the new MySqlParameter. - - The name of the parameter to map. - An that is the value of the . - - - - Initializes a new instance of the class with the parameter name and the data type. - - The name of the parameter to map. - One of the values. - - - - Initializes a new instance of the class with the parameter name, the , and the size. - - The name of the parameter to map. - One of the values. - The length of the parameter. - - - - Initializes a new instance of the class with the parameter name, the type of the parameter, the size of the parameter, a , the precision of the parameter, the scale of the parameter, the source column, a to use, and the value of the parameter. - - The name of the parameter to map. - One of the values. - The length of the parameter. - One of the values. - true if the value of the field can be null, otherwise false. - The total number of digits to the left and right of the decimal point to which is resolved. - The total number of decimal places to which is resolved. - The name of the source column. - One of the values. - An that is the value of the . - - - - - Gets or sets a value indicating whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter. - As of MySql version 4.1 and earlier, input-only is the only valid choice. - - - - - Gets or sets a value indicating whether the parameter accepts null values. - - - - - Gets or sets the of the parameter. - - - - - Gets or sets the maximum number of digits used to represent the property. - - - - - Gets or sets the number of decimal places to which is resolved. - - - - - Gets or sets the maximum size, in bytes, of the data within the column. - - - - - Gets or sets the value of the parameter. - - - - - Returns the possible values for this parameter if this parameter is of type - SET or ENUM. Returns null otherwise. - - - - - Gets or sets the name of the source column that is mapped to the and used for loading or returning the . - - - - - Sets or gets a value which indicates whether the source column is nullable. - This allows to correctly generate Update statements - for nullable columns. - - - - - Gets or sets the of the parameter. - - - - - Overridden. Gets a string containing the . - - - - - - Resets the DbType property to its original settings. - - - - - Represents a collection of parameters relevant to a as well as their respective mappings to columns in a . This class cannot be inherited. - - - The number of the parameters in the collection must be equal to the number of - parameter placeholders within the command text, or an exception will be generated. - - The following example creates multiple instances of - that are exposed as a collection through the - object within . - These parameters are used to select data within the data source and place the data in - the . This code example assumes that a DataSet - object and an instance of were created properly - with the appropriate schema, commands, and connection. - - Public Sub AddParameters() - ' ... - ' create myDataSet and myDataAdapter - ' ... - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters" - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239 - - myDataAdapter.Fill(myDataSet) - End Sub 'AddSqlParameters - - - public void AddSqlParameters() - { - // ... - // create myDataSet and myDataAdapter - // ... - - myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters"; - myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239; - myDataAdapter.Fill(myDataSet); - - } - - - - - - Gets a value that indicates whether the - has a fixed size. - - - - - Gets a value that indicates whether the - is read-only. - - - - - Gets a value that indicates whether the - is synchronized. - - - - - Gets the number of MySqlParameter objects in the collection. - - - - - Gets the at the specified index. - - Gets the with a specified attribute. - [C#] In C#, this property is the indexer for the class. - - - - - Gets the with the specified name. - - - - - Adds a to the with the parameter name, the data type, the column length, and the source column name. - - The name of the parameter. - One of the values. - The length of the column. - The name of the source column. - The newly added object. - - - - Adds the specified object to the . - - The to add to the collection. - The newly added object. - - - - Adds a parameter and its value. - - The name of the parameter. - The value of the parameter. - A object representing the provided values. - - - - Adds a to the given the parameter name and the data type. - - The name of the parameter. - One of the values. - The newly added object. - - - - Adds a to the with the parameter name, the data type, and the column length. - - The name of the parameter. - One of the values. - The length of the column. - The newly added object. - - - - Removes all items from the collection. - - - - - Gets the location of the in the collection with a specific parameter name. - - The name of the object to retrieve. - The zero-based location of the in the collection. - - - - Gets the location of a in the collection. - - The object to locate. - The zero-based location of the in the collection. - Gets the location of a in the collection. - - - - This method will update all the items in the index hashes when - we insert a parameter somewhere in the middle - - - - - - - Adds an array of values to the end of the . - - - - - - Retrieve the parameter with the given name. - - - - - - - Adds the specified object to the . - - The to add to the collection. - The index of the new object. - - - - Gets a value indicating whether a with the specified parameter name exists in the collection. - - The name of the object to find. - true if the collection contains the parameter; otherwise, false. - - - - Gets a value indicating whether a MySqlParameter exists in the collection. - - The value of the object to find. - true if the collection contains the object; otherwise, false. - Gets a value indicating whether a exists in the collection. - - - - Copies MySqlParameter objects from the MySqlParameterCollection to the specified array. - - - - - - - Returns an enumerator that iterates through the . - - - - - - Inserts a MySqlParameter into the collection at the specified index. - - - - - - - Removes the specified MySqlParameter from the collection. - - - - - - Removes the specified from the collection using the parameter name. - - The name of the object to retrieve. - - - - Removes the specified from the collection using a specific index. - - The zero-based index of the parameter. - Removes the specified from the collection. - - - - Gets an object that can be used to synchronize access to the - . - - - - - Represents a single(not nested) TransactionScope - - - - - Defines security permissions assigned to a MySQL object. - - - - - Creates a set of permissions. - - A flag indicating if the reflection permission should be included. - A object representing a collection of permissions. - - - - BaseCommandInterceptor is the base class that should be used for all userland - command interceptors - - - - - Gets the active connection. - - - - - Executes an SQL statements that returns a scalar value such as a calculation. - - The SQL statement to execute. - A scalar value that represents the result returned by the execution of the SQL statement. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that returns the number of affected rows. - - The SQL statement to execute. - The number of affected rows. - false. - This method is intended to be overriden. - - - - Executes an SQL statement that will return a resultset. - - The SQL statement to execute. - A value that describes the results of the query and its effect on the database. - A object containing the result of the statement execution. - false. - This method is intended to be overriden. - - - - Sets the active connection. - - The active connection. - - - - CommandInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - BaseExceptionInterceptor is the base class that should be used for all userland - exception interceptors. - - - - - Returns the received exception. - - The exception to be returned. - The exception originally received. - - - - Gets the active connection. - - - - - Initilizes this object by setting the active connection. - - The connection to become active. - - - - StandardExceptionInterceptor is the standard interceptor that simply returns the exception. - It is the default action. - - - - - Returns the received exception, which is the default action - - The exception to be returned. - The exception originally received. - - - - ExceptionInterceptor is the "manager" class that keeps the list of registered interceptors - for the given connection. - - - - - Interceptor is the base class for the "manager" classes such as ExceptionInterceptor, - CommandInterceptor, etc - - - - - Return schema information about procedures and functions - Restrictions supported are: - schema, name, type - - - - - - - Return schema information about parameters for procedures and functions - Restrictions supported are: - schema, name, type, parameter name - - - - - Initializes a new row for the procedure parameters table. - - - - - Parses out the elements of a procedure parameter data type. - - - - - Implementation of memcached binary client protocol. - - According to http://code.google.com/p/memcached/wiki/BinaryProtocolRevamped - - - - Sends an store command (add, replace, set). - - - - - - - - - - - Sends a get command. - - - - - - - - - Sends a delete command. - - - - - - - - Sends a command without args (like flush). - - - - - - - - Sends a command with amount (INCR/DECR) - - - - - - - - - Encodes in the binary protocol the a command of the kind set, add or replace. - - - - - - - If true applies to set, add or replace commands; if false applies to append and prepend commands. - - - - - An interface of the client memcached protocol. This class is abstract for - implementation of the Memcached client interface see for the - text protocol version and for the binary protocol version. - - - - - The port used by the connection. - - - - - The server DNS or IP address used by the connection. - - - - - The network stream used by the connecition. - - - - - Factory method for creating instances of that implement a connection with the requested features. - The connection object returned must be explicitely opened see method . - - The Memcached server DNS or IP address. - The port for the Memcached server - A set of flags indicating characterestics requested. - An instance of a client connection ready to be used. - - - - Opens the client connection. - - - - - Closes the client connection. - - - - - Adds a new key/value pair with the given TimeSpan expiration. - - The key for identifying the entry. - The data to associate with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Appens the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Executes the Check-and-set Memcached operation. - - The key for identifying the entry. - The data to use in the CAS. - The interval of timespan, use TimeSpan.Zero for no expiration. - The CAS unique value to use. - - - - - Decrements the value associated with a key by the given amount. - - The key associated with the value to decrement. - The amount to decrement the value. - - - - Removes they pair key/value given the specified key. - - - - - - Removes all entries from the storage, effectively invalidating the whole cache. - - The interval after which the cache will be cleaned. Can be TimeSpan.Zero for immediately. - - - - Get the key/value pair associated with a given key. - - The key for which to returm the key/value. - The key/value associated with the key or a MemcachedException if it does not exists. - - - - Increments the value associated with a key by the given amount. - - The key associated with the value to increment. - The amount to increment the value. - - - - Prepends the data to the existing data for the associated key. - - The key for identifying the entry. - The data to append with the data associated with the key. - - - - Replaces the value associated with the given key with another value. - - The key for identifying the entry. - The data to replace the value associated with the key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - Set the value of a given key. - - The key for identifying the entry. - The data to associate with the given key. - The interval of timespan, use TimeSpan.Zero for no expiration. - - - - A set of flags for requesting new instances of connections - - - - - Requests a connection implememting the text protocol. - - - - - Requests a connection implementing the binary protocol. - - - - - Requests a TCP connection. Currently UDP is not supported. - - - - - The base exception class for all Memcached exceptions. - - - - - Implementation of the Memcached text client protocol. - - - - - Sends a command to the memcached server. - - - - - - - This version is for commands that take a key, data, expiration and casUnique. - - - - Sends a command to the memcached server. - - - - - - This version is for commands that take a key, data and expiration - - - - Send a command to memcached server. - - - - - This version is for commands that don't need flags neither expiration fields. - - - - Sends a command to the server. - - - - This version is for commands that only require a key - - - - Sends a command to the server. - - - - - This version is for commands that only require a key and an integer value. - - - - Sends a command to the server. - - - - This version is for commands that only require a key and expiration. - - - - Represents a query attribute to a . - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the attribute name and its value. - - Name of the attribute. - Value of the attribute. - - - - Name of the query attribute. - - - - - Value of the query attribute. - - - - - Gets or sets the of the attribute. - - - - - Sets the MySqlDbType from the Value - - - - - Gets the value for the attribute type. - - - - - Serialize the value of the query attribute. - - - - - Represents a collection of query attributes relevant to a . - - - The following example creates multiple instances of - that are exposed as a collection through the - object within . This code example assumes that an instance - of was created - properly. - - Public Sub AddQueryAttributes() - ' ... - ' create MySqlCommand - ' ... - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute") - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now) - End Sub - - - public void AddQueryAttributes() - { - // ... - // create MySqlCommand - // ... - - myCommand.Attributes.SetAttribute("queryAttribute", "value of the query attribute"); - myCommand.Attributes.SetAttribute("queryAttribute2", DateTime.Now); - } - - - - - - Gets the at the specified index. - - - - - Gets the number of objects in the collection. - - - - - Adds the specified object to the . - - object to add. - - - - Adds a query attribute and its value. - - Name of the query attribute. - Value of the query attribute. - - - - Removes all items from the collection. - - - - - Returns an enumerator that iterates through the . - - - - - Abstract class that provides common functionality for connection options that apply for all protocols. - - - - - Readonly field containing a collection of protocol shared connection options. - - - - - Gets or sets a flag indicating if the object has access to procedures. - - - - - Gets or sets a dictionary representing key-value pairs for each connection option. - - - - - Gets or sets the name of the server. - - The server. - - - - Gets or sets the name of the database for the initial connection. - - - - - Gets or sets the protocol that should be used for communicating - with MySQL. - - - - - Gets or sets the port number that is used when the socket - protocol is being used. - - - - - Gets or sets a boolean value that indicates whether this connection - should resolve DNS SRV records. - - - - - Gets or sets the user ID that should be used to connect with. - - - - - Gets or sets the password that should be used to make a connection. - - - - - Gets or sets the path to the certificate file to be used. - - - - - Gets or sets the password to be used in conjunction with the certificate file. - - - - - Gets or sets the location to a personal store where a certificate is held. - - - - - Gets or sets a certificate thumbprint to ensure correct identification of a certificate contained within a personal store. - - - - - Indicates whether to use SSL connections and how to handle server certificate errors. - - - - - Sets the TLS versions to use in a SSL connection to the server. - - - Tls version=TLSv1.1,TLSv1.2; - - - - - Gets or sets the path to a local key file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the path to a local certificate file in PEM format to use for establishing an encrypted connection. - - - - - Gets or sets the idle connection time(seconds) for TCP connections. - - - - - Gets or sets the character set that should be used for sending queries to the server. - - - - - Analyzes the connection string for potential duplicated or invalid connection options. - - Connection string. - Flag that indicates if the connection is using X Protocol. - Flag that indicates if the default port is used. - - - - Represents a set of methods for creating instances of the MySQL client implementation of the data source classes. - - - - - Gets an instance of the . - This can be used to retrieve strongly typed data objects. - - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommand. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnection. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbParameter. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbConnectionStringBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbCommandBuilder. - - - - Returns a strongly typed instance. - - A new strongly typed instance of DbDataAdapter. - - - - Provide a simple caching layer - - - - - Aids in the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the Classic protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the name of the named pipe that should be used - for communicating with MySQL. - - - - - Gets or sets a boolean value that indicates whether this connection - should use compression. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - commands to send multiple SQL statements in one execution. - - - - - Gets or sets a boolean value that indicates whether logging is enabled. - - - - - Gets or sets the base name of the shared memory objects used to - communicate with MySQL when the shared memory protocol is being used. - - - - - Gets or sets the default command timeout. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets a boolean value that indicates whether this connection will allow - to load data local infile. - - - - - Gets or sets the safe path where files can be read and uploaded to the server. - - - - - Gets or sets a boolean value that indicates if the password should be persisted - in the connection string. - - - - - Gets or sets a boolean value that indicates if the connection should be encrypted. - - Obsolte. Use instead. - - - - Gets or sets a boolean value that indicates if RSA public keys should be retrieved from the server. - - This option is only relevant when SSL is disabled. Setting this option to true in - 8.0 servers that have the caching_sha2_password authentication plugin as the default plugin will - cause the connection attempt to fail if the user hasn't successfully connected to the server on a - previous occasion. - - - - Gets or sets the default authentication plugin to be used. This plugin takes precedence over - the server-side default authentication plugin when a valid authentication plugin is specified. - - - The default authentication plugin is mandatory for supporting user-less and password-less Kerberos authentications. - If no value is set, it uses the server-side default authentication plugin. - - - - - Gets or sets a boolean value that indicates if zero date time values are supported. - - Default value is false. - - - - Gets or sets a boolean value that indicates if zero datetime values should be - converted to DateTime.MinValue. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the Usage Advisor should be enabled. - - Default value is false. - - - - Gets or sets the size of the stored procedure cache. - - Default value is 25. - - - - Gets or sets a boolean value that indicates if the performance monitor hooks should be enabled. - - Default value is false. - - - - Gets or sets a boolean value that indicates if an opened connection should particiapte in the current scope. - - Default value is true. - - - - Gets or sets a boolean value that indicates if security asserts must be included. - - Must be set to true when using the class in a partial trust environment, - with the library installed in the GAC of the hosting environment. Not supported in .NET Core. - Default value is false. - - - - Gets or sets a boolean value that indicates if column binary flags set by the server are ignored. - - Default value is true. - - - - Gets or sets a boolean value that indicates if TINYINT(1) shound be treated as a BOOLEAN. - - Default value is true. - - - - Gets or sets a boolean value that indicates if the provider expects user variables in the SQL. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the session should be interactive. - - Default value is false. - - - - Gets or sets a boolean value that indicates if server functions should be treated as returning a string. - - Default value is false. - - - - Gets or sets a boolean value that indicates if the server should report affected rows instead of found rows. - - Default value is false. - - - - Gets or sets a boolean value that indicates if items of data type BINARY(16) should be treated as guids. - - Default value is false. - - - - Gets or sets a boolean value that indicates if SQL Server syntax should be allowed by supporting square brackets - around symbols instead of backticks. - - Default value is false. - - - - Gets or sets a boolean value that indicates if caching of TableDirect commands is enabled. - - Default value is false. - - - - Gets or sets the seconds for how long a TableDirect result should be cached. - - Default value is 0. - - - - Gets or sets a boolean value that indicates if stored routine parameters should be checked against the server. - - Default value is true. - - - - Gets or sets a boolean value that indicates if this connection will use replication. - - Default value is false. - - - - Gets or sets the list of interceptors that can triage thrown MySqlExceptions. - - - - - Gets or sets the list of interceptors that can intercept command operations. - - - - - Gets or sets the lifetime of a pooled connection. - - Default value is 0. - - - - Gets or sets a boolean value indicating if connection pooling is enabled. - - Default value is true. - - - - Gets the minimum connection pool size. - - Default value is 0. - - - - Gets or sets the maximum connection pool setting. - - Default value is 100. - - - - Gets or sets a boolean value that indicates if the connection should be reset when retrieved - from the pool. - - Default value is false. - - - - Gets or sets a boolean value that indicates whether the server variable settings are updated by a - SHOW VARIABLES command each time a pooled connection is returned. - - Default value is false. - - - - Indicates whether the driver should treat binary BLOBs as UTF8. - - Default value is false. - - - - Gets or sets the pattern to match for the columns that should be treated as UTF8. - - - - - Gets or sets the pattern to match for the columns that should not be treated as UTF8. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Summary description for ClientParam. - - - - - DB Operations Code - - - - - Specifies MySQL specific data type of a field, property, for use in a . - - - - - - A fixed precision and scale numeric value between -1038 - -1 and 10 38 -1. - - - - - The signed range is -128 to 127. The unsigned - range is 0 to 255. - - - - - A 16-bit signed integer. The signed range is - -32768 to 32767. The unsigned range is 0 to 65535 - - - - - Specifies a 24 (3 byte) signed or unsigned value. - - - - - A 32-bit signed integer - - - - - A 64-bit signed integer. - - - - - A small (single-precision) floating-point - number. Allowable values are -3.402823466E+38 to -1.175494351E-38, - 0, and 1.175494351E-38 to 3.402823466E+38. - - - - - A normal-size (double-precision) - floating-point number. Allowable values are -1.7976931348623157E+308 - to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to - 1.7976931348623157E+308. - - - - - A timestamp. The range is '1970-01-01 00:00:00' to sometime in the - year 2037 - - - - - Date The supported range is '1000-01-01' to '9999-12-31'. - - - - - Time The range is '-838:59:59' to '838:59:59'. - - - - - DateTime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - Datetime The supported range is '1000-01-01 00:00:00' to - '9999-12-31 23:59:59'. - - - - - A year in 2- or 4-digit format (default is 4-digit). The - allowable values are 1901 to 2155, 0000 in the 4-digit year - format, and 1970-2069 if you use the 2-digit format (70-69). - - - - - Obsolete Use Datetime or Date type - - - - - A variable-length string containing 0 to 65535 characters - - - - - Bit-field data type - - - - - JSON - - - - - New Decimal - - - - - An enumeration. A string object that can have only one value, - chosen from the list of values 'value1', 'value2', ..., NULL - or the special "" error value. An ENUM can have a maximum of - 65535 distinct values - - - - - A set. A string object that can have zero or more values, each - of which must be chosen from the list of values 'value1', 'value2', - ... A SET can have a maximum of 64 members. - - - - - A binary column with a maximum length of 255 (2^8 - 1) - characters - - - - - A binary column with a maximum length of 16777215 (2^24 - 1) bytes. - - - - - A binary column with a maximum length of 4294967295 or - 4G (2^32 - 1) bytes. - - - - - A binary column with a maximum length of 65535 (2^16 - 1) bytes. - - - - - A variable-length string containing 0 to 255 bytes. - - - - - A fixed-length string. - - - - - Geometric (GIS) data type. - - - - - Unsigned 8-bit value. - - - - - Unsigned 16-bit value. - - - - - Unsigned 24-bit value. - - - - - Unsigned 32-bit value. - - - - - Unsigned 64-bit value. - - - - - Fixed length binary string. - - - - - Variable length binary string. - - - - - A text column with a maximum length of 255 (2^8 - 1) characters. - - - - - A text column with a maximum length of 16777215 (2^24 - 1) characters. - - - - - A text column with a maximum length of 4294967295 or - 4G (2^32 - 1) characters. - - - - - A text column with a maximum length of 65535 (2^16 - 1) characters. - - - - - A guid column. - - - - - Allows the user to specify the type of connection that should - be used. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - TCP/IP style connection. Works everywhere. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Named pipe connection. Works only on Windows systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Unix domain socket connection. Works only with Unix systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - Shared memory connection. Currently works only with Windows systems. - - - - - SSL options for connection. - - - - - Do not use SSL. - - - - - Use SSL, if server supports it. This option is only available for the classic protocol. - - - - - Always use SSL. Deny connection if server does not support SSL. - Do not perform server certificate validation. - This is the default SSL mode when the same isn't specified as part of the connection string. - - - - - Always use SSL. Validate server SSL certificate, but different host name mismatch. - - - - - Always use SSL and perform full certificate validation. - - - - - Specifies the connection types supported - - - - - Use TCP/IP sockets. - - - - - Use client library. - - - - - Use MySQL embedded server. - - - - - Defines the location of the certificate store. - - - - - Do not use certificate store. - - - - - Use certificate store for the current user. - - - - - User certificate store for the machine. - - - - - Specifies the authentication mechanism that should be used. - - - - - If SSL is enabled or Unix sockets are being used, sets PLAIN as the authentication mechanism; - otherwise, it tries to use MYSQL41 and then SHA256_MEMORY. - - - - - Authenticate using PLAIN. - - - - - Authenticate using MYSQL41. - - - - - Authenticate using EXTERNAL. - - - - - Authenticate using SHA256_MEMORY. - - - - - Defines waiting options that may be used with row locking options. - - - - - Waits until the blocking transaction releases the row lock. - - - - - Never waits to acquire a row lock. The query executes immediately, - failing with an error if a requested row is locked. - - - - - Never waits to acquire a row lock. The query executes immediately, - removing locked rows from the result set. - - - - - Defines the type of compression used when data is exchanged between client and server. - - - - - Uses compression if client and server are able to reach a concensus. Otherwise, compression - is not used. - - - - - Enforces the use of compression. If no concensus is reached, an error is raised. - - - - - Disables compression. - - - - - Defines the compression algorithms that can be used. - - - - - The warnings that cause a connection to close. - - - - - Controls which column type should be read as type System.Guid. - - - - - Same as Char36 when OldGuids equals False, otherwise, the same as LittleEndianBinary16. - - - - - No column types are read or written as type Guid. - - - - - Char(36) columns are read or written as type Guid using lowercase hex with hyphens, which match UUID(). - - - - - Char(32) columns are read or written as type Guid using lowercase hex without hyphens. - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order, which matches UUID_TO_BIN(x). - - - - - Binary(16) columns are read or written as type Guid using big-endian byte order - with time parts swapped, which matches UUID_TO_BIN(x,1). - - - - - Binary(16) columns are read or written as type Guid using little-endian byte order, - that is, the byte order used by System.Guid.ToByteArray and System.Guid.#ctor(System.Byte[]). - - - - - Collection of error codes that can be returned by the server - - - - - - - - - - - Error level - - - - - Error code - - - - - Error message - - - - - Provides a reference to error codes returned by MySQL. - - - - - ER_HASHCHK - - - - ER_NISAMCHK - - - - ER_NO - - - - ER_YES - - - The file couldn't be created. - ER_CANT_CREATE_FILE - - - The table couldn't be created. - ER_CANT_CREATE_TABLE - - - The database couldn't be created. - ER_CANT_CREATE_DB - - - The database couldn't be created, it already exists. - ER_DB_CREATE_EXISTS - - - The database couldn't be dropped, it doesn't exist. - ER_DB_DROP_EXISTS - - - The database couldn't be dropped, the file can't be deleted. - ER_DB_DROP_DELETE - - - The database couldn't be dropped, the directory can't be deleted. - ER_DB_DROP_RMDIR - - - The file couldn't be deleted. - ER_CANT_DELETE_FILE - - - The record couldn't be read from the system table. - ER_CANT_FIND_SYSTEM_REC - - - The status couldn't be retrieved. - ER_CANT_GET_STAT - - - The working directory couldn't be retrieved. - ER_CANT_GET_WD - - - The file couldn't be locked. - ER_CANT_LOCK - - - The file couldn't be opened. - ER_CANT_OPEN_FILE - - - The file couldn't be found. - ER_FILE_NOT_FOUND - - - The directory couldn't be read. - ER_CANT_READ_DIR - - - The working directory couldn't be entered. - ER_CANT_SET_WD - - - The record changed since it was last read. - ER_CHECKREAD - - - The disk is full. - ER_DISK_FULL - - - - There is already a key with the given values. - - - - An error occurred when closing the file. - ER_ERROR_ON_CLOSE - - - An error occurred when reading from the file. - ER_ERROR_ON_READ - - - An error occurred when renaming then file. - ER_ERROR_ON_RENAME - - - An error occurred when writing to the file. - ER_ERROR_ON_WRITE - - - The file is in use. - ER_FILE_USED - - - Sorting has been aborted. - ER_FILSORT_ABORT - - - The view doesn't exist. - ER_FORM_NOT_FOUND - - - Got the specified error from the table storage engine. - ER_GET_ERRNO - - - The table storage engine doesn't support the specified option. - ER_ILLEGAL_HA - - - - The specified key was not found. - - - - The file contains incorrect information. - ER_NOT_FORM_FILE - - - The key file is incorrect for the table, it should be repaired. - ER_NOT_KEYFILE - - - The key file is old for the table, it should be repaired. - ER_OLD_KEYFILE - - - The table is read-only - ER_OPEN_AS_READONLY - - - The server is out of memory, it should be restarted. - ER_OUTOFMEMORY - - - The server is out of sort-memory, the sort buffer size should be increased. - ER_OUT_OF_SORTMEMORY - - - An unexpected EOF was found when reading from the file. - ER_UNEXPECTED_EOF - - - Too many connections are open. - ER_CON_COUNT_ERROR - - - The server is out of resources, check if MySql or some other process is using all available memory. - ER_OUT_OF_RESOURCES - - - - Given when the connection is unable to successfully connect to host. - - - - The handshake was invalid. - ER_HANDSHAKE_ERROR - - - Access was denied for the specified user using the specified database. - ER_DBACCESS_DENIED_ERROR - - - - Normally returned when an incorrect password is given - - - - No database has been selected. - ER_NO_DB_ERROR - - - The command is unknown. - ER_UNKNOWN_COM_ERROR - - - The specified column cannot be NULL. - ER_BAD_NULL_ERROR - - - The specified database is not known. - - - The specified table already exists. - ER_TABLE_EXISTS_ERROR - - - The specified table is unknown. - ER_BAD_TABLE_ERROR - - - The specified column is ambiguous. - ER_NON_UNIQ_ERROR - - - The server is currently being shutdown. - ER_SERVER_SHUTDOWN - - - The specified columns is unknown. - ER_BAD_FIELD_ERROR - - - The specified column isn't in GROUP BY. - ER_WRONG_FIELD_WITH_GROUP - - - The specified columns cannot be grouped on. - ER_WRONG_GROUP_FIELD - - - There are sum functions and columns in the same statement. - ER_WRONG_SUM_SELECT - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT - - - The identifier name is too long. - ER_TOO_LONG_IDENT - - - The column name is duplicated. - ER_DUP_FIELDNAME - - - - Duplicate Key Name - - - - - Duplicate Key Entry - - - - The column specifier is incorrect. - ER_WRONG_FIELD_SPEC - - - An error occurred when parsing the statement. - ER_PARSE_ERROR - - - The statement is empty. - ER_EMPTY_QUERY - - - The table alias isn't unique. - ER_NONUNIQ_TABLE - - - The default value is invalid for the specified field. - ER_INVALID_DEFAULT - - - The table has multiple primary keys defined. - ER_MULTIPLE_PRI_KEY - - - Too many keys were defined for the table. - ER_TOO_MANY_KEYS - - - Too many parts to the keys were defined for the table. - ER_TOO_MANY_KEY_PARTS - - - The specified key is too long - ER_TOO_LONG_KEY - - - The specified key column doesn't exist in the table. - ER_KEY_COLUMN_DOES_NOT_EXITS - - - The BLOB column was used as a key, this can't be done. - ER_BLOB_USED_AS_KEY - - - The column length is too big for the specified column type. - ER_TOO_BIG_FIELDLENGTH - - - There can only be one auto-column, and it must be defined as a PK. - ER_WRONG_AUTO_KEY - - - The server is ready to accept connections. - ER_READY - - - - ER_NORMAL_SHUTDOWN - - - The server received the specified signal and is aborting. - ER_GOT_SIGNAL - - - The server shutdown is complete. - ER_SHUTDOWN_COMPLETE - - - The server is forcing close of the specified thread. - ER_FORCING_CLOSE - - - An error occurred when creating the IP socket. - ER_IPSOCK_ERROR - - - The table has no index like the one used in CREATE INDEX. - ER_NO_SUCH_INDEX - - - The field separator argument is not what is expected, check the manual. - ER_WRONG_FIELD_TERMINATORS - - - The BLOB columns must terminated, fixed row lengths cannot be used. - ER_BLOBS_AND_NO_TERMINATED - - - The text file cannot be read. - ER_TEXTFILE_NOT_READABLE - - - The specified file already exists. - ER_FILE_EXISTS_ERROR - - - Information returned by the LOAD statement. - ER_LOAD_INFO - - - Information returned by an UPDATE statement. - ER_ALTER_INFO - - - The prefix key is incorrect. - ER_WRONG_SUB_KEY - - - All columns cannot be removed from a table, use DROP TABLE instead. - ER_CANT_REMOVE_ALL_FIELDS - - - Cannot DROP, check that the column or key exists. - ER_CANT_DROP_FIELD_OR_KEY - - - Information returned by an INSERT statement. - ER_INSERT_INFO - - - The target table cannot be specified for update in FROM clause. - ER_UPDATE_TABLE_USED - - - The specified thread ID is unknown. - ER_NO_SUCH_THREAD - - - The thread cannot be killed, the current user is not the owner. - ER_KILL_DENIED_ERROR - - - No tables used in the statement. - ER_NO_TABLES_USED - - - Too many string have been used for the specified column and SET. - ER_TOO_BIG_SET - - - A unique filename couldn't be generated. - ER_NO_UNIQUE_LOGFILE - - - The specified table was locked with a READ lock, and can't be updated. - ER_TABLE_NOT_LOCKED_FOR_WRITE - - - The specified table was not locked with LOCK TABLES. - ER_TABLE_NOT_LOCKED - - - BLOB and Text columns cannot have a default value. - ER_BLOB_CANT_HAVE_DEFAULT - - - The specified database name is incorrect. - ER_WRONG_DB_NAME - - - The specified table name is incorrect. - ER_WRONG_TABLE_NAME - - - The SELECT command would examine more than MAX_JOIN_SIZE rows, check the WHERE clause and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is ok. - ER_TOO_BIG_SELECT - - - An unknown error occurred. - ER_UNKNOWN_ERROR - - - The specified procedure is unknown. - ER_UNKNOWN_PROCEDURE - - - The number of parameters provided for the specified procedure is incorrect. - ER_WRONG_PARAMCOUNT_TO_PROCEDURE - - - The parameters provided for the specified procedure are incorrect. - ER_WRONG_PARAMETERS_TO_PROCEDURE - - - The specified table is unknown. - ER_UNKNOWN_TABLE - - - The specified column has been specified twice. - ER_FIELD_SPECIFIED_TWICE - - - The group function has been incorrectly used. - ER_INVALID_GROUP_FUNC_USE - - - The specified table uses an extension that doesn't exist in this MySQL version. - ER_UNSUPPORTED_EXTENSION - - - The table must have at least one column. - ER_TABLE_MUST_HAVE_COLUMNS - - - The specified table is full. - ER_RECORD_FILE_FULL - - - The specified character set is unknown. - ER_UNKNOWN_CHARACTER_SET - - - Too many tables, MySQL can only use the specified number of tables in a JOIN. - ER_TOO_MANY_TABLES - - - Too many columns - ER_TOO_MANY_FIELDS - - - The row size is too large, the maximum row size for the used tables (not counting BLOBS) is specified, change some columns or BLOBS. - ER_TOO_BIG_ROWSIZE - - - A thread stack overrun occurred. Stack statistics are specified. - ER_STACK_OVERRUN - - - A cross dependency was found in the OUTER JOIN, examine the ON conditions. - ER_WRONG_OUTER_JOIN - - - The table handler doesn't support NULL in the given index, change specified column to be NOT NULL or use another handler. - ER_NULL_COLUMN_IN_INDEX - - - The specified user defined function cannot be loaded. - ER_CANT_FIND_UDF - - - The specified user defined function cannot be initialised. - ER_CANT_INITIALIZE_UDF - - - No paths are allowed for the shared library. - ER_UDF_NO_PATHS - - - The specified user defined function already exists. - ER_UDF_EXISTS - - - The specified shared library cannot be opened. - ER_CANT_OPEN_LIBRARY - - - The specified symbol cannot be found in the library. - ER_CANT_FIND_DL_ENTRY - - - The specified function is not defined. - ER_FUNCTION_NOT_DEFINED - - - The specified host is blocked because of too many connection errors, unblock with 'mysqladmin flush-hosts'. - ER_HOST_IS_BLOCKED - - - - The given host is not allowed to connect - - - - - The anonymous user is not allowed to connect - - - - - The given password is not allowed - - - - - The given password does not match - - - - Information returned by an UPDATE statement. - ER_UPDATE_INFO - - - A new thread couldn't be created. - ER_CANT_CREATE_THREAD - - - The column count doesn't match the value count. - ER_WRONG_VALUE_COUNT_ON_ROW - - - The specified table can't be re-opened. - ER_CANT_REOPEN_TABLE - - - The NULL value has been used incorrectly. - ER_INVALID_USE_OF_NULL - - - The regular expression contains an error. - ER_REGEXP_ERROR - - - GROUP columns (MIN(), MAX(), COUNT(), ...) cannot be mixes with no GROUP columns if there is not GROUP BY clause. - ER_MIX_OF_GROUP_FUNC_AND_FIELDS - - - - ER_NONEXISTING_GRANT - - - - ER_TABLEACCESS_DENIED_ERROR - - - - ER_COLUMNACCESS_DENIED_ERROR - - - - ER_ILLEGAL_GRANT_FOR_TABLE - - - - ER_GRANT_WRONG_HOST_OR_USER - - - - ER_NO_SUCH_TABLE - - - - ER_NONEXISTING_TABLE_GRANT - - - - ER_NOT_ALLOWED_COMMAND - - - - ER_SYNTAX_ERROR - - - - ER_DELAYED_CANT_CHANGE_LOCK - - - - ER_TOO_MANY_DELAYED_THREADS - - - - ER_ABORTING_CONNECTION - - - - An attempt was made to send or receive a packet larger than - max_allowed_packet_size - - - - - ER_NET_READ_ERROR_FROM_PIPE - - - - ER_NET_FCNTL_ERROR - - - - ER_NET_PACKETS_OUT_OF_ORDER - - - - ER_NET_UNCOMPRESS_ERROR - - - - ER_NET_READ_ERROR - - - - ER_NET_READ_INTERRUPTED - - - - ER_NET_ERROR_ON_WRITE - - - - ER_NET_WRITE_INTERRUPTED - - - - ER_TOO_LONG_STRING - - - - ER_TABLE_CANT_HANDLE_BLOB - - - - ER_TABLE_CANT_HANDLE_AUTO_INCREMENT - - - - ER_DELAYED_INSERT_TABLE_LOCKED - - - - ER_WRONG_COLUMN_NAME - - - - ER_WRONG_KEY_COLUMN - - - - ER_WRONG_MRG_TABLE - - - - ER_DUP_UNIQUE - - - - ER_BLOB_KEY_WITHOUT_LENGTH - - - - ER_PRIMARY_CANT_HAVE_NULL - - - - ER_TOO_MANY_ROWS - - - - ER_REQUIRES_PRIMARY_KEY - - - - ER_NO_RAID_COMPILED - - - - ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE - - - - ER_KEY_DOES_NOT_EXITS - - - - ER_CHECK_NO_SUCH_TABLE - - - - ER_CHECK_NOT_IMPLEMENTED - - - - ER_CANT_DO_THIS_DURING_AN_TRANSACTION - - - - ER_ERROR_DURING_COMMIT - - - - ER_ERROR_DURING_ROLLBACK - - - - ER_ERROR_DURING_FLUSH_LOGS - - - - ER_ERROR_DURING_CHECKPOINT - - - - ER_NEW_ABORTING_CONNECTION - - - - ER_DUMP_NOT_IMPLEMENTED - - - - ER_FLUSH_SOURCE_BINLOG_CLOSED - - - - ER_INDEX_REBUILD - - - - ER_SOURCE - - - - ER_SOURCE_NET_READ - - - - ER_SOURCE_NET_WRITE - - - - ER_FT_MATCHING_KEY_NOT_FOUND - - - - ER_LOCK_OR_ACTIVE_TRANSACTION - - - - ER_UNKNOWN_SYSTEM_VARIABLE - - - - ER_CRASHED_ON_USAGE - - - - ER_CRASHED_ON_REPAIR - - - - ER_WARNING_NOT_COMPLETE_ROLLBACK - - - - ER_TRANS_CACHE_FULL - - - - ER_REPLICA_MUST_STOP - - - - ER_REPLICA_NOT_RUNNING - - - - ER_BAD_REPLICA - - - - ER_SOURCE_INFO - - - - ER_REPLICA_THREAD - - - - ER_TOO_MANY_USER_CONNECTIONS - - - - ER_SET_CONSTANTS_ONLY - - - - ER_LOCK_WAIT_TIMEOUT - - - - ER_LOCK_TABLE_FULL - - - - ER_READ_ONLY_TRANSACTION - - - - ER_DROP_DB_WITH_READ_LOCK - - - - ER_CREATE_DB_WITH_READ_LOCK - - - - ER_WRONG_ARGUMENTS - - - - ER_NO_PERMISSION_TO_CREATE_USER - - - - ER_UNION_TABLES_IN_DIFFERENT_DIR - - - - ER_LOCK_DEADLOCK - - - - ER_TABLE_CANT_HANDLE_FT - - - - ER_CANNOT_ADD_FOREIGN - - - - ER_NO_REFERENCED_ROW - - - - ER_ROW_IS_REFERENCED - - - - ER_CONNECT_TO_SOURCE - - - - ER_QUERY_ON_SOURCE - - - - ER_ERROR_WHEN_EXECUTING_COMMAND - - - - ER_WRONG_USAGE - - - - ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT - - - - ER_CANT_UPDATE_WITH_READLOCK - - - - ER_MIXING_NOT_ALLOWED - - - - ER_DUP_ARGUMENT - - - - ER_USER_LIMIT_REACHED - - - - ER_SPECIFIC_ACCESS_DENIED_ERROR - - - - ER_LOCAL_VARIABLE - - - - ER_GLOBAL_VARIABLE - - - - ER_NO_DEFAULT - - - - ER_WRONG_VALUE_FOR_VAR - - - - ER_WRONG_TYPE_FOR_VAR - - - - ER_VAR_CANT_BE_READ - - - - ER_CANT_USE_OPTION_HERE - - - - ER_NOT_SUPPORTED_YET - - - - ER_SOURCE_FATAL_ERROR_READING_BINLOG - - - - ER_REPLICA_IGNORED_TABLE - - - - ER_INCORRECT_GLOBAL_LOCAL_VAR - - - - ER_WRONG_FK_DEF - - - - ER_KEY_REF_DO_NOT_MATCH_TABLE_REF - - - - ER_OPERAND_COLUMNS - - - - ER_SUBQUERY_NO_1_ROW - - - - ER_UNKNOWN_STMT_HANDLER - - - - ER_CORRUPT_HELP_DB - - - - ER_CYCLIC_REFERENCE - - - - ER_AUTO_CONVERT - - - - ER_ILLEGAL_REFERENCE - - - - ER_DERIVED_MUST_HAVE_ALIAS - - - - ER_SELECT_REDUCED - - - - ER_TABLENAME_NOT_ALLOWED_HERE - - - - ER_NOT_SUPPORTED_AUTH_MODE - - - - ER_SPATIAL_CANT_HAVE_NULL - - - - ER_COLLATION_CHARSET_MISMATCH - - - - ER_REPLICA_WAS_RUNNING - - - - ER_REPLICA_WAS_NOT_RUNNING - - - - ER_TOO_BIG_FOR_UNCOMPRESS - - - - ER_ZLIB_Z_MEM_ERROR - - - - ER_ZLIB_Z_BUF_ERROR - - - - ER_ZLIB_Z_DATA_ERROR - - - - ER_CUT_VALUE_GROUP_CONCAT - - - - ER_WARN_TOO_FEW_RECORDS - - - - ER_WARN_TOO_MANY_RECORDS - - - - ER_WARN_NULL_TO_NOTNULL - - - - ER_WARN_DATA_OUT_OF_RANGE - - - - WARN_DATA_TRUNCATED - - - - ER_WARN_USING_OTHER_HANDLER - - - - ER_CANT_AGGREGATE_2COLLATIONS - - - - ER_DROP_USER - - - - ER_REVOKE_GRANTS - - - - ER_CANT_AGGREGATE_3COLLATIONS - - - - ER_CANT_AGGREGATE_NCOLLATIONS - - - - ER_VARIABLE_IS_NOT_STRUCT - - - - ER_UNKNOWN_COLLATION - - - - ER_REPLICA_IGNORED_SSL_PARAMS - - - - ER_SERVER_IS_IN_SECURE_AUTH_MODE - - - - ER_WARN_FIELD_RESOLVED - - - - ER_BAD_REPLICA_UNTIL_COND - - - - ER_MISSING_SKIP_REPLICA - - - - ER_UNTIL_COND_IGNORED - - - - ER_WRONG_NAME_FOR_INDEX - - - - ER_WRONG_NAME_FOR_CATALOG - - - - ER_WARN_QC_RESIZE - - - - ER_BAD_FT_COLUMN - - - - ER_UNKNOWN_KEY_CACHE - - - - ER_WARN_HOSTNAME_WONT_WORK - - - - ER_UNKNOWN_STORAGE_ENGINE - - - - ER_WARN_DEPRECATED_SYNTAX - - - - ER_NON_UPDATABLE_TABLE - - - - ER_FEATURE_DISABLED - - - - ER_OPTION_PREVENTS_STATEMENT - - - - ER_DUPLICATED_VALUE_IN_TYPE - - - - ER_TRUNCATED_WRONG_VALUE - - - - ER_TOO_MUCH_AUTO_TIMESTAMP_COLS - - - - ER_INVALID_ON_UPDATE - - - - ER_UNSUPPORTED_PS - - - - ER_GET_ERRMSG - - - - ER_GET_TEMPORARY_ERRMSG - - - - ER_UNKNOWN_TIME_ZONE - - - - ER_WARN_INVALID_TIMESTAMP - - - - ER_INVALID_CHARACTER_STRING - - - - ER_WARN_ALLOWED_PACKET_OVERFLOWED - - - - ER_CONFLICTING_DECLARATIONS - - - - ER_SP_NO_RECURSIVE_CREATE - - - - ER_SP_ALREADY_EXISTS - - - - ER_SP_DOES_NOT_EXIST - - - - ER_SP_DROP_FAILED - - - - ER_SP_STORE_FAILED - - - - ER_SP_LILABEL_MISMATCH - - - - ER_SP_LABEL_REDEFINE - - - - ER_SP_LABEL_MISMATCH - - - - ER_SP_UNINIT_VAR - - - - ER_SP_BADSELECT - - - - ER_SP_BADRETURN - - - - ER_SP_BADSTATEMENT - - - - ER_UPDATE_LOG_DEPRECATED_IGNORED - - - - ER_UPDATE_LOG_DEPRECATED_TRANSLATED - - - - ER_QUERY_INTERRUPTED - - - - ER_SP_WRONG_NO_OF_ARGS - - - - ER_SP_COND_MISMATCH - - - - ER_SP_NORETURN - - - - ER_SP_NORETURNEND - - - - ER_SP_BAD_CURSOR_QUERY - - - - ER_SP_BAD_CURSOR_SELECT - - - - ER_SP_CURSOR_MISMATCH - - - - ER_SP_CURSOR_ALREADY_OPEN - - - - ER_SP_CURSOR_NOT_OPEN - - - - ER_SP_UNDECLARED_VAR - - - - ER_SP_WRONG_NO_OF_FETCH_ARGS - - - - ER_SP_FETCH_NO_DATA - - - - ER_SP_DUP_PARAM - - - - ER_SP_DUP_VAR - - - - ER_SP_DUP_COND - - - - ER_SP_DUP_CURS - - - - ER_SP_CANT_ALTER - - - - ER_SP_SUBSELECT_NYI - - - - ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_SP_VARCOND_AFTER_CURSHNDLR - - - - ER_SP_CURSOR_AFTER_HANDLER - - - - ER_SP_CASE_NOT_FOUND - - - - ER_FPARSER_TOO_BIG_FILE - - - - ER_FPARSER_BAD_HEADER - - - - ER_FPARSER_EOF_IN_COMMENT - - - - ER_FPARSER_ERROR_IN_PARAMETER - - - - ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER - - - - ER_VIEW_NO_EXPLAIN - - - - ER_FRM_UNKNOWN_TYPE - - - - ER_WRONG_OBJECT - - - - ER_NONUPDATEABLE_COLUMN - - - - ER_VIEW_SELECT_DERIVED - - - - ER_VIEW_SELECT_CLAUSE - - - - ER_VIEW_SELECT_VARIABLE - - - - ER_VIEW_SELECT_TMPTABLE - - - - ER_VIEW_WRONG_LIST - - - - ER_WARN_VIEW_MERGE - - - - ER_WARN_VIEW_WITHOUT_KEY - - - - ER_VIEW_INVALID - - - - ER_SP_NO_DROP_SP - - - - ER_SP_GOTO_IN_HNDLR - - - - ER_TRG_ALREADY_EXISTS - - - - ER_TRG_DOES_NOT_EXIST - - - - ER_TRG_ON_VIEW_OR_TEMP_TABLE - - - - ER_TRG_CANT_CHANGE_ROW - - - - ER_TRG_NO_SUCH_ROW_IN_TRG - - - - ER_NO_DEFAULT_FOR_FIELD - - - - ER_DIVISION_BY_ZERO - - - - ER_TRUNCATED_WRONG_VALUE_FOR_FIELD - - - - ER_ILLEGAL_VALUE_FOR_TYPE - - - - ER_VIEW_NONUPD_CHECK - - - - ER_VIEW_CHECK_FAILED - - - - ER_PROCACCESS_DENIED_ERROR - - - - ER_RELAY_LOG_FAIL - - - - ER_PASSWD_LENGTH - - - - ER_UNKNOWN_TARGET_BINLOG - - - - ER_IO_ERR_LOG_INDEX_READ - - - - ER_BINLOG_PURGE_PROHIBITED - - - - ER_FSEEK_FAIL - - - - ER_BINLOG_PURGE_FATAL_ERR - - - - ER_LOG_IN_USE - - - - ER_LOG_PURGE_UNKNOWN_ERR - - - - ER_RELAY_LOG_INIT - - - - ER_NO_BINARY_LOGGING - - - - ER_RESERVED_SYNTAX - - - - ER_WSAS_FAILED - - - - ER_DIFF_GROUPS_PROC - - - - ER_NO_GROUP_FOR_PROC - - - - ER_ORDER_WITH_PROC - - - - ER_LOGGING_PROHIBIT_CHANGING_OF - - - - ER_NO_FILE_MAPPING - - - - ER_WRONG_MAGIC - - - - ER_PS_MANY_PARAM - - - - ER_KEY_PART_0 - - - - ER_VIEW_CHECKSUM - - - - ER_VIEW_MULTIUPDATE - - - - ER_VIEW_NO_INSERT_FIELD_LIST - - - - ER_VIEW_DELETE_MERGE_VIEW - - - - ER_CANNOT_USER - - - - ER_XAER_NOTA - - - - ER_XAER_INVAL - - - - ER_XAER_RMFAIL - - - - ER_XAER_OUTSIDE - - - - ER_XAER_RMERR - - - - ER_XA_RBROLLBACK - - - - ER_NONEXISTING_PROC_GRANT - - - - ER_PROC_AUTO_GRANT_FAIL - - - - ER_PROC_AUTO_REVOKE_FAIL - - - - ER_DATA_TOO_LONG - - - - ER_SP_BAD_SQLSTATE - - - - ER_STARTUP - - - - ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR - - - - ER_CANT_CREATE_USER_WITH_GRANT - - - - ER_WRONG_VALUE_FOR_TYPE - - - - ER_TABLE_DEF_CHANGED - - - - ER_SP_DUP_HANDLER - - - - ER_SP_NOT_VAR_ARG - - - - ER_SP_NO_RETSET - - - - ER_CANT_CREATE_GEOMETRY_OBJECT - - - - ER_FAILED_ROUTINE_BREAK_BINLOG - - - - ER_BINLOG_UNSAFE_ROUTINE - - - - ER_BINLOG_CREATE_ROUTINE_NEED_SUPER - - - - ER_EXEC_STMT_WITH_OPEN_CURSOR - - - - ER_STMT_HAS_NO_OPEN_CURSOR - - - - ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG - - - - ER_NO_DEFAULT_FOR_VIEW_FIELD - - - - ER_SP_NO_RECURSION - - - - ER_TOO_BIG_SCALE - - - - ER_TOO_BIG_PRECISION - - - - ER_M_BIGGER_THAN_D - - - - ER_WRONG_LOCK_OF_SYSTEM_TABLE - - - - ER_CONNECT_TO_FOREIGN_DATA_SOURCE - - - - ER_QUERY_ON_FOREIGN_DATA_SOURCE - - - - ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST - - - - ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE - - - - ER_FOREIGN_DATA_STRING_INVALID - - - - ER_CANT_CREATE_FEDERATED_TABLE - - - - ER_TRG_IN_WRONG_SCHEMA - - - - ER_STACK_OVERRUN_NEED_MORE - - - - ER_TOO_LONG_BODY - - - - ER_WARN_CANT_DROP_DEFAULT_KEYCACHE - - - - ER_TOO_BIG_DISPLAYWIDTH - - - - ER_XAER_DUPID - - - - ER_DATETIME_FUNCTION_OVERFLOW - - - - ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG - - - - ER_VIEW_PREVENT_UPDATE - - - - ER_PS_NO_RECURSION - - - - ER_SP_CANT_SET_AUTOCOMMIT - - - - ER_MALFORMED_DEFINER - - - - ER_VIEW_FRM_NO_USER - - - - ER_VIEW_OTHER_USER - - - - ER_NO_SUCH_USER - - - - ER_FORBID_SCHEMA_CHANGE - - - - ER_ROW_IS_REFERENCED_2 - - - - ER_NO_REFERENCED_ROW_2 - - - - ER_SP_BAD_VAR_SHADOW - - - - ER_TRG_NO_DEFINER - - - - ER_OLD_FILE_FORMAT - - - - ER_SP_RECURSION_LIMIT - - - - ER_SP_PROC_TABLE_CORRUPT - - - - ER_SP_WRONG_NAME - - - - ER_TABLE_NEEDS_UPGRADE - - - - ER_SP_NO_AGGREGATE - - - - ER_MAX_PREPARED_STMT_COUNT_REACHED - - - - ER_VIEW_RECURSIVE - - - - ER_NON_GROUPING_FIELD_USED - - - - ER_TABLE_CANT_HANDLE_SPKEYS - - - - ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA - - - - ER_REMOVED_SPACES - - - - ER_AUTOINC_READ_FAILED - - - - ER_USERNAME - - - - ER_HOSTNAME - - - - ER_WRONG_STRING_LENGTH - - - - ER_NON_INSERTABLE_TABLE - - - - ER_ADMIN_WRONG_MRG_TABLE - - - - ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT - - - - ER_NAME_BECOMES_EMPTY - - - - ER_AMBIGUOUS_FIELD_TERM - - - - ER_FOREIGN_SERVER_EXISTS - - - - ER_FOREIGN_SERVER_DOESNT_EXIST - - - - ER_ILLEGAL_HA_CREATE_OPTION - - - - ER_PARTITION_REQUIRES_VALUES_ERROR - - - - ER_PARTITION_WRONG_VALUES_ERROR - - - - ER_PARTITION_MAXVALUE_ERROR - - - - ER_PARTITION_SUBPARTITION_ERROR - - - - ER_PARTITION_SUBPART_MIX_ERROR - - - - ER_PARTITION_WRONG_NO_PART_ERROR - - - - ER_PARTITION_WRONG_NO_SUBPART_ERROR - - - - ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR - - - - ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR - - - - ER_FIELD_NOT_FOUND_PART_ERROR - - - - ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR - - - - ER_INCONSISTENT_PARTITION_INFO_ERROR - - - - ER_PARTITION_FUNC_NOT_ALLOWED_ERROR - - - - ER_PARTITIONS_MUST_BE_DEFINED_ERROR - - - - ER_RANGE_NOT_INCREASING_ERROR - - - - ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR - - - - ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR - - - - ER_PARTITION_ENTRY_ERROR - - - - ER_MIX_HANDLER_ERROR - - - - ER_PARTITION_NOT_DEFINED_ERROR - - - - ER_TOO_MANY_PARTITIONS_ERROR - - - - ER_SUBPARTITION_ERROR - - - - ER_CANT_CREATE_HANDLER_FILE - - - - ER_BLOB_FIELD_IN_PART_FUNC_ERROR - - - - ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF - - - - ER_NO_PARTS_ERROR - - - - ER_PARTITION_MGMT_ON_NONPARTITIONED - - - - ER_FOREIGN_KEY_ON_PARTITIONED - - - - ER_DROP_PARTITION_NON_EXISTENT - - - - ER_DROP_LAST_PARTITION - - - - ER_COALESCE_ONLY_ON_HASH_PARTITION - - - - ER_REORG_HASH_ONLY_ON_SAME_NO - - - - ER_REORG_NO_PARAM_ERROR - - - - ER_ONLY_ON_RANGE_LIST_PARTITION - - - - ER_ADD_PARTITION_SUBPART_ERROR - - - - ER_ADD_PARTITION_NO_NEW_PARTITION - - - - ER_COALESCE_PARTITION_NO_PARTITION - - - - ER_REORG_PARTITION_NOT_EXIST - - - - ER_SAME_NAME_PARTITION - - - - ER_NO_BINLOG_ERROR - - - - ER_CONSECUTIVE_REORG_PARTITIONS - - - - ER_REORG_OUTSIDE_RANGE - - - - ER_PARTITION_FUNCTION_FAILURE - - - - ER_PART_STATE_ERROR - - - - ER_LIMITED_PART_RANGE - - - - ER_PLUGIN_IS_NOT_LOADED - - - - ER_WRONG_VALUE - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE - - - - ER_FILEGROUP_OPTION_ONLY_ONCE - - - - ER_CREATE_FILEGROUP_FAILED - - - - ER_DROP_FILEGROUP_FAILED - - - - ER_TABLESPACE_AUTO_EXTEND_ERROR - - - - ER_WRONG_SIZE_NUMBER - - - - ER_SIZE_OVERFLOW_ERROR - - - - ER_ALTER_FILEGROUP_FAILED - - - - ER_BINLOG_ROW_LOGGING_FAILED - - - - ER_BINLOG_ROW_WRONG_TABLE_DEF - - - - ER_BINLOG_ROW_RBR_TO_SBR - - - - ER_EVENT_ALREADY_EXISTS - - - - ER_EVENT_STORE_FAILED - - - - ER_EVENT_DOES_NOT_EXIST - - - - ER_EVENT_CANT_ALTER - - - - ER_EVENT_DROP_FAILED - - - - ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG - - - - ER_EVENT_ENDS_BEFORE_STARTS - - - - ER_EVENT_EXEC_TIME_IN_THE_PAST - - - - ER_EVENT_OPEN_TABLE_FAILED - - - - ER_EVENT_NEITHER_M_EXPR_NOR_M_AT - - - - ER_COL_COUNT_DOESNT_MATCH_CORRUPTED - - - - ER_CANNOT_LOAD_FROM_TABLE - - - - ER_EVENT_CANNOT_DELETE - - - - ER_EVENT_COMPILE_ERROR - - - - ER_EVENT_SAME_NAME - - - - ER_EVENT_DATA_TOO_LONG - - - - ER_DROP_INDEX_FK - - - - ER_WARN_DEPRECATED_SYNTAX_WITH_VER - - - - ER_CANT_WRITE_LOCK_LOG_TABLE - - - - ER_CANT_LOCK_LOG_TABLE - - - - ER_FOREIGN_DUPLICATE_KEY - - - - ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE - - - - ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR - - - - ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT - - - - ER_NDB_CANT_SWITCH_BINLOG_FORMAT - - - - ER_PARTITION_NO_TEMPORARY - - - - ER_PARTITION_CONST_DOMAIN_ERROR - - - - ER_PARTITION_FUNCTION_IS_NOT_ALLOWED - - - - ER_DDL_LOG_ERROR - - - - ER_NULL_IN_VALUES_LESS_THAN - - - - ER_WRONG_PARTITION_NAME - - - - ER_CANT_CHANGE_TRANSACTION_ISOLATION - - - - ER_DUP_ENTRY_AUTOINCREMENT_CASE - - - - ER_EVENT_MODIFY_QUEUE_ERROR - - - - ER_EVENT_SET_VAR_ERROR - - - - ER_PARTITION_MERGE_ERROR - - - - ER_CANT_ACTIVATE_LOG - - - - ER_RBR_NOT_AVAILABLE - - - - ER_BASE64_DECODE_ERROR - - - - ER_EVENT_RECURSION_FORBIDDEN - - - - ER_EVENTS_DB_ERROR - - - - ER_ONLY_INTEGERS_ALLOWED - - - - ER_UNSUPORTED_LOG_ENGINE - - - - ER_BAD_LOG_STATEMENT - - - - ER_CANT_RENAME_LOG_TABLE - - - - ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_NATIVE_FCT - - - - ER_WRONG_PARAMETERS_TO_STORED_FCT - - - - ER_NATIVE_FCT_NAME_COLLISION - - - - ER_DUP_ENTRY_WITH_KEY_NAME - - - - ER_BINLOG_PURGE_EMFILE - - - - ER_EVENT_CANNOT_CREATE_IN_THE_PAST - - - - ER_EVENT_CANNOT_ALTER_IN_THE_PAST - - - - ER_REPLICA_INCIDENT - - - - ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT - - - - ER_BINLOG_UNSAFE_STATEMENT - - - - ER_REPLICA_FATAL_ERROR - - - - ER_REPLICA_RELAY_LOG_READ_FAILURE - - - - ER_REPLICA_RELAY_LOG_WRITE_FAILURE - - - - ER_REPLICA_CREATE_EVENT_FAILURE - - - - ER_REPLICA_SOURCE_COM_FAILURE - - - - ER_BINLOG_LOGGING_IMPOSSIBLE - - - - ER_VIEW_NO_CREATION_CTX - - - - ER_VIEW_INVALID_CREATION_CTX - - - - ER_SR_INVALID_CREATION_CTX - - - - ER_TRG_CORRUPTED_FILE - - - - ER_TRG_NO_CREATION_CTX - - - - ER_TRG_INVALID_CREATION_CTX - - - - ER_EVENT_INVALID_CREATION_CTX - - - - ER_TRG_CANT_OPEN_TABLE - - - - ER_CANT_CREATE_SROUTINE - - - - ER_REPLICA_AMBIGOUS_EXEC_MODE - - - - ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT - - - - ER_REPLICA_CORRUPT_EVENT - - - - ER_LOAD_DATA_INVALID_COLUMN - - - - ER_LOG_PURGE_NO_FILE - - - - ER_XA_RBTIMEOUT - - - - ER_XA_RBDEADLOCK - - - - ER_NEED_REPREPARE - - - - ER_DELAYED_NOT_SUPPORTED - - - - WARN_NO_SOURCE_INFO - - - - WARN_OPTION_IGNORED - - - - WARN_PLUGIN_DELETE_BUILTIN - - - - WARN_PLUGIN_BUSY - - - - ER_VARIABLE_IS_READONLY - - - - ER_WARN_ENGINE_TRANSACTION_ROLLBACK - - - - ER_REPLICA_HEARTBEAT_FAILURE - - - - ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE - - - - ER_NDB_REPLICATION_SCHEMA_ERROR - - - - ER_CONFLICT_FN_PARSE_ERROR - - - - ER_EXCEPTIONS_WRITE_ERROR - - - - ER_TOO_LONG_TABLE_COMMENT - - - - ER_TOO_LONG_FIELD_COMMENT - - - - ER_FUNC_INEXISTENT_NAME_COLLISION - - - - ER_DATABASE_NAME - - - - ER_TABLE_NAME - - - - ER_PARTITION_NAME - - - - ER_SUBPARTITION_NAME - - - - ER_TEMPORARY_NAME - - - - ER_RENAMED_NAME - - - - ER_TOO_MANY_CONCURRENT_TRXS - - - - WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED - - - - ER_DEBUG_SYNC_TIMEOUT - - - - ER_DEBUG_SYNC_HIT_LIMIT - - - - ER_ERROR_LAST - - - - ER_CLIENT_INTERACTION_TIMEOUT - - - - WriteInteger - - - - - - - Summary description for MySqlPool. - - - - - It is assumed that this property will only be used from inside an active - lock. - - - - - Indicates whether this pool is being cleared. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - It is assumed that this method is only called from inside an active lock. - - - - - Removes a connection from the in use pool. The only situations where this method - would be called are when a connection that is in use gets some type of fatal exception - or when the connection is being returned to the pool and it's too old to be - returned. - - - - - - Clears this pool of all idle connections and marks this pool and being cleared - so all other connections are closed when they are returned. - - - - - Remove expired drivers from the idle pool - - - - Closing driver is a potentially lengthy operation involving network - IO. Therefore we do not close expired drivers while holding - idlePool.SyncRoot lock. We just remove the old drivers from the idle - queue and return them to the caller. The caller will need to close - them (or let GC close them) - - - - - Summary description for MySqlPoolManager. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove drivers that have been idle for too long. - - - - - Remove hosts that have been on the demoted list for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Provides a class capable of executing a SQL script containing - multiple SQL statements including CREATE PROCEDURE statements - that require changing the delimiter - - - - - Handles the event raised whenever a statement is executed. - - - - - Handles the event raised whenever an error is raised by the execution of a script. - - - - - Handles the event raised whenever a script execution is finished. - - - - - Initializes a new instance of the - class. - - - - - Initializes a new instance of the - class. - - The connection. - - - - Initializes a new instance of the - class. - - The query. - - - - Initializes a new instance of the - class. - - The connection. - The query. - - - - Gets or sets the connection. - - The connection. - - - - Gets or sets the query. - - The query. - - - - Gets or sets the delimiter. - - The delimiter. - - - - Executes this instance. - - The number of statements executed as part of the script. - - - - Initiates the asynchronous execution of SQL statements. - - The number of statements executed as part of the script inside. - - - - Initiates the asynchronous execution of SQL statements. - - The cancellation token. - The number of statements executed as part of the script inside. - - - - Represents the method that will handle errors when executing MySQL statements. - - - - - Represents the method that will handle errors when executing MySQL scripts. - - - - - Sets the arguments associated to MySQL scripts. - - - - - Gets the statement text. - - The statement text. - - - - Gets the line. - - The line. - - - - Gets the position. - - The position. - - - - Sets the arguments associated to MySQL script errors. - - - - - Initializes a new instance of the class. - - The exception. - - - - Gets the exception. - - The exception. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignore; otherwise, false. - - - - Summary description for MySqlStream. - - - - - ReadPacket is called by NativeDriver to start reading the next - packet on the stream. - - - - - Reads the specified number of bytes from the stream and stores them at given - offset in the buffer. - Throws EndOfStreamException if not all bytes can be read. - - Stream to read from - Array to store bytes read from the stream - The offset in buffer at which to begin storing the data read from the current stream. - Number of bytes to read - - - - LoadPacket loads up and decodes the header of the incoming packet. - - - - - Traces information about the client execution. - - - - - Gets the list of trace listeners. - - - - - Gets or sets the switch to control tracing and debugging. - - - - - Gets or sets a flag indicating if query analysis is enabled. - - - - - Enables query analysis. - - The host on which to enable query analysis. - The interval of time for logging trace information. - - - - Disables query analysis. - - - - - Specifies the types of warning flags. - - - - - No index exists. - - - - - Bad index exists. - - - - - Rows have been excluded from the result. - - - - - Columns have been excluded from the result. - - - - - Type conversions took place. - - - - - Specifies the event that triggered the trace. - - - - - A connection has been opened. - - - - - A connection has been closed. - - - - - A query has been executed. - - - - - Data has been retrieved from the resultset. - - - - - Data retrieval has ended. - - - - - Query execution has ended. - - - - - The statement to be executed has been created. - - - - - The statement has been executed. - - - - - The statement is no longer required. - - - - - The query provided is of a nonquery type. - - - - - Usage advisor warnings have been requested. - - - - - Noncritical problem. - - - - - An error has been raised during data retrieval. - - - - - The query has been normalized. - - - - - Summary description for Driver. - - - - - Sets the current database for the this connection - - - - - - Return the appropriate set of connection flags for our - server capabilities and our user requested options. - - - - - Query is the method that is called to send all queries to the server - - - - - Verify that the file to upload is in a valid directory - according to the safe path entered by a user under - "AllowLoadLocalInfileInPath" connection option. - - File to validate against the safe path. - - - - Sends the specified file to the server. - This supports the LOAD DATA LOCAL INFILE - - - - - - FetchDataRow is the method that the data reader calls to see if there is another - row to fetch. In the non-prepared mode, it will simply read the next data packet. - In the prepared mode (statementId > 0), it will - - - - - Execution timeout, in milliseconds. When the accumulated time for network IO exceeds this value - TimeoutException is thrown. This timeout needs to be reset for every new command - - - - - - Summary description for PreparedStatement. - - - - - Prepares CommandText for use with the Prepare method - - Command text stripped of all paramter names - - Takes the output of TokenizeSql and creates a single string of SQL - that only contains '?' markers for each parameter. It also creates - the parameterMap array list that includes all the paramter names in the - order they appeared in the SQL - - - - - Defines a replication configurarion element in the configuration file. - - - - - Gets a collection of objects representing the server groups. - - - - - Defines a replication server group in the configuration file. - - - - - Gets or sets the name of the replication server group configuration. - - - - - Gets or sets the group type of the replication server group configuration. - - - - - Gets or sets the number of seconds to wait for retry. - - - - - Gets a collection of objects representing the - server configurations associated to this group configuration. - - - - - Defines a replication server in configuration file. - - - - - Gets or sets the name of the replication server configuration. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets whether the replication server is configured as source. - - - - - Gets or sets the connection string associated to this replication server. - - - - - Manager for Replication and Load Balancing features - - - - - Returns Replication Server Group List - - - - - Adds a Default Server Group to the list - - Group name - Time between reconnections for failed servers - Replication Server Group added - - - - Adds a Server Group to the list - - Group name - ServerGroup type reference - Time between reconnections for failed servers - Server Group added - - - - Gets the next server from a replication group - - Group name - True if the server to return must be a source - Replication Server defined by the Load Balancing plugin - - - - Gets a Server Group by name - - Group name - Server Group if found, otherwise throws an MySqlException - - - - Validates if the replication group name exists - - Group name to validate - true if the replication group name is found; otherwise, false - - - - Assigns a new server driver to the connection object - - Group name - True if the server connection to assign must be a source - MySqlConnection object where the new driver will be assigned - - - - Class that implements Round Robing Load Balancing technique. - - - - - Gets an available server based on Round Robin load balancing. - - Flag indicating if the server to return must be a source. - A object representing the next available server. - - - - Represents a server in a Replication environment. - - - - - Gets the server name. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets a value indicating whether the server is source or replica. - - - - - Gets the connection string used to connect to the server. - - - - - Gets a flag indicating if the server is available to be considered in load balancing. - - - - - Base class used to implement load balancing features. - - - - - List of servers available for replication. - - - - The group name. - The number of seconds to perform a retry. - - - - Gets the group name. - - - - - Gets the retry time between connections to failed servers. - - - - - Gets the server list in the group. - - - - - Adds a server into the group. - - The server name. - A flag indicating if the server to add is source or replica. - The connection string used by this server. - A object representing the recently added object. - - - - Removes a server from the group. - - The server name. - - - - Gets a server by name. - - The server name. - The replication server. - - - - Must be implemented. Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Defines the next server for a custom load balancing implementation. - - Defines if the server to return is a source or any. - Currently not being used. - The next server based on the load balancing implementation. - Null if no available server is found. - - - - - Handles a failed connection to a server. - - The failed server. - This method can be overrided to implement a custom failover handling. - - - - Handles a failed connection to a server. - - The failed server. - The exception that caused the failover. - - - - return the ordinal for the given column name - - - - - - - Retrieve the value as the given column index - - The column value to retrieve - The value as the given column - - - - Closes the current resultset, dumping any data still on the wire - - - - - Loads the column metadata for the current resultset - - - - - Represents a schema and its contents. - - - - - Gets or sets the name of the schema. - - - - - Gets the list of columns in the schema. - - - - - Gets the list of rows in the schema. - - - - - Represents a row within a schema. - - - - - Represents a column within a schema. - - - - - The name of the column. - - - - - The type of the column. - - - - - GetForeignKeysOnTable retrieves the foreign keys on the given table. - Since MySQL supports foreign keys on versions prior to 5.0, we can't use - information schema. MySQL also does not include any type of SHOW command - for foreign keys so we have to resort to use SHOW CREATE TABLE and parsing - the output. - - The table to store the key info in. - The table to get the foeign key info for. - Only get foreign keys that match this name. - Should column information be included in the table. - - - - Builds the initial part of the COM_QUERY packet - - Collection of parameters - Collection of attributes - A - - - - Serializes the given parameter to the given memory stream - - - This method is called by PrepareSqlBuffers to convert the given - parameter to bytes and write those bytes to the given memory stream. - - - True if the parameter was successfully serialized, false otherwise. - - - - Summary description for StoredProcedure. - - - - - Defines the basic operations to be performed on the table cache. - - - - - The maximum age allowed for cache entries. - - - - - Adds the given command and result set to the cache. - - The command to store in the cache. - The resultset associated to the stored command. - - - - Retrieves the specified command from the cache. - - The command to retrieve. - The allowed age for the cache entry. - - - - - Removes the specified command from the cache. - - The command to remove from the cache. - - - - Clears the cache. - - - - - Removes cache entries older than the value defined by . - - - - - Stream that supports timeout of IO operations. - This class is used is used to support timeouts for SQL command, where a - typical operation involves several network reads/writes. - Timeout here is defined as the accumulated duration of all IO operations. - - - - - Construct a TimedStream - - Undelying stream - - - - Figure out whether it is necessary to reset timeout on stream. - We track the current value of timeout and try to avoid - changing it too often, because setting Read/WriteTimeout property - on network stream maybe a slow operation that involves a system call - (setsockopt). Therefore, we allow a small difference, and do not - reset timeout if current value is slightly greater than the requested - one (within 0.1 second). - - - - - Common handler for IO exceptions. - Resets timeout to infinity if timeout exception is - detected and stops the times. - - original exception - - - - Represents a SQL transaction to be made in a MySQL database. This class cannot be inherited. - - The application creates a MySqlTransaction object by calling - on the object. All subsequent operations associated with the - transaction (for example, committing or aborting the transaction), are performed on the - MySqlTransaction object. - - The following example creates a and a MySqlTransaction. - It also demonstrates how to use the , - , and methods. - - Public Sub RunTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Both records are written to database.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub 'RunTransaction - - - public void RunTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Gets the object associated with the transaction, or a null reference (Nothing in Visual Basic) if the transaction is no longer valid. - - The object associated with this transaction. - - A single application may have multiple database connections, each - with zero or more transactions. This property enables you to - determine the connection object associated with a particular - transaction created by . - - - - - Specifies the for this transaction. - - - The for this transaction. The default is ReadCommitted. - - - Parallel transactions are not supported. Therefore, the IsolationLevel - applies to the entire transaction. - - - - - Commits the database transaction. - - The Commit method is equivalent to the MySQL SQL statement - COMMIT. - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Rolls back a transaction from a pending state. - - The Rollback method is equivalent to the MySQL statement ROLLBACK. - The transaction can only be rolled back from a pending state - (after BeginTransaction has been called, but before Commit is - called). - - The following example creates a and a - . It also demonstrates how to use the - , , and Rollback - methods. - - Public Sub RunSqlTransaction(myConnString As String) - Dim myConnection As New MySqlConnection(myConnString) - myConnection.Open() - - Dim myCommand As MySqlCommand = myConnection.CreateCommand() - Dim myTrans As MySqlTransaction - - ' Start a local transaction - myTrans = myConnection.BeginTransaction() - - ' Must assign both transaction object and connection - ' to Command object for a pending local transaction - myCommand.Connection = myConnection - myCommand.Transaction = myTrans - - Try - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')" - myCommand.ExecuteNonQuery() - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')" - myCommand.ExecuteNonQuery() - myTrans.Commit() - Console.WriteLine("Success.") - Catch e As Exception - Try - myTrans.Rollback() - Catch ex As MySqlException - If Not myTrans.Connection Is Nothing Then - Console.WriteLine("An exception of type " & ex.GetType().ToString() & _ - " was encountered while attempting to roll back the transaction.") - End If - End Try - - Console.WriteLine("An exception of type " & e.GetType().ToString() & _ - "was encountered while inserting the data.") - Console.WriteLine("Neither record was written to database.") - Finally - myConnection.Close() - End Try - End Sub - - - public void RunSqlTransaction(string myConnString) - { - MySqlConnection myConnection = new MySqlConnection(myConnString); - myConnection.Open(); - - MySqlCommand myCommand = myConnection.CreateCommand(); - MySqlTransaction myTrans; - - // Start a local transaction - myTrans = myConnection.BeginTransaction(); - // Must assign both transaction object and connection - // to Command object for a pending local transaction - myCommand.Connection = myConnection; - myCommand.Transaction = myTrans; - - try - { - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"; - myCommand.ExecuteNonQuery(); - myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"; - myCommand.ExecuteNonQuery(); - myTrans.Commit(); - Console.WriteLine("Both records are written to database."); - } - catch(Exception e) - { - try - { - myTrans.Rollback(); - } - catch (MySqlException ex) - { - if (myTrans.Connection != null) - { - Console.WriteLine("An exception of type " + ex.GetType() + - " was encountered while attempting to roll back the transaction."); - } - } - - Console.WriteLine("An exception of type " + e.GetType() + - " was encountered while inserting the data."); - Console.WriteLine("Neither record was written to database."); - } - finally - { - myConnection.Close(); - } - } - - - - - - Defines the type of the column. - - - - - GSS API constants - - - - - GSS_C_NT_HOSTBASED_SERVICE (1.2.840.113554.1.2.1.4) - - - - - GSS_KRB5_NT_PRINCIPAL_NAME (1.2.840.113554.1.2.2.1) - - - - - GSS_C_NT_USER_NAME (1.2.840.113554.1.2.1.1) - - - - - GSS_KRB5_MECH_OID_DESC (1.2.840.113554.1.2.2) - - - - - GSS_KRB5_MECH_OID_DESC Set - - - - - Defines a security context - - - - - Sets the main properties to create and initiate a security context. - - Service Principal Name. - Credentials. - Requested flags. - - - - Initiate the security context - - Challenge received by the server. - A byte array containing the response to be sent to the server - - - - Unwrap a message. - - Message acquired from the server. - Unwrapped message. - - - - Wrap a message. - - Message to be wrapped. - A byte array containing the wrapped message. - - - - Allocate a clr byte array and copy the token data over - - Buffer. - A byte array - - - - Cleanups unmanaged resources - - - - - No flags provided - - - - - Delegates credentials to a remote peer. Do not delegate the credentials if the value is false. - - - - - Requests that the peer authenticate itself. If false, authenticate to the remote peer only. - - - - - Enables replay detection for messages protected with gss_wrap(3GSS) or gss_get_mic(3GSS). Do not attempt to detect replayed messages if false. - - - - - Enables detection of out-of-sequence protected messages. Do not attempt to detect out-of-sequence messages if false. - - - - - Requests that confidential service be made available by means of gss_wrap(3GSS). If false, no per-message confidential service is required. - - - - - Requests that integrity service be made available by means of gss_wrap(3GSS) or gss_get_mic(3GSS). If false, no per-message integrity service is required. - - - - - Does not reveal the initiator's identify to the acceptor. Otherwise, authenticate normally. - - - - - (Returned only) If true, the protection services specified by the states of GSS_C_CONF_FLAG and GSS_C_INTEG_FLAG are available - if the accompanying major status return value is either GSS_S_COMPLETE or GSS_S_CONTINUE_NEEDED. If false, the protection services are available - only if the accompanying major status return value is GSS_S_COMPLETE. - - - - - (Returned only) If true, the resultant security context may be transferred to other processes by means of a call to gss_export_sec_context(3GSS). If false, the security context cannot be transferred. - - - - - Credentials to use to establish the context - - - - - Acquires credentials for the supplied principal using the supplied password - - Username - Password - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires credentials for the supplied principal using material stored in a valid keytab - - Username - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Acquires default credentials stored in the cache - - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - An object containing the credentials - - - - Translates a name in internal form to a textual representation. - - Name in internal form (GSSAPI). - - - - size_t->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - OM_uint32->gss_uint32->unsigned int - - - void* - - - - Converts a contiguous string name to GSS_API internal format - The gss_import_name() function converts a contiguous string name to internal form. In general, - the internal name returned by means of the output_name parameter will not be a mechanism name; the exception to this is if the input_name_type - indicates that the contiguous string provided by means of the input_name_buffer parameter is of type GSS_C_NT_EXPORT_NAME, in which case, - the returned internal name will be a mechanism name for the mechanism that exported the name. - - Status code returned by the underlying mechanism. - The gss_buffer_desc structure containing the name to be imported. - A gss_OID that specifies the format that the input_name_buffer is in. - The gss_name_t structure to receive the returned name in internal form. Storage associated with this name must be freed by the application after use with a call to gss_release_name(). - - The gss_import_name() function may return the following status codes: - GSS_S_COMPLETE: The gss_import_name() function completed successfully. - GSS_S_BAD_NAMETYPE: The input_name_type was unrecognized. - GSS_S_BAD_NAME: The input_name parameter could not be interpreted as a name of the specified type. - GSS_S_BAD_MECH: The input_name_type was GSS_C_NT_EXPORT_NAME, but the mechanism contained within the input_name is not supported. - - - - - Allows an application to acquire a handle for a pre-existing credential by name. GSS-API implementations must impose a local access-control - policy on callers of this routine to prevent unauthorized callers from acquiring credentials to which they are not entitled. - This routine is not intended to provide a "login to the network" function, as such a function would involve the creation of new credentials - rather than merely acquiring a handle to existing credentials - - Mechanism specific status code. - Name of principal whose credential should be acquired. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Acquires a credential for use in establishing a security context using a password. - - Mechanism specific status code. - Name of principal whose credential should be acquired. - The password. - Number of seconds that credentials should remain valid. - Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. - Set of underlying security mechanisms that may be used. - GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. - GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. - GSS_C_INITIATE - Credentials will only be used to initiate security contexts. - GSS_C_ACCEPT - Credentials will only be used to accept security contexts. - The returned credential handle. Resources associated with this credential handle must be released - by the application after use with a call to gss_release_cred(). - The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must - be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. - Actual number of seconds for which the returned credentials will remain valid. If the implementation does not - support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_acquire_cred_with_password() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Unavailable mechanism requested. - GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. - GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. - GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. - GSS_S_NO_CRED: No credentials were found for the specified name. - - - - - Obtains information about a credential. - - Mechanism specific status code. - A handle that refers to the target credential. - The name whose identity the credential asserts. - The number of seconds for which the credential remain valid. - If the credential has expired, this parameter is set to zero. - How the credential may be used. - Set of mechanisms supported by the credential. - - gss_init_sec_context() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: The referenced credentials could not be accessed. - GSS_S_DEFECTIVE_CREDENTIAL: The referenced credentials were invalid. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - If the lifetime parameter is not passed in as NULL, then its value is set to 0. - - - - - Initiates the establishment of a security context between the application and a remote peer. - Initially, the input_token parameter should be specified either as GSS_C_NO_BUFFER, or as a pointer to a gss_buffer_desc object whose length field - contains the value zero. The routine may return a output_token which should be transferred to the peer application, where the peer application will - present it to gss_accept_sec_context. If no token need be sent, gss_init_sec_context will indicate this by setting the length field of the output_token - argument to zero. To complete the context establishment, one or more reply tokens may be required from the peer application; if so, gss_init_sec_context - will return a status containing the supplementary information bit GSS_S_CONTINUE_NEEDED. In this case, gss_init_sec_context should be called again when the - reply token is received from the peer application, passing the reply token to gss_init_sec_context via the input_token parameters. - - Mechanism specific status code. - Handle for credentials claimed. Supply GSS_C_NO_CREDENTIAL to act as a default initiator principal. - If no default initiator is defined, the function will return GSS_S_NO_CRED. - Context handle for new context. Supply GSS_C_NO_CONTEXT for first call; use value returned by first call in continuation calls. - Resources associated with this context-handle must be released by the application after use with a call to gss_delete_sec_context(). - Name of target. - Object ID of desired mechanism. Supply GSS_C_NO_OID to obtain an implementation specific default. - Contains various independent flags, each of which requests that the context support a specific service option. - Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be logically-ORed together to form the bit-mask value. - Desired number of seconds for which context should remain valid. Supply 0 to request a default validity period. - Application-specified bindings. Allows application to securely bind channel identification information to the security context. - Specify GSS_C_NO_CHANNEL_BINDINGS if channel bindings are not used. - Token received from peer application. Supply GSS_C_NO_BUFFER, or a pointer to a buffer containing the value GSS_C_EMPTY_BUFFER on initial call. - Actual mechanism used. The OID returned via this parameter will be a pointer to static storage that should be treated as read-only; - In particular the application should not attempt to free it. Specify NULL if not required. - Token to be sent to peer application. If the length field of the returned buffer is zero, no token need be sent to the peer application. - Storage associated with this buffer must be freed by the application after use with a call to gss_release_buffer(). - Contains various independent flags, each of which indicates that the context supports a specific service option. - Specify NULL if not required. Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be - logically-ANDed with the ret_flags value to test whether a given option is supported by the context. - Number of seconds for which the context will remain valid. If the implementation does not support context expiration, - the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. - - gss_init_sec_context() may return the following status codes: - - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTINUE_NEEDED: A token from the peer application is required to complete the context, and gss_init_sec_context() must be called again with that token. - GSS_S_DEFECTIVE_TOKEN: Consistency checks performed on the input_token failed. - GSS_S_DEFECTIVE_CREDENTIAL: Consistency checks performed on the credential failed. - GSS_S_NO_CRED: The supplied credentials are not valid for context acceptance, or the credential handle does not reference any credentials. - GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. - GSS_S_BAD_BINDINGS: The input_token contains different channel bindings than those specified by means of the input_chan_bindings parameter. - GSS_S_BAD_SIG: The input_token contains an invalid MIC or a MIC that cannot be verified. - GSS_S_OLD_TOKEN: The input_token is too old. This is a fatal error while establishing context. - GSS_S_DUPLICATE_TOKEN: The input_token is valid, but it is a duplicate of a token already processed.This is a fatal error while establishing context. - GSS_S_NO_CONTEXT: The supplied context handle does not refer to a valid context. - GSS_S_BAD_NAMETYPE: The provided target_name parameter contains an invalid or unsupported name type. - GSS_S_BAD_NAME: The supplied target_name parameter is ill-formed. - GSS_S_BAD_MECH: The token received specifies a mechanism that is not supported by the implementation or the provided credential. - - - - - Allows an application to obtain a textual representation of a GSS-API status code, for display to the user or for logging purposes. - Since some status values may indicate multiple conditions, applications may need to call gss_display_status multiple times, - each call generating a single text string. The message_context parameter is used by gss_display_status to store state information about which - error messages have already been extracted from a given status_value; message_context must be initialized to 0 by the application prior to the first call, - and gss_display_status will return a non-zero value in this parameter if there are further messages to extract. - - Mechanism specific status code. - Status value to be converted. - GSS_C_GSS_CODE - status_value is a GSS status code. GSS_C_MECH_CODE - status_value is a mechanism status code. - Underlying mechanism (used to interpret a minor status value). Supply GSS_C_NO_OID to obtain the system default. - Should be initialized to zero by the application prior to the first call. - On return from gss_display_status(), a non-zero status_value parameter indicates that additional messages may be extracted from the status code via - subsequent calls to gss_display_status(), passing the same status_value, status_type, mech_type, and message_context parameters. - Textual interpretation of the status_value. Storage associated with this parameter must be freed by the application - after use with a call to gss_release_buffer(). - - gss_display_status() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_MECH: Indicates that translation in accordance with an unsupported mechanism type was requested. - GSS_S_BAD_STATUS: The status value was not recognized, or the status type was neither GSS_C_GSS_CODE nor GSS_C_MECH_CODE. - - - - - Allows an application to obtain a textual representation of an opaque internal-form name for display purposes. - The syntax of a printable name is defined by the GSS-API implementation. - - Mechanism specific status code. - Name to be displayed. - Buffer to receive textual name string. - The type of the returned name. - - gss_display_name() may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: input_name was ill-formed. - - - - - Free storage associated with a buffer. The storage must have been allocated by a GSS-API routine. - In addition to freeing the associated storage, the routine will zero the length field in the descriptor to which the buffer parameter refers, - and implementations are encouraged to additionally set the pointer field in the descriptor to NULL. Any buffer object returned by a GSS-API routine - may be passed to gss_release_buffer (even if there is no storage associated with the buffer). - - Mechanism-specific status code. - The storage associated with the buffer will be deleted. The gss_buffer_desc object will not be freed, - but its length field will be zeroed. - - The gss_release_buffer() function may return the following status codes: - GSS_S_COMPLETE: Successful completion - - - - - Delete a security context. gss_delete_sec_context will delete the local data structures associated with the specified security context, - and may generate an output_token, which when passed to the peer gss_process_context_token will instruct it to do likewise. - If no token is required by the mechanism, the GSS-API should set the length field of the output_token (if provided) to zero. - No further security services may be obtained using the context specified by context_handle. - - Mechanism specific status code. - Context handle identifying context to delete. After deleting the context, - the GSS-API will set this context handle to GSS_C_NO_CONTEXT. - - The gss_delete_sec_context() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CONTEXT: No valid context was supplied. - - - - - Free GSSAPI-allocated storage associated with an internal-form name. The name is set to GSS_C_NO_NAME on successful completion of this call. - - Mechanism specific status code. - The name to be deleted. - - The gss_release_name() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_BAD_NAME: The name parameter did not contain a valid name. - - - - - Informs GSS-API that the specified credential handle is no longer required by the application, and frees associated resources. - The cred_handle is set to GSS_C_NO_CREDENTIAL on successful completion of this call. - - Mechanism specific status code. - Opaque handle identifying credential to be released. If GSS_C_NO_CREDENTIAL is supplied, - the routine will complete successfully, but will do nothing. - - The gss_release_cred() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_NO_CRED: Credentials could not be accessed. - - - - - Converts a message previously protected by gss_wrap back to a usable form, verifying the embedded MIC. - The conf_state parameter indicates whether the message was encrypted; the qop_state parameter indicates the strength of - protection that was used to provide the confidentiality and integrity services. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Protected message. - Buffer to receive unwrapped message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_DEFECTIVE_TOKEN: The token failed consistency checks. - GSS_S_BAD_SIG: The MIC was incorrect. - GSS_S_DUPLICATE_TOKEN: The token was valid, and contained a correct MIC for the message, but it had already been processed. - GSS_S_OLD_TOKEN: The token was valid, and contained a correct MIC for the message, but it is too old to check for duplication. - GSS_S_UNSEQ_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - a later token has already been received. - GSS_S_GAP_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; - an earlier expected token has not yet been received. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - - - - - Attaches a cryptographic MIC and optionally encrypts the specified input_message. The output_message contains both the MIC and the message. - The qop_req parameter allows a choice between several cryptographic algorithms, if supported by the chosen mechanism. - - Mechanism specific status code. - Identifies the context on which the message arrived. - Message to be protected. - Buffer to receive protected message. - - The gss_unwrap() function may return the following status codes: - GSS_S_COMPLETE: Successful completion. - GSS_S_CONTEXT_EXPIRED: The context has already expired. - GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. - GSS_S_BAD_QOP: The specified QOP is not supported by the mechanism. - - - - - MIT Kerberos 5 GSS Bindings Linux - - - - - Automatic dynamic disposable - - - - - Automatic dynamic disposable storing - - - - - Automatic dynamic disposable storing , will be called at dispose - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Automatic dynamic disposable - - - - - Original value, can be used with ref - - - - - Automatic dynamic disposable storing , will be disposed and will be called at dispose - - - - - Returns stored value - - - - - Gets the Kerberos configuration from the "krb5.conf/krb5.ini" file - - - - - Memory pinned object - - - - - Create memory pinned object from - - Any class type - Value to pin - Pinned value - - - - Memory pinned object - - Any class type - - - - Original object value, can be used with ref - - - - - In memory address of the object - - - - - Create memory pinned object from - - Value to pin - - - - Returns address of object in memory - - - - - Returns original object value - - - - - DNS resolver that runs queries against a server. - - - - - Initializes a new instance of the class. - - - - - Gets the DNS SVR records of the service name that is provided. - - A list of s sorted as described in RFC2782. - - - - Sorts a list of DNS SRV records according to the sorting rules described in RFC2782. - - List of s to sort. - A new list of sorted s. - - - - Resets the DnsSrvResolver - - - - - Class that represents a DNS SRV record. - RFC 2782 (https://tools.ietf.org/html/rfc2782) - - - - - Gets the port. - - - - - Gets the priority. - - - - - Gets the target domain name. - - - - - Gets the weight. - - - - - Initializes a new instance of class. - - The port. - The priority. - The target. - The weight. - - - - Initializes a new instance of class. - - The DNS SRV record. - - - - Compare two objects. First, using their priority and - if both have the same, then using their weights. - - A to compare. - A to compare. - - - - - Initializes a new instance of the class from a . - - The DNS SRV record. - - - - This class is modeled after .NET Stopwatch. It provides better - performance (no system calls).It is however less precise than - .NET Stopwatch, measuring in milliseconds. It is adequate to use - when high-precision is not required (e.g for measuring IO timeouts), - but not for other tasks. - - - - - Wrapper around NetworkStream. - - MyNetworkStream is equivalent to NetworkStream, except - 1. It throws TimeoutException if read or write timeout occurs, instead - of IOException, to match behavior of other streams (named pipe and - shared memory). This property comes handy in TimedStream. - - 2. It implements workarounds for WSAEWOULDBLOCK errors, that can start - occuring after stream has times out. For a discussion about the CLR bug, - refer to http://tinyurl.com/lhgpyf. This error should never occur, as - we're not using asynchronous operations, but apparerntly it does occur - directly after timeout has expired. - The workaround is hinted in the URL above and implemented like this: - For each IO operation, if it throws WSAEWOULDBLOCK, we explicitely set - the socket to Blocking and retry the operation once again. - - - - - Determines whether the connection state is closed or open. - - true if connection is closed; otherwise, false. - - - - Set keepalive + timeout on socket. - - socket - keepalive timeout, in seconds - - - - Read a single quoted identifier from the stream - - - - - - - Helper class to encapsulate shared memory functionality - Also cares of proper cleanup of file mapping object and cew - - - - - Summary description for SharedMemoryStream. - - - - - By creating a private ctor, we keep the compiler from creating a default ctor - - - - - Mark - or + signs that are unary ops as no output - - - - - - Handles SSL connections for the Classic and X protocols. - - - - - Contains the connection options provided by the user. - - - - - A flag to establish how certificates are to be treated and validated. - - - - - Defines the supported TLS protocols. - - - - - Retrieves a collection containing the client SSL PFX certificates. - - Dependent on connection string settings. - Either file or store based certificates are used. - - - - Initiates the SSL connection. - - The base stream. - The encoding used in the SSL connection. - The connection string used to establish the connection. - A instance ready to initiate an SSL connection. - - - - Verifies the SSL certificates used for authentication. - - An object that contains state information for this validation. - The MySQL server certificate used to authenticate the remote party. - The chain of certificate authorities associated with the remote certificate. - One or more errors associated with the remote certificate. - true if no errors were found based on the selected SSL mode; false, otherwise. - - - - Gets the extension of the specified file. - - The path of the file. - Flag to indicate if the result should be converted to lower case. - The . character is ommited from the result. - - - - - Summary description for StreamCreator. - - - - - Set the keepalive timeout on the socket. - - The socket object. - The keepalive timeout, in seconds. - - - - Summary description for Version. - - - - - Provides functionality to read SSL PEM certificates and to perform multiple validations via Bouncy Castle. - - - - - Raises an exception if the specified connection option is null, empty or whitespace. - - The connection option to verify. - The name of the connection option. - - - - Reads the specified file as a byte array. - - The path of the file to read. - A byte array representing the read file. - - - - Reads the SSL certificate file. - - The path to the certificate file. - A instance representing the SSL certificate file. - - - - Reads the SSL certificate key file. - - The path to the certificate key file. - A instance representing the SSL certificate key file. - - - - Verifies that the certificate has not yet expired. - - The certificate to verify. - - - - Verifies a certificate CA status. - - The certificate to validate. - A flag indicating the expected CA status. - - - - Verifies that the certificate was signed using the private key that corresponds to the specified public key - - The client side certificate containing the public key. - The server certificate. - - - - Verifies that no SSL policy errors regarding the identitfy of the host were raised. - - A instance set with the raised SSL errors. - - - - Verifies that the issuer matches the CA by comparing the CA certificate issuer and the server certificate issuer. - - The CA certificate. - The server certificate. - - - - - Gets and sets the host list. - - - - - Gets the active host. - - - - - Active host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - object that represents the next available host. - - - - Implements common elements that allow to manage the hosts available for client side failover. - - - - - Gets and sets the failover group which consists of a host list. - - - - - Resets the manager. - - - - - Sets the host list to be used during failover operations. - - The host list. - The failover method. - - - - Attempts to establish a connection to a host specified from the list. - - The original connection string set by the user. - An out parameter that stores the updated connection string. - A object in case this is a pooling scenario. - A flag indicating if the default port is used in the connection. - An instance if the connection was succesfully established, a exception is thrown otherwise. - - - - - Creates a if more than one host is found. - - A string containing an unparsed list of hosts. - true if the connection is X Protocol; otherwise false. - true if the connection data is a URI; otherwise false. - The number of hosts found, -1 if an error was raised during parsing. - - - - Creates a object based on the provided parameters. - - The host string that can be a simple host name or a host name and port. - The priority of the host. - The port number of the host. - true if the connection data is a URI; otherwise false. - - - - - Attempts the next host in the list. Moves to the first element if the end of the list is reached. - - - - - Determines the next host on which to attempt a connection by checking the value of the Priority property in descending order. - - - - - Determines the next host on which to attempt a connection randomly. - - - - - Depicts a host which can be failed over to. - - - - - Gets and sets the name or address of the host. - - - - - Gets and sets the port number. - - - - - Gets a value between 0 and 100 which represents the priority of the host. - - - - - Flag to indicate if this host is currently being used. - - - - - Flag to indicate if this host has been attempted to connection. - - - - - Time since the host has been demoted. - - - - - Initializes a object. - - The host. - The port. - The priority. - - - - Compares two objects of type . - - FailoverServer object to compare. - True if host properties are the same. Otherwise, false. - - - - Manages the hosts available for client side failover using the Random Failover method. - The Random Failover method attempts to connect to the hosts specified in the list randomly until all the hosts have been attempted. - - - - - The initial host taken from the list. - - - - - The host for the current connection attempt. - - - - - Random object to get the next host. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - Manages the hosts available for client side failover using the Sequential Failover method. - The Sequential Failover method attempts to connect to the hosts specified in the list one after another until the initial host is reached. - - - - - The initial host taken from the list. - - - - - The index of the current host. - - - - - The host for the current connection attempt. - - - - - Sets the initial active host. - - - - - Determines the next host. - - A object that represents the next available host. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter is null. - - - - - Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter's SelectCommand is null. - - - - - Looks up a localized string similar to Invalid attempt to access a field before calling Read(). - - - - - Looks up a localized string similar to Authentication to host '{0}' for user '{1}' using method '{2}' failed with message: {3}. - - - - - Looks up a localized string similar to Authentication method '{0}' not supported by any of the available plugins.. - - - - - Looks up a localized string similar to Authentication plugin '{0}' is currently not supported.. - - - - - Looks up a localized string similar to Version string not in acceptable format. - - - - - Looks up a localized string similar to The buffer cannot be null. - - - - - Looks up a localized string similar to The buffer is not large enough. - - - - - Looks up a localized string similar to Canceling an executing query requires MySQL 5.0 or higher.. - - - - - Looks up a localized string similar to Canceling an active query is only supported on MySQL 5.0.0 and above. . - - - - - Looks up a localized string similar to Parameters can only be derived for commands using the StoredProcedure command type.. - - - - - Looks up a localized string similar to MySqlCommandBuilder does not support multi-table statements. - - - - - Looks up a localized string similar to MySqlCommandBuilder cannot operate on tables with no unique or key columns. - - - - - Looks up a localized string similar to Chaos isolation level is not supported . - - - - - Looks up a localized string similar to Clear-password authentication is not supported over insecure channels.. - - - - - Looks up a localized string similar to The CommandText property has not been properly initialized.. - - - - - Looks up a localized string similar to Compression is not supported.. - - - - - Looks up a localized string similar to The connection is already open.. - - - - - Looks up a localized string similar to Connection unexpectedly terminated.. - - - - - Looks up a localized string similar to Connection must be valid and open. - - - - - Looks up a localized string similar to The connection is not open.. - - - - - Looks up a localized string similar to The connection property has not been set or is null.. - - - - - Looks up a localized string similar to Could not find specified column in results: {0}. - - - - - Looks up a localized string similar to Count cannot be negative. - - - - - Looks up a localized string similar to SetLength is not a valid operation on CompressedStream. - - - - - Looks up a localized string similar to The given value was not in a supported format.. - - - - - Looks up a localized string similar to There is already an open DataReader associated with this Connection which must be closed first.. - - - - - Looks up a localized string similar to The default connection encoding was not found. Please report this as a bug along with your connection string and system details.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not currently support distributed transactions.. - - - - - Looks up a localized string similar to Specifying multiple host names with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Specifying a port number with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Using Unix domain sockets with DNS SRV lookup is not permitted.. - - - - - Looks up a localized string similar to Unable to locate any hosts for {0}.. - - - - - Looks up a localized string similar to Connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to SSL connection option '{0}' is duplicated.. - - - - - Looks up a localized string similar to Encoding error during validation.. - - - - - Looks up a localized string similar to Error creating socket connection. - - - - - Looks up a localized string similar to Verify that user '{0}'@'{1}' has enough privileges to execute.. - - - - - Looks up a localized string similar to Fatal error encountered during command execution.. - - - - - Looks up a localized string similar to Fatal error encountered during data read.. - - - - - Looks up a localized string similar to Fatal error encountered attempting to read the resultset.. - - - - - Looks up a localized string similar to File based certificates are only supported when connecting to MySQL Server 5.1 or greater.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a certificate.. - - - - - Looks up a localized string similar to The specified file cannot be converted to a key.. - - - - - Looks up a localized string similar to Failed to read file at the specified location.. - - - - - Looks up a localized string similar to No file path has been provided for the connection option {0}.. - - - - - Looks up a localized string similar to From index and length use more bytes than from contains. - - - - - Looks up a localized string similar to From index must be a valid index inside the from buffer. - - - - - Looks up a localized string similar to Call to GetHostEntry failed after {0} while querying for hostname '{1}': SocketErrorCode={2}, ErrorCode={3}, NativeErrorCode={4}.. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from server.. - - - - - Looks up a localized string similar to Value has an unsupported format.. - - - - - Looks up a localized string similar to An incorrect response was received from the server.. - - - - - Looks up a localized string similar to Index and length use more bytes than to has room for. - - - - - Looks up a localized string similar to Index must be a valid position in the buffer. - - - - - Looks up a localized string similar to The provided key is invalid.. - - - - - Looks up a localized string similar to Certificate with Thumbprint '{0}' not found.. - - - - - Looks up a localized string similar to You have specified an invalid column ordinal.. - - - - - Looks up a localized string similar to The requested value '{0}' is invalid for the given keyword '{1}'.. - - - - - Looks up a localized string similar to The host name or IP address is invalid.. - - - - - Looks up a localized string similar to Microsecond must be a value between 0 and 999999.. - - - - - Looks up a localized string similar to Millisecond must be a value between 0 and 999. For more precision use Microsecond.. - - - - - Looks up a localized string similar to No other SSL options are accepted when SSL Mode is set to None.. - - - - - Looks up a localized string similar to Either provide a valid path for 'allowloadlocalinfileinpath' or enable 'allowloadlocalinfile'.. - - - - - Looks up a localized string similar to Procedure or function '{0}' cannot be found in database '{1}'.. - - - - - Looks up a localized string similar to The certificate is invalid.. - - - - - Looks up a localized string similar to Unable to validate the signature.. - - - - - Looks up a localized string similar to Unable to verify the signature.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to Option "tls-version" can not be specified when SSL connections are disabled.. - - - - - Looks up a localized string similar to '{0}' not recognized as a valid TLS protocol version (should be one of TLSv1, TLSv1.1, TLSv1.2{1}).. - - - - - Looks up a localized string similar to '{0}' is an illegal value for a boolean option.. - - - - - Looks up a localized string similar to Keyword does not allow null values.. - - - - - Looks up a localized string similar to Option not supported.. - - - - - Looks up a localized string similar to Server asked for stream in response to LOAD DATA LOCAL INFILE, but the functionality is disabled by the client setting 'allowlocalinfile' to 'false'.. - - - - - Looks up a localized string similar to Mixing named and unnamed parameters is not allowed.. - - - - - Looks up a localized string similar to INTERNAL ERROR: More than one output parameter row detected.. - - - - - Looks up a localized string similar to Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.. - - - - - Looks up a localized string similar to NamedPipeStream does not support seeking. - - - - - Looks up a localized string similar to NamedPipeStream doesn't support SetLength. - - - - - Looks up a localized string similar to The new value must be a MySqlParameter object.. - - - - - Looks up a localized string similar to Invalid attempt to call NextResult when the reader is closed.. - - - - - Looks up a localized string similar to When calling stored procedures and 'Use Procedure Bodies' is false, all parameters must have their type explicitly set.. - - - - - Looks up a localized string similar to Nested transactions are not supported.. - - - - - Looks up a localized string similar to The host {0} does not support SSL connections.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows.. - - - - - Looks up a localized string similar to Cannot retrieve Windows identity for current user. Connections that use IntegratedSecurity cannot be pooled. Use either 'ConnectionReset=true' or 'Pooling=false' in the connection string to fix.. - - - - - Looks up a localized string similar to The object is not open or has been disposed.. - - - - - Looks up a localized string similar to The offset cannot be negative. - - - - - Looks up a localized string similar to Offset must be a valid position in buffer. - - - - - Looks up a localized string similar to Authentication with old password no longer supported, use 4.1 style passwords.. - - - - - Looks up a localized string similar to The option '{0}' is not currently supported.. - - - - - Looks up a localized string similar to Parameter '{0}' has already been defined.. - - - - - Looks up a localized string similar to Parameter cannot have a negative value. - - - - - Looks up a localized string similar to Parameter cannot be null. - - - - - Looks up a localized string similar to Parameter '{0}' can't be null or empty.. - - - - - Looks up a localized string similar to Parameter index was not found in Parameter Collection.. - - - - - Looks up a localized string similar to Parameter is invalid.. - - - - - Looks up a localized string similar to Parameter '{0}' must be defined.. - - - - - Looks up a localized string similar to Parameter '{0}' was not found during prepare.. - - - - - Looks up a localized string similar to Parameter can't be null or empty.. - - - - - Looks up a localized string similar to Password must be valid and contain length characters. - - - - - Looks up a localized string similar to This category includes a series of counters for MySQL. - - - - - Looks up a localized string similar to .NET Data Provider for MySQL. - - - - - Looks up a localized string similar to The number of times a procedures metadata had to be queried from the server.. - - - - - Looks up a localized string similar to Hard Procedure Queries. - - - - - Looks up a localized string similar to The number of times a procedures metadata was retrieved from the client-side cache.. - - - - - Looks up a localized string similar to Soft Procedure Queries. - - - - - Looks up a localized string similar to same name are not supported.. - - - - - Looks up a localized string similar to MySQL Server {0} dos not support query attributes.. - - - - - Looks up a localized string similar to MySQL Connector/NET does not support query attributes with prepared statements for this version of MySQL Server.. - - - - - Looks up a localized string similar to Packets larger than max_allowed_packet are not allowed.. - - - - - Looks up a localized string similar to Reading from the stream has failed.. - - - - - Looks up a localized string similar to Invalid attempt to read a prior column using SequentialAccess. - - - - - Looks up a localized string similar to Replicated connections allow only readonly statements.. - - - - - Looks up a localized string similar to Attempt to connect to '{0}' server failed.. - - - - - Looks up a localized string similar to No available server found.. - - - - - Looks up a localized string similar to Replication group '{0}' not found.. - - - - - Looks up a localized string similar to Replicated server not found: '{0}'. - - - - - Looks up a localized string similar to Routine '{0}' cannot be found. Either check the spelling or make sure you have sufficient rights to execute the routine.. - - - - - Looks up a localized string similar to Attempt to call stored function '{0}' without specifying a return parameter. - - - - - Looks up a localized string similar to Retrieval of the RSA public key is not enabled for insecure connections.. - - - - - Looks up a localized string similar to Connector/NET no longer supports server versions prior to 5.0. - - - - - Looks up a localized string similar to Snapshot isolation level is not supported.. - - - - - Looks up a localized string similar to Socket streams do not support seeking. - - - - - Looks up a localized string similar to Retrieving procedure metadata for {0} from procedure cache.. - - - - - Looks up a localized string similar to Stored procedures are not supported on this version of MySQL. - - - - - Looks up a localized string similar to The certificate authority (CA) does not match.. - - - - - Looks up a localized string similar to The host name does not match the name on the certificate.. - - - - - Looks up a localized string similar to The certificate is not a certificate authority (CA).. - - - - - Looks up a localized string similar to SSL Connection error.. - - - - - Looks up a localized string similar to Connection protocol '{0}' does not support SSL connections.. - - - - - Looks up a localized string similar to The stream has already been closed. - - - - - Looks up a localized string similar to The stream does not support reading. - - - - - Looks up a localized string similar to The stream does not support writing. - - - - - Looks up a localized string similar to String can't be empty.. - - - - - Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. - - - - - Looks up a localized string similar to error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} seconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to This connection is using {0}, which is now deprecated and will be removed in a future release of Connector/NET.. - - - - - Looks up a localized string similar to TLSv1.3 is supported in .NET Framework 4.8 or .NET Core 3.0.. - - - - - Looks up a localized string similar to No supported TLS protocol version found in the 'tls-versions' list.. - - - - - Looks up a localized string similar to {0}: Connection Closed. - - - - - Looks up a localized string similar to Unable to trace. There are more than Int32.MaxValue connections in use.. - - - - - Looks up a localized string similar to {0}: Error encountered during row fetch. Number = {1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Connection Opened: connection string = '{1}'. - - - - - Looks up a localized string similar to {0}: Error encountered attempting to open result: Number={1}, Message={2}. - - - - - Looks up a localized string similar to {0}: Query Closed. - - - - - Looks up a localized string similar to {0}: Query Normalized: {2}. - - - - - Looks up a localized string similar to {0}: Query Opened: {2}. - - - - - Looks up a localized string similar to {0}: Resultset Opened: field(s) = {1}, affected rows = {2}, inserted id = {3}. - - - - - Looks up a localized string similar to {0}: Resultset Closed. Total rows={1}, skipped rows={2}, size (bytes)={3}. - - - - - Looks up a localized string similar to {0}: Set Database: {1}. - - - - - Looks up a localized string similar to {0}: Statement closed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement executed: statement id = {1}. - - - - - Looks up a localized string similar to {0}: Statement prepared: sql='{1}', statement id={2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query is using a bad index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The field '{2}' was converted to the following types: {3}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Query does not use an index. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: The following columns were not accessed: {2}. - - - - - Looks up a localized string similar to {0}: Usage Advisor Warning: Skipped {2} rows. Consider a more focused query.. - - - - - Looks up a localized string similar to {0}: MySql Warning: Level={1}, Code={2}, Message={3}. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseCommandInterceptor. - - - - - Looks up a localized string similar to Type '{0}' is not derived from BaseExceptionInterceptor. - - - - - Looks up a localized string similar to Unable to connect to any of the specified MySQL hosts.. - - - - - Looks up a localized string similar to Unable to create plugin for authentication method '{0}'. Please see inner exception for details.. - - - - - Looks up a localized string similar to Unable to derive stored routine parameters. The 'Parameters' information schema table is not available and access to the stored procedure body has been disabled.. - - - - - Looks up a localized string similar to Unable to enable query analysis. Be sure the MySql.Data.EMTrace assembly is properly located and registered.. - - - - - Looks up a localized string similar to An error occured attempting to enumerate the user-defined functions. Do you have SELECT privileges on the mysql.func table?. - - - - - Looks up a localized string similar to Unable to execute stored procedure '{0}'.. - - - - - Looks up a localized string similar to There was an error parsing the foreign key definition.. - - - - - Looks up a localized string similar to Error encountered reading the RSA public key.. - - - - - Looks up a localized string similar to Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string.. - - - - - Looks up a localized string similar to Unable to start a second async operation while one is running.. - - - - - Looks up a localized string similar to Unix sockets are not supported on Windows. - - - - - Looks up a localized string similar to Unknown authentication method '{0}' was requested.. - - - - - Looks up a localized string similar to Unknown connection protocol. - - - - - Looks up a localized string similar to Trying to upload a file from outside the path set on 'allowloadlocalinfileinpath' is invalid.. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Looks up a localized string similar to The requested column value could not be treated as or conveted to a Guid.. - - - - - Looks up a localized string similar to Windows authentication connections are not supported on {0}. - - - - - Looks up a localized string similar to Writing to the stream failed.. - - - - - Looks up a localized string similar to Parameter '{0}' is not found but a parameter with the name '{1}' is found. Parameter names must include the leading parameter marker.. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Appdata path is not defined.. - - - - - Looks up a localized string similar to Authentication failed using MYSQL41 and SHA256_MEMORY. Check the user name and password or try using a secure connection.. - - - - - Looks up a localized string similar to You can't get more sessions because Client is closed.. - - - - - Looks up a localized string similar to Client option '{0}' does not support value '{1}'.. - - - - - Looks up a localized string similar to Client option '{0}' is not recognized as valid.. - - - - - Looks up a localized string similar to {0} '{1}' does not exist in schema '{2}'.. - - - - - Looks up a localized string similar to Compression requested but the compression algorithm negotiation failed.. - - - - - Looks up a localized string similar to Compression using {0} is not supported.. - - - - - Looks up a localized string similar to Failed to load libzstd.dll. Removing zstd_stream from the client supported compression algorithms.. - - - - - Looks up a localized string similar to Compression using {0} is not supported in .NET Framework.. - - - - - Looks up a localized string similar to The connection property 'compression' acceptable values are: 'preferred', 'required' or 'disabled'. The value '{0}' is not acceptable.. - - - - - Looks up a localized string similar to Compression is not enabled.. - - - - - Looks up a localized string similar to Compression requested but the server does not support it.. - - - - - Looks up a localized string similar to There are still decompressed messages pending to be processed.. - - - - - Looks up a localized string similar to '{0}' cannot be set to false with DNS SRV lookup enabled.. - - - - - Looks up a localized string similar to Scheme '{0}' is not valid.. - - - - - Looks up a localized string similar to Duplicate key '{0}' used in "connection-attributes".. - - - - - Looks up a localized string similar to Key name in connection attribute cannot be an empty string.. - - - - - Looks up a localized string similar to At least one option must be specified.. - - - - - Looks up a localized string similar to This feature is currently not supported.. - - - - - Looks up a localized string similar to This functionality is only supported in MySQL {0} and higher.. - - - - - Looks up a localized string similar to Collation with id '{0}' not found.. - - - - - Looks up a localized string similar to The value of "connection-attributes" must be either a boolean or a list of key-value pairs.. - - - - - Looks up a localized string similar to Connection Data is incorrect.. - - - - - Looks up a localized string similar to The connection string is invalid.. - - - - - Looks up a localized string similar to '{0}' is not a valid connection string attribute.. - - - - - Looks up a localized string similar to The connection timeout value must be a positive integer (including 0).. - - - - - Looks up a localized string similar to Decimal (BCD) format is invalid.. - - - - - Looks up a localized string similar to Field type with name '{0}' not found.. - - - - - Looks up a localized string similar to Index type with name '{0}' not found.. - - - - - Looks up a localized string similar to The value provided is not a valid JSON document. {0}. - - - - - Looks up a localized string similar to {0} is not a valid column name in the row.. - - - - - Looks up a localized string similar to {0} is not a valid index for the row.. - - - - - Looks up a localized string similar to Session state is not valid.. - - - - - Looks up a localized string similar to Invalid Uri . - - - - - Looks up a localized string similar to Invalid uri query value. - - - - - Looks up a localized string similar to Key names in "connection-attributes" cannot start with "_".. - - - - - Looks up a localized string similar to Json configuration must contain 'uri' or 'host' but not both.. - - - - - Looks up a localized string similar to Keyword '{0}' not found.. - - - - - Looks up a localized string similar to Keyword not supported.. - - - - - Looks up a localized string similar to Field '{0}' is mandatory.. - - - - - Looks up a localized string similar to Missed required schema option.. - - - - - Looks up a localized string similar to More than one document id was generated. Please use the DocumentIds property instead.. - - - - - Looks up a localized string similar to There is no data at index {0}. - - - - - Looks up a localized string similar to No 'host' has been specified.. - - - - - Looks up a localized string similar to No more data in resultset.. - - - - - Looks up a localized string similar to Object '{0}' not found. - - - - - Looks up a localized string similar to No placeholders.. - - - - - Looks up a localized string similar to Connection closed. Reason: connection idle was too long. - - - - - Looks up a localized string similar to Connection closed. Reason: connection was killed by a different session. - - - - - Looks up a localized string similar to Connection closed. Reason: server was shutdown. - - - - - Looks up a localized string similar to {0} must be a value greater than 0.. - - - - - Looks up a localized string similar to Path not found '{0}'.. - - - - - Looks up a localized string similar to Queue timeout expired. The timeout period elapsed prior to getting a session from the pool.. - - - - - Looks up a localized string similar to Providing a port number as part of the host address isn't supported when using connection strings in basic format or anonymous objects. Use URI format instead.. - - - - - Looks up a localized string similar to You must either assign no priority to any of the hosts or give a priority for every host.. - - - - - Looks up a localized string similar to The priority must be between 0 and 100.. - - - - - Looks up a localized string similar to ProgramData path is not defined.. - - - - - Looks up a localized string similar to Replacement document has an '_id' that is - different from the matched document.. - - - - - Looks up a localized string similar to The server doesn't support the requested operation. Please update the MySQL Server, client library, or both.. - - - - - Looks up a localized string similar to The process of closing the resultset and resulted in results being lost.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} milliseconds was exceeded for each selected server.. - - - - - Looks up a localized string similar to All server connection attempts were aborted. Timeout was exceeded for each selected server.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout of {0} milliseconds was exceeded.. - - - - - Looks up a localized string similar to Connection attempt to the server was aborted. Timeout was exceeded.. - - - - - Looks up a localized string similar to Unable to connect to any specified host.. - - - - - Looks up a localized string similar to Unable to read or decode data value.. - - - - - Looks up a localized string similar to Unable to open a session.. - - - - - Looks up a localized string similar to Unexpected end of packet found while reading data values. - - - - - Looks up a localized string similar to Field name '{0}' is not allowed.. - - - - - Looks up a localized string similar to Unknown placeholder :{0}. - - - - - Looks up a localized string similar to Value '{0}' is not of the correct type.. - - - - - Summary description for MySqlUInt64. - - - - - An exception thrown by MySQL when a type conversion does not succeed. - - - - Initializes a new instance of the class with a specified error message. - Message describing the error. - - - - Represents a datetime data type object in a MySql database. - - - - - Defines whether the UTF or local timezone will be used. - - - - - Constructs a new MySqlDateTime object by setting the individual time properties to - the given values. - - The year to use. - The month to use. - The day to use. - The hour to use. - The minute to use. - The second to use. - The microsecond to use. - - - - Constructs a new MySqlDateTime object by using values from the given object. - - The object to copy. - - - - Constructs a new MySqlDateTime object by copying the current value of the given object. - - The MySqlDateTime object to copy. - - - - Enables the contruction of a MySqlDateTime object by parsing a string. - - - - - Indicates if this object contains a value that can be represented as a DateTime - - - - Returns the year portion of this datetime - - - Returns the month portion of this datetime - - - Returns the day portion of this datetime - - - Returns the hour portion of this datetime - - - Returns the minute portion of this datetime - - - Returns the second portion of this datetime - - - - Returns the milliseconds portion of this datetime - expressed as a value between 0 and 999 - - - - - Returns the microseconds portion of this datetime (6 digit precision) - - - - - Returns true if this datetime object has a null value - - - - - Retrieves the value of this as a DateTime object. - - - - Returns this value as a DateTime - - - Returns a MySQL specific string representation of this value - - - - - - - - - Represents a decimal data type object in a MySql database. - - - - - Gets a boolean value signaling if the type is null. - - - - - Gets or sets the decimal precision of the type. - - - - - Gets or sets the scale of the type. - - - - - Gets the decimal value associated to this type. - - - - - Converts this decimal value to a double value. - - The value of this type converted to a dobule value. - - - - Represents a geometry data type object in a MySql database. - - - - - Gets the x coordinate. - - - - - Gets the y coordinate. - - - - - Gets the SRID value. - - - - - Gets a boolean value that signals if the type is null. - - - - - Gets the value associated to this type. - - - - - Gets the value associated to this type. - - - - Returns the Well-Known Text representation of this value - POINT({0} {1})", longitude, latitude - http://dev.mysql.com/doc/refman/4.1/en/gis-wkt-format.html - - - - Get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - - - - Try to get value from WKT format - SRID=0;POINT (x y) or POINT (x y) - - WKT string format - Out mysqlGeometryValue - - - - Sets the DSInfo when GetSchema is called for the DataSourceInformation collection. - - - - - Gets the well-known text representation of the geomtry object. - - A string representation of the WKT. - - - - Enables X Protocol packets from the network stream to be retrieved and processed - - - - - The instance of the stream that holds the network connection with MySQL Server. - - - - - This field is used to enable compression and decompression actions in the communication channel. - - - - - A Queue to store the pending packets removed from the - - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - - - - Creates a new instance of XPacketProcessor. - - The stream to be used as communication channel. - The XCompressionController to be used for compression actions. - - - - Identifies the kind of packet received over the network and execute - the corresponding processing. - - - - - Reads data from the network stream and create a packet of type . - - A . - - - - Sends the read/write actions to the MyNetworkStream class. - - - - - Reads the pending packets present in the network channel and processes them accordingly. - - - - - Implementation of EXTERNAL authentication type. - - - - - Implementation of MySQL41 authentication type. - - - - - Implementation of PLAIN authentication type. - - - - - Compares two Guids in string format. - - The first string to compare. - The first string to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Compares two objects. - - The first to compare. - The second to compare. - An integer that indicates the lexical relationship between the two comparands, similar to - - - - Provides functionality for loading unmanaged libraries. - - - - - Loads the specified unmanaged library from the embedded resources. - - The application name. - The library name. - - - - Provides support for configuring X Protocol compressed messages. - - - - - The capabilities sub-key used to specify the compression algorithm. - - - - - The capabilities key used to specify the compression capability. - - - - - Messages with a value lower than this threshold will not be compressed. - - - - - Default value for enabling or disabling combined compressed messages. - - - - - Default value for the maximum number of combined compressed messages contained in a compression message. - - - - - The capabilities sub-key used to specify if combining compressed messages is permitted. - - - - - The capabilities sub-key used to specify the maximum number of compressed messages contained in a compression message. - - - - - Buffer used to store the data received from the server. - - - - - Deflate stream used for compressing data. - - - - - Deflate stream used for decompressing data. - - - - - Flag indicating if the initialization is for compression or decompression. - - - - - Stores the communication packet generated the last time ReadNextBufferedMessage method was called. - - - - - Indicates if the libzstd.dll has been loaded. - - - - - Stream used to store multiple X Protocol messages. - - - - - ZStandard stream used for decompressing data. - - - - - Main constructor used to set the compression algorithm and initialize the list of messages to - be compressed by the client. - - The compression algorithm to use. - Flag indicating if the initialization is for compression or decompression. - - - - Gets or sets the list of messages that should be compressed by the client when compression is enabled. - - - - - Gets or sets the compression algorithm. - - - - - Flag indicating if compression is enabled. - - - - - Flag indicating if the last decompressed message contains multiple messages. - - - - - General method used to compress data using the compression algorithm defined in the constructor. - - The data to compress. - A compressed byte array. - - - - Compresses data using the deflate_stream algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the lz4_message algorithm. - - The data to compress. - A compressed byte array. - - - - Compresses data using the zstd_stream algorithm. - - The data to compress. - A compressed byte array. - - - - General method used to decompress data using the compression algorithm defined in the constructor. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the deflate_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the lz4_message compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Decompresses data using the zstd_stream compression algorithm. - - The data to decompress. - The expected length of the decompressed data. - A decompressed byte array. - - - - Closes and disposes of any open streams. - - - - - Gets the byte array representing the next X Protocol frame that is stored in cache. - - A byte array representing an X Protocol frame. - - - - Gets a representing the next X Protocol frame that is stored in cache. - - A with the next X Protocol frame. - - - - Loads the libzstd.dll assembly. - - - - - Constructor that sets the stream used to read or write data. - - The stream used to read or write data. - - - - Constructor that sets the stream used to read or write data and the compression controller. - - The stream used to read or write data. - The compression controller. - - - - Gets or sets the compression controller uses to manage compression operations. - - - - - Writes X Protocol frames to the X Plugin. - - The integer representation of the client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Writes X Protocol frames to the X Plugin. - - The client message identifier used for the message. - The message to include in the X Protocol frame. - - - - Reads X Protocol frames incoming from the X Plugin. - - A instance representing the X Protocol frame that was read. - - - - Abstract class for the protocol base operations in client/server communication. - - - - - Expression parser for MySQL-X protocol. - - - string being parsed. - - - Token stream produced by lexer. - - - Parser's position in token stream. - - - Mapping of names to positions for named placeholders. Used for both string values ":arg" and numeric values ":2". - - - Number of positional placeholders. - - - Are relational columns identifiers allowed? - - - Token types used by the lexer. - - - Token. Includes type and string value of the token. - - - Mapping of reserved words to token types. - - - Does the next character equal the given character? (respects bounds) - - - Helper function to match integer or floating point numbers. This function should be called when the position is on the first character of the number (a - digit or '.'). - - @param i The current position in the string - @return the next position in the string after the number. - - - Lexer for MySQL-X expression language. - - - Assert that the token at pos is of type type. - - - Does the current token have type `t'? - - - Does the next token have type `t'? - - - Does the token at position `pos' have type `t'? - - - Consume token. - - @return the string value of the consumed token - - - Parse a paren-enclosed expression list. This is used for function params or IN params. - - @return a List of expressions - - - Parse a function call of the form: IDENTIFIER PAREN_EXPR_LIST. - - @return an Expr representing the function call. - - - Parse an identifier for a function call: [schema.]name - - - Parse a document path member. - - - Parse a document path array index. - - - Parse a JSON-style document path, like WL#7909, but prefix by @. instead of $. - - - Parse a document field. - - - Parse a column identifier (which may optionally include a JSON document path). - - - Build a unary operator expression. - - - Parse an atomic expression. (c.f. grammar at top) - - - Parse a left-associated binary operator. - - @param types - The token types that denote this operator. - @param innerParser - The inner parser that should be called to parse operands. - @return an expression tree of the binary operator or a single operand - - - Parse the entire string as an expression. - - @return an X-protocol expression tree - - - - Parse an ORDER BY specification which is a comma-separated list of expressions, each may be optionally suffixed by ASC/DESC. - - - Parse a SELECT projection which is a comma-separated list of expressions, each optionally suffixed with a target alias. - - - Parse an INSERT field name. - @todo unit test - - - Parse an UPDATE field which can include can document paths. - - - Parse a document projection which is similar to SELECT but with document paths as the target alias. - - - Parse a list of expressions used for GROUP BY. - - - @return the number of positional placeholders in the expression. - - - @return a mapping of parameter names to positions. - - - Proto-buf helper to build a LITERAL Expr with a Scalar NULL type. - - - Proto-buf helper to build a LITERAL Expr with a Scalar DOUBLE type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar SINT (signed int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar UINT (unsigned int) type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar STRING type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar OCTETS type (wrapped in Any). - - - Proto-buf helper to build a LITERAL Expr with a Scalar BOOL type (wrapped in Any). - - - Wrap an Any value in a LITERAL expression. - - - Build an Any with a string value. - - - - Parses an anonymous object into a dictionary. - - The object to parse. - A dictionary if the provided object is an anonymous object; otherwise, null. - - - List of operators which will be serialized as infix operators. - - - Scalar to string. - - - JSON document path to string. - - - Column identifier (or JSON path) to string. - - - Function call to string. - - - Create a string from a list of (already stringified) parameters. Surround by parens and separate by commas. - - - Convert an operator to a string. Includes special cases for chosen infix operators (AND, OR) and special forms such as LIKE and BETWEEN. - - - Escape a string literal. - - - Quote a named identifer. - - - Serialize an expression to a string. - - - - Build the message to be sent to MySQL Server to execute statement "Create" or "Modify" collection with schema options - - The namespace - The name of the command to be executed on MySql Server - Array of KeyValuePairs with the parameters required to build the message - void. - - - - Sends the delete documents message - - - - - Sends the CRUD modify message - - - - - Class implementation for a default communication kind. - - - - - Constructor method for the communication routing service - - A MySqlXConnectionStringBuilder setted with the information to use in the connection - - - - Gets the current connection base on the connection mode - - One of the values of ConnectionMode Offline, ReadOnly, WriteOnly, ReadWrite - - - - - Abstract class used to define the kind of server in environments with multiple types of distributed systems. - - - - - Main class for parsing json strings. - - - - - Initializes a new instance of the JsonParser class. - - - - - Parses the received string into a dictionary. - - The string to parse. - A object that represents the parsed string. - - - - Abstract class to manage and encapsulate one or more actual connections. - - - - - Creates a new session object with the values of the settings parameter. - - Settings to be used in the session object - - - - Sets the connection's charset default collation. - - The opened session. - The character set. - - - - Gets the version of the server. - - An instance of containing the server version. - - - - Gets the thread Id of the connection. - - Thread Id - - - - Implementation class for object that manages low-level work of queuing tasks onto threads. - - - - - Implementation class of InternalSession to manage connections using the Xprotocol type object. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Defines the compression controller that will be passed on the instance when - compression is enabled. - - - - - Reorder the list of algorithms retrieved from server to the preferred order - - - - - Validate the algorithms given in the connection string are valid compared with enum CompressionAlgorithms - - - - - Negotiates compression capabilities with the server. - - An array containing the compression algorithms supported by the server. - An array containing the compression algorithms given by user/client. - - - - Prepare the dictionary of arguments required to create a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Prepare the dictionary of arguments required to Modify a MySQL message. - - The name of the MySQL schema. - The name of the collection. - This object hold the parameters required to Modify the collection. - - - - - Gets the compression algorithm being used to compress or decompress data. - - Flag to indicate if the compression algorithm should be - retrieved from the reader or writer controller. - The name of the compression algorithm being used if any. - null if no compression algorithm is being used. - - - - Represents a base class for a Session. - - - - - Flag to set if prepared statements are supported. - - - - - Gets the connection settings for this session. - - - - - Gets the currently active schema. - - - - - Gets the default schema provided when creating the session. - - - - - Gets the connection uri representation of the connection options provided during the creation of the session. - - - - - Initializes a new instance of the BaseSession class based on the specified connection string. - - The connection used to create the session. - A object. - is null. - Unable to parse the when - in URI format. - - When using Unix sockets the protocol=unix or protocol=unixsocket connection option is required. - This will enable elements passed in the server connection option to be treated as Unix sockets. The user is also required - to explicitly set sslmode to none since X Plugin does not support SSL when using Unix sockets. Note that - protocol=unix and protocol=unixsocket are synonyms. -   - Multiple hosts can be specified as part of the , - which enables client-side failover when trying to establish a connection. -   - Connection URI examples: - - mysqlx://test:test@[192.1.10.10,localhost] - - mysqlx://test:test@[192.1.10.10,127.0.0.1] - - mysqlx://root:@[../tmp/mysqlx.sock,/tmp/mysqld.sock]?protocol=unix&sslmode=none - - mysqlx://test:test@[192.1.10.10:33060,127.0.0.1:33060] - - mysqlx://test:test@[192.1.10.10,120.0.0.2:22000,[::1]:33060]/test?connectiontimeout=10 - - mysqlx://test:test@[(address=server.example,priority=20),(address=127.0.0.1,priority=100)] - - mysqlx://test:test@[(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25)] - -   - Connection string examples: - - server=10.10.10.10,localhost;port=33060;uid=test;password=test; - - host=10.10.10.10,192.101.10.2,localhost;port=5202;uid=test;password=test; - - host=./tmp/mysqld.sock,/var/run/mysqldx.sock;port=5202;uid=root;protocol=unix;sslmode=none; - - server=(address=server.example,priority=20),(address=127.0.0.1,priority=100);port=33060;uid=test;password=test; - - server=(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25);port=33060;uid=test;password=test; - -   - Failover methods - - Sequential: Connection attempts will be performed in a sequential order, that is, one after another until - a connection is successful or all the elements from the list have been tried. - - - Priority based: If a priority is provided, the connection attemps will be performed in descending order, starting - with the host with the highest priority. Priority must be a value between 0 and 100. Additionally, it is required to either - give a priority for every host or no priority to any host. - - - - - - Initializes a new instance of the BaseSession class based on the specified anonymous type object. - - The connection data as an anonymous type used to create the session. - A object. - is null. - - Multiple hosts can be specified as part of the , which enables client-side failover when trying to - establish a connection. -   - To assign multiple hosts, create a property similar to the connection string examples shown in - . Note that the value of the property must be a string. - - - - - - Drops the database/schema with the given name. - - The name of the schema. - is null. - - - - Creates a schema/database with the given name. - - The name of the schema/database. - A object that matches the recently created schema/database. - - - - Gets the schema with the given name. - - The name of the schema. - A object set with the provided schema name. - - - - Gets a list of schemas (or databases) in this session. - - A list containing all existing schemas (or databases). - - - - Starts a new transaction. - - - - - Commits the current transaction. - - A object containing the results of the commit operation. - - - - Rolls back the current transaction. - - - - - Closes this session or releases it to the pool. - - - - - Closes this session - - - - - Sets a transaction savepoint with an autogenerated name. - - The autogenerated name of the transaction savepoint. - - - - Sets a named transaction savepoint. - - The name of the transaction savepoint. - The name of the transaction savepoint. - - - - Removes the named savepoint from the set of savepoints within the current transaction. - - The name of the transaction savepoint. - - - - Rolls back a transaction to the named savepoint without terminating the transaction. - - The name of the transaction savepoint. - - - - Parses the connection data. - - The connection string or connection URI. - A object. - An updated connection string representation of the provided connection string or connection URI. - - - - Parses a connection URI. - - The connection URI to parse. - The connection string representation of the provided . - - - - Validates if the string provided is a Unix socket file. - - The Unix socket to evaluate. - true if is a valid Unix socket; otherwise, false. - - - - Converts the URI object into a connection string. - - An instance with the values for the provided connection options. - The path of the Unix socket file. - If true the replaces the value for the server connection option; otherwise, false - Flag indicating if this is a connection using DNS SRV. - A connection string. - - - - Parses a connection string. - - The connection string to parse. - The parsed connection string. - - - - Normalizes the Unix socket by removing leading and ending parenthesis as well as removing special characters. - - The Unix socket to normalize. - A normalized Unix socket. - - - - Disposes the current object. Disposes of the managed state if the flag is set to true. - - Flag to indicate if the managed state is to be disposed. - - - - Disposes the current object. Code added to correctly implement the disposable pattern. - - - - - Describes the state of the session. - - - - - The session is closed. - - - - - The session is open. - - - - - The session object is connecting to the data source. - - - - - The session object is executing a command. - - - - - Class encapsulating a session pooling functionality. - - - - - Queue of demoted hosts. - - - - - List of hosts that will be attempted to connect to. - - - - - Timer to be used when a host have been demoted. - - - - - Remove hosts from the demoted list that have already been there for more - than 120,000 milliseconds and add them to the available hosts list. - - - - - Get a session from pool or create a new one. - - - - - - Closes all sessions the Client object created and destroys the managed pool. - - - - - Represents a collection of documents. - - - - - Creates an containing the provided objects that can be used to add - one or more items to a collection. - - The objects to add. - An object containing the objects to add. - is null. - This method can take anonymous objects, domain objects, or just plain JSON strings. - The statement can be further modified before execution. - - - - Creates a with the given condition that can be used to remove - one or more documents from a collection.The statement can then be further modified before execution. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Removes the document with the given identifier. - - The unique identifier of the document to replace. - A object containing the results of the execution. - is null or white space. - This is a direct execution method. - - - - Creates a with the given condition that can be used to modify one or more - documents from a collection. - - The condition to match documents. - A object set with the given condition. - is null or white space. - The statement can then be further modified before execution. - - - - Replaces the document matching the given identifier. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - is null or whitespace. - is null. - This is a direct execution method. Operation succeeds even if no matching document was found; - in which case, the Result.RecordsAffected property is zero. If the new document contains an identifier, the value - is ignored. - - - - Adds the given document to the collection unless the identifier or any other field that has a unique index - already exists, in which case it will update the matching document. - - The unique identifier of the document to replace. - The document to replace the matching document. - A object containing the results of the execution. - The server version is lower than 8.0.3. - is null or white space. - is null. - The is different from the one in . - This is a direct execution method. - - - - Returns the number of documents in this collection on the server. - - The number of documents found. - - - - Creates a with the given condition which can be used to find documents in a - collection. - - An optional condition to match documents. - A object set with the given condition. - The statement can then be further modified before execution. - - - - Creates an index based on the properties provided in the JSON document. - - The index name. - JSON document describing the index to be created. - - is a JSON document with the following fields: - - - fields: array of IndexField objects, each describing a single document member to be - included in the index (see below). - - type: string, (optional) the type of index. One of INDEX or SPATIAL. Default is INDEX and may - be omitted. - -   - A single IndexField description consists of the following fields: - - - field: string, the full document path to the document member or field to be indexed. - - type: string, one of the supported SQL column types to map the field into (see the following list). - For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for - indexing may be added. - - required: bool, (optional) true if the field is required to exist in the document. defaults to - false, except for GEOJSON where it defaults to true. - - options: int, (optional) special option flags for use when decoding GEOJSON data. - - srid: int, (optional) srid value for use when decoding GEOJSON data. - -   - Supported SQL column types: - - - INT [UNSIGNED] - - TINYINT [UNSIGNED] - - SMALLINT [UNSIGNED] - - MEDIUMINT [UNSIGNED] - - INTEGER [UNSIGNED] - - BIGINT [UNSIGNED] - - REAL [UNSIGNED] - - FLOAT [UNSIGNED] - - DOUBLE [UNSIGNED] - - DECIMAL [UNSIGNED] - - NUMERIC [UNSIGNED] - - DATE - - TIME - - TIMESTAMP - - DATETIME - - TEXT[(length)] - - CHAR[(lenght)] - - GEOJSON (extra options: options, srid) - - - - - - Drops a collection index. - - The index name. - is null or white space. - - - - Verifies if the current collection exists in the server schema. - - true if the collection exists; otherwise, false. - - - - Returns the document with the given identifier. - - The unique identifier of the document to replace. - A object if a document matching given identifier exists; otherwise, null. - is null or white space. - This is a direct execution method. - - - - Base abstract class that defines elements inherited by all result types. - - - - - Gets the number of records affected by the statement that generated this result. - - - - - Gets the object of the session. - - - - - Gets a read-only collection of objects derived from statement execution. - - - - - Gets the number of warnings in the collection derived from statement execution. - - - - - No action is performed by this method. It is intended to be overriden by child classes if required. - - - - - Base abstract class for API statement. - - - - - - Initializes a new instance of the BaseStatement class based on the specified session. - - The session where the statement will be executed. - - - - Gets the that owns the statement. - - - - - Executes the base statements. This method is intended to be defined by child classes. - - A result object containing the details of the execution. - - - - Executes a statement asynchronously. - - A result object containing the details of the execution. - - - - Validates if the session is open and valid. - - - - - Sets the status as Changed for prepared statement validation. - - - - - Converts a statement to prepared statement for a second execution - without any change but Bind, Limit, or Offset. - - - - - Abstract class for buffered results. - - Generic result type. - - - - Index of the current item. - - - - - List of generic items in this buffered result. - - - - - Flag that indicates if all items have been read. - - - - - Gets a dictionary containing the column names and their index. - - - - - Gets the page size set for this buffered result. - - - - - Loads the column data into the field. - - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - Retrieves one element from the generic items associated to this buffered result. - - A generic object that corresponds to the current or default item. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Gets the current item. - - All items have already been read. - - - - Determines if all items have already been read. - - True if all items have been retrived, false otherwise. - - - - Resets the value of the field to zero. - - - - - Gets an representation of this object. - - An representation of this object. - - - - Gets an representation of this object. - - An representation of this object. - - - - Retrieves a read-only list of the generic items associated to this buffered result. - - A generic list representing items in this buffered result. - - - - No body has been defined for this method. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - If false, throws an exception if the collection exists. - - - - - Object which hold the Level and Schema parameters. - - - - - This object store the required parameters to modify a Collection with schema validation. - - - - - This object store the required parameters to Modify a Collection with schema validation. - - - - - This object store the required parameters to create a Collection with schema validation. - - - - - It can be STRICT to enable schema validation or OFF to disable . - - - - - The JSON which define the rules to be validated in the collection. - - - - - The possible values for parameter Level in Validation object. - - - - - Class to represent an error in this result. - - - - - Numeric code. - - - - - Return code indicating the outcome of the executed SQL statement. - - - - - Error message. - - - - - Initializes a new instance of the ErrorInfo class. - - - - - Abstract class for filterable statements. - - The filterable statement. - The database object. - The type of result. - - - - Initializes a new instance of the FiltarableStatement class based on the target and condition. - - The database object. - The optional filter condition. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Sets the number of items to be returned by the operation. - - The number of items to be returned. - The implementing statement type. - is equal or lower than 0. - - - - Sets the number of items to be skipped before including them into the result. - - The number of items to be skipped. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameter name. - The value of the parameter. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a DbDoc object. - A generic object representing the implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as a JSON string. - The implementing statement type. - - - - Binds the parameter values in filter expression. - - The parameters as an anonymous object: new { param1 = value1, param2 = value2, ... }. - The implementing statement type. - - - - Executes the statement. - - The function to execute. - The generic object to use. - A generic result object containing the results of the execution. - - - - Clones the filterable data but Session and Target remain the - same. - - A clone of this filterable statement. - - - - Represents a general statement result. - - - - - Gets the last inserted identifier (if there is one) by the statement that generated this result. - - - - - Gets the list of generated identifiers in the order of the Add() calls. - - - - - Abstract class to select a database object target. - - The database object. - The execution result. - - - - Initializes a new instance of the TargetedBaseStatement class based on the provided target. - - The database object. - - - - Gets the database target. - - - - - Represents a warning in this result. - - - - - Numeric value associated to the warning message. - - - - - Error message. - - - - - Strict level for the warning. - - - - - Initializes a new instance of the WarningInfo class based on the code and msg. - - The code for the warning. - The error message for the warning. - - - - Represents a chaining collection insert statement. - - - - - Adds documents to the collection. - - The documents to add. - This object. - The array is null. - - - - Executes the Add statement. - - A object containing the results of the execution. - - - - Implementation class for CRUD statements with collections using an index. - - - - - Executes this statement. - - A object containing the results of the execution. - - - - Represents a collection statement. - - - - - - Converts base s into objects. - - Array of objects to be converted to objects. - An enumerable collection of objects. - - - - Represents the result of an operation that includes a collection of documents. - - - - - Represents a chaining collection find statement. - - - - - List of column projections that shall be returned. - - List of columns. - This object set with the specified columns or fields. - - - - Executes the Find statement. - - A object containing the results of execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with the lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the collection aggregation. - - The field list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Represents a chaining collection modify statement. - - - - - Sets key and value. - - The document path key. - The new value. - This object. - - - - Changes value for a key. - - The document path key. - The new value. - This object. - - - - Removes keys or values from a document. - - An array of document paths representing the keys to be removed. - This object. - - - - Creates a object set with the changes to be applied to all matching documents. - - The JSON-formatted object describing the set of changes. - A object set with the changes described in . - can be a object, an anonymous object, or a JSON string. - is null. - is null or white space. - - - - Inserts an item into the specified array. - - The document path key including the index on which the item will be inserted. - The value to insert into the array. - A object containing the updated array. - - - - Appends an item to the specified array. - - The document path key. - The value to append to the array. - A object containing the updated array. - - - - Allows the user to set the sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the modify statement. - - A object containing the results of the execution. - - - - Represents a chaining collection remove statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Enables the setting of Where condition for this operation. - - The Where condition. - The implementing statement type. - - - - Executes the remove statement. - - A object containing the results of the execution. - - - - Represents a database object. - - - - - Gets the session that owns the database object. - - - - - Gets the schema that owns the database object. - - - - - Gets the database object name. - - - - - Verifies that the database object exists in the database. - - True if the object exists in database, false otherwise. - - - - Represents a generic document in JSON format. - - - - - Initializes a new instance of the DbDoc class based on the object provided. The value can be a domain object, anonymous object, or JSON string. - - The value for this DbDoc. - - - - Gets the value of a document property. - - The key path for the property. - - - - - Gets the identifier of the document. - - - - - Gets a value indicating if this document has an identifier (property named _id with a value). - - - - - Sets a property on this document. - - The key of the property. - The new property value. - - - - Returns this document in Json format. - - A Json formatted string. - - - - Compares this DbDoc with another one. - - The DbDoc to compare to. - True if they are equal, false otherwise. - - - - Gets a value that serves as a hash function for a particular type. - - A hash code for the current object. - - - - Represents a collection of documents with a generic type. - - - - - Initializes a new instance of the generic Collection class based on the specified schema - and name. - - The object associated to this collection. - The name of the collection. - - - - Creates an containing the provided generic object. The add - statement can be further modified before execution. - - The generic object to add. - An object containing the object to add. - - - - Defines elements that allow to iterate through the contents of various items. - - - - - Initializes a new instance of the Iterator class. - - - - - This method is not yet implemented. - - - - Exception is always thrown since the body of the method is not yet implemented. - - - - Defines a MySql expression. - - - - - Main class for session operations related to Connector/NET implementation of the X DevAPI. - - - - - Opens a session to the server given or to the first available server if multiple servers were specified. - - The connection string or URI string format. - - A object representing the established session. - Multiple hosts can be specified as part of the which - will enable client side failover when trying to establish a connection. For additional details and syntax - examples refer to the remarks section. - - - - Opens a session to the server given. - - The connection data for the server. - - A object representing the established session. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection string or URI string format. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in JSON string format. - A object representing a session pool. - - - - Creates a new instance. - - The connection data. - - The connection options in object format. - - - new { pooling = new - { - enabled = true, - maxSize = 15, - maxIdleTime = 60000, - queueTimeout = 60000 - } - } - - - - A object representing a session pool. - - - - Enables the creation of connection strings by exposing the connection options as properties. - Contains connection options specific to the X protocol. - - - - - Main constructor. - - - - - Constructor accepting a connection string. - - The connection string. - A flag indicating if the default port is used in the connection. - - - - Readonly field containing a collection of classic protocol and protocol shared connection options. - - - - - Gets or sets the connection timeout. - - - - - Gets or sets the connection attributes. - - - - - Path to a local file containing certificate revocation lists. - - - - - Gets or sets the compression type between client and server. - - - - - Gets or sets the compression algorithm. - - - - - Gets or sets a connection option. - - The keyword that identifies the connection option to modify. - - - - Represents a table column. - - - - - Gets the original column name. - - - - - Gets the alias of the column name. - - - - - Gets the table name the column orginates from. - - - - - Gets the alias of the table name . - - - - - Gets the schema name the column originates from. - - - - - Gets the catalog the schema originates from. - In MySQL protocol this is `def` by default. - - - - - Gets the collation used for this column. - - - - - Gets the character set used for this column. - - - - - Gets the column length. - - - - - Gets the fractional decimal digits for floating point and fixed point numbers. - - - - - Gets the Mysql data type. - - - - - Gets the .NET Clr data type. - - - - - True if it's a signed number. - - - - - True if column is UINT zerofill or BYTES rightpad. - - - - - Initializes a new instance of the Column class. - - - - - Represents a resultset that contains rows of data. - - - - - Gets the columns in this resultset. - - - - - Gets the number of columns in this resultset. - - - - - Gets a list containing the column names in this resultset. - - - - - Gets the rows of this resultset. This collection will be incomplete unless all the rows have been read - either by using the Next method or the Buffer method. - - - - - Gets the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Allows getting the value of the column value at the current index. - - The column index. - The CLR value at the column index. - - - - Returns the index of the given column name. - - The name of the column to find. - The numeric index of column. - - - - Represents a single row of data in a table. - - - - - Gets the value of the row at the given index. - - The column index to retrieve the value. - The value at the index. - - - - Gets the value of the column as a string. - - The name of the column. - The value of the column as a string. - - - - Gets a string based indexer into the row. Returns the value as a CLR type. - - The column index to get. - The CLR value for the column. - - - - Inherits from . Creates a resultset that contains rows of data. - - - - - Represents a resultset that contains rows of data for relational operations. - - - - - Gets a boolean value indicating if this result has data. - - - - - Moves to next resultset. - - True if there is a new resultset, false otherwise. - - - - Represents a sql statement. - - - - - Initializes a new instance of the SqlStament class bassed on the session and sql statement. - - The session the Sql statement belongs to. - The Sql statement. - - - - Gets the current Sql statement. - - - - - Gets the list of parameters associated to this Sql statement. - - - - - Executes the current Sql statement. - - A object with the resultset and execution status. - - - - Binds the parameters values by position. - - The parameter values. - This set with the binded parameters. - - - - Represents a server Table or View. - - - - - Gets a value indicating whether the object is - a View (True) or a Table (False). - - - - - Creates a set with the columns to select. The table select - statement can be further modified before execution. This method is intended to select a set - of table rows. - - The optional column names to select. - A object for select chain operations. - - - - Creates a set with the fileds to insert to. The table - insert statement can be further modified before exeuction. This method is intended to - insert one or multiple rows into a table. - - The list of fields to insert. - A object for insert chain operations. - - - - Creates a . This method is intended to update table rows - values. - - A object for update chain operations. - - - - Creates a . This method is intended to delete rows from a - table. - - A object for delete chain operations. - - - - Returns the number of rows in the table on the server. - - The number of rows. - - - - Verifies if the table exists in the database. - - true if the table exists; otherwise, false. - - - - Represents a chaining table delete statement. - - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object representing the implementing statement type. - - - - Executes the delete statement. - - A object containing the results of the delete execution. - - - - Represents a chaining table insert statement. - - - - - Executes the insert statement. - - A object containing the results of the insert statement. - - - - Values to be inserted. - Multiple rows supported. - - The values to be inserted. - This same object. - - - - Represents a chaining table select statement. - - - - - Executes the select statement. - - A object containing the results of the execution and data. - - - - Locks matching rows against updates. - - Optional row lock option to use. - This same object set with lock shared option. - The server version is lower than 8.0.3. - - - - Locks matching rows so no other transaction can read or write to it. - - Optional row lock option to use. - This same object set with the lock exclusive option. - The server version is lower than 8.0.3. - - - - Sets the table aggregation. - - The column list for aggregation. - This same object set with the specified group-by criteria. - - - - Filters criteria for aggregated groups. - - The filter criteria for aggregated groups. - This same object set with the specified filter criteria. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a chaining table update statement. - - - - - Executes the update statement. - - A object ocntaining the results of the update statement execution. - - - - Column and value to be updated. - - Column name. - Value to be updated. - This same object. - - - - Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like - "order ASC" or "pages DESC, age ASC". - - The order criteria. - A generic object that represents the implementing statement type. - - - - Represents a schema or database. - - - - - Session related to current schema. - - - - - Returns a list of all collections in this schema. - - A list representing all found collections. - - - - Returns a list of all tables in this schema. - - A list representing all found tables. - - - - Gets a collection by name. - - The name of the collection to get. - Ensures the collection exists in the schema. - A object matching the given name. - - - - Gets a typed collection object. This is useful for using domain objects. - - The type of collection returned. - The name of collection to get. - A generic object set with the given name. - - - - Gets the given collection as a table. - - The name of the collection. - A object set with the given name. - - - - Gets a table object. Upon return the object may or may not be valid. - - The name of the table object. - A object set with the given name. - - - - Creates a collection. - - The name of the collection to create. - If false, throws an exception if the collection exists. - Collection referente. - - - - Creates a collection including a schema validation. - - The name of the collection to create. - This object hold the parameters required to create the collection. - - Collection referente. - - - - Modify a collection adding or removing schema validation parameters. - - The name of the collection to create. - This object encapsulate the Validation parameters level and schema. - Collection referente. - - - - Drops the given collection. - - The name of the collection to drop. - is null. - - - - Determines if this schema actually exists. - - True if exists, false otherwise. - - - - Represents a single server session. - - - - - Returns a object that can be used to execute the given SQL. - - The SQL to execute. - A object set with the provided SQL. - - - - Sets the schema in the database. - - The schema name to be set. - - - - Executes a query in the database to get the current schema. - - Current database object or null if no schema is selected. - - - - Closes the current session properly after it was closed by the server. - - - - Holder for reflection information generated from mysqlx.proto - - - File descriptor for mysqlx.proto - - - - IDs of messages that can be sent from client to the server - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ClientMessages message type. - - - - IDs of messages that can be sent from server to client - - .. note:: - this message is never sent on the wire. It is only used to let ``protoc`` - - * generate constants - * check for uniqueness - - - - Container for nested types declared in the ServerMessages message type. - - - - NOTICE has to stay at 11 forever - - - - - generic Ok message - - - - Field number for the "msg" field. - - - - generic Error message - - A ``severity`` of ``ERROR`` indicates the current message sequence is - aborted for the given error and the session is ready for more. - - In case of a ``FATAL`` error message the client should not expect - the server to continue handling any further messages and should - close the connection. - - :param severity: severity of the error message - :param code: error-code - :param sql_state: SQL state - :param msg: human readable error message - - - - Field number for the "severity" field. - - - Field number for the "code" field. - - - Field number for the "sql_state" field. - - - Field number for the "msg" field. - - - Container for nested types declared in the Error message type. - - - Holder for reflection information generated from mysqlx_connection.proto - - - File descriptor for mysqlx_connection.proto - - - - a Capability - - a tuple of a ``name`` and a :protobuf:msg:`Mysqlx.Datatypes::Any` - - - - Field number for the "name" field. - - - Field number for the "value" field. - - - - Capabilities - - - - Field number for the "capabilities" field. - - - - get supported connection capabilities and their current state - - :returns: :protobuf:msg:`Mysqlx.Connection::Capabilities` or :protobuf:msg:`Mysqlx::Error` - - - - - sets connection capabilities atomically - - only provided values are changed, other values are left unchanged. - If any of the changes fails, all changes are discarded. - - :precond: active sessions == 0 - :returns: :protobuf:msg:`Mysqlx::Ok` or :protobuf:msg:`Mysqlx::Error` - - - - Field number for the "capabilities" field. - - - - announce to the server that the client wants to close the connection - - it discards any session state of the server - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "uncompressed_size" field. - - - Field number for the "server_messages" field. - - - Field number for the "client_messages" field. - - - Field number for the "payload" field. - - - Holder for reflection information generated from mysqlx_crud.proto - - - File descriptor for mysqlx_crud.proto - - - - DataModel to use for filters, names, ... - - - - - ViewAlgorithm defines how MySQL Server processes the view - - - - - MySQL chooses which algorithm to use - - - - - the text of a statement that refers to the view and the view definition are merged - - - - - the view are retrieved into a temporary table - - - - - ViewSqlSecurity defines the security context in which the view is going to be - executed, this means that VIEW can be executed with current user permissions or - with permissions of the uses who defined the VIEW - - - - - ViewCheckOption limits the write operations done on a `VIEW` - (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE` - - - - - the view WHERE clause is checked, but no underlying views are checked - - - - - the view WHERE clause is checked, then checking recurses to underlying views - - - - - column definition - - - - Field number for the "name" field. - - - - optional - - - - Field number for the "alias" field. - - - - optional - - - - Field number for the "document_path" field. - - - - a projection - - :param source: the expression identifying an element from the source data - which can include a column identifier or any expression - :param alias: optional alias. Required for DOCUMENTs (clients may use - the source string as default) - - - - Field number for the "source" field. - - - - required - - - - Field number for the "alias" field. - - - - optional - - - - - collection - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema" field. - - - - optional - - - - - limit - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - limit expression - - LimitExpr in comparison to Limit, is able to specify that row_count and - offset are placeholders. - This message support expressions of following types Expr/literal/UINT, - Expr/PLACEHOLDER. - - :param row_count: maximum rows to filter - :param offset: maximum rows to skip before applying the row_count - - - - Field number for the "row_count" field. - - - - required - - - - Field number for the "offset" field. - - - - optional - - - - - sort order - - - - Field number for the "expr" field. - - - - required - - - - Field number for the "direction" field. - - - - optional//[ default=ASC ] - - - - Container for nested types declared in the Order message type. - - - - update operations - - :param source: specification of the value to be updated - if data_model is TABLE, a column name may be specified and also a document path, if the column has type JSON - if data_model is DOCUMENT, only document paths are allowed - in both cases, schema and table must be not set - :param operation: the type of operation to be performed - :param value: an expression to be computed as the new value for the operation - - - - Field number for the "source" field. - - - - required - - - - Field number for the "operation" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - Container for nested types declared in the UpdateOperation message type. - - - - only allowed for TABLE - - - - - no value (removes the identified path from a object or array) - - - - - sets the new value on the identified path - - - - - replaces a value if the path exists - - - - - source and value must be documents - - - - - insert the value in the array at the index identified in the source path - - - - - append the value on the array at the identified path - - - - - merge JSON object value with the provided patch expression - - - - - Find Documents/Rows in a Collection/Table - - .. uml:: - - client -> server: Find - ... one or more Resultset ... - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: list of column projections that shall be returned - :param args: values for parameters used in filter expression - :param criteria: filter criteria - :param limit: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :param order: sort-order in which the rows/document shall be returned in - :param grouping: column expression list for aggregation (GROUP BY) - :param grouping_criteria: filter criteria for aggregated groups - :param locking: perform row locking on matches - :param locking_options: additional options how to handle locked rows - :param limit_expr: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "grouping" field. - - - Field number for the "grouping_criteria" field. - - - - optional - - - - Field number for the "locking" field. - - - - optional - - - - Field number for the "locking_options" field. - - - - optional - - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Container for nested types declared in the Find message type. - - - - Lock matching rows against updates - - - - - Lock matching rows so no other transaction can read or write to it - - - - - Do not wait to acquire row lock, fail with an error if a requested row is locked - - - - - Do not wait to acquire a row lock, remove locked rows from the result set - - - - - Insert documents/rows into a collection/table - - :param collection: collection to insert into - :param data_model: datamodel that the operations refer to - :param projection: name of the columns to insert data into (empty if data_model is DOCUMENT) - :param row: set of rows to insert into the collection/table (a single expression with a JSON document literal or an OBJECT expression) - :param args: values for parameters used in row expressions - :param upsert: true if this should be treated as an Upsert (that is, update on duplicate key) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "projection" field. - - - Field number for the "row" field. - - - Field number for the "args" field. - - - Field number for the "upsert" field. - - - - optional//[default = false] - - - - Container for nested types declared in the Insert message type. - - - Field number for the "field" field. - - - - Update documents/rows in a collection/table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param operation: list of operations to be applied. Valid operations will depend on the data_model. - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "operation" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - - Delete documents/rows from a Collection/Table - - :param collection: collection to change - :param data_model: datamodel that the operations refer to - :param criteria: filter expression to match rows that the operations will apply on - :param args: values for parameters used in filter expression - :param limit: limits the number of rows to match (user can set one of: limit, limit_expr) - :param order: specifies order of matched rows - :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr) - :Returns: :protobuf:msg:`Mysqlx.Resultset::` - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "data_model" field. - - - - optional - - - - Field number for the "criteria" field. - - - - optional - - - - Field number for the "args" field. - - - Field number for the "order" field. - - - Field number for the "limit" field. - - - - optional - - - - Field number for the "limit_expr" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional//[default = UNDEFINED] - - - - Field number for the "security" field. - - - - optional//[default = DEFINER] - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "replace_existing" field. - - - - optional//[default = false] - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "definer" field. - - - - optional - - - - Field number for the "algorithm" field. - - - - optional - - - - Field number for the "security" field. - - - - optional - - - - Field number for the "check" field. - - - - optional - - - - Field number for the "column" field. - - - Field number for the "stmt" field. - - - - optional - - - - Field number for the "collection" field. - - - - required - - - - Field number for the "if_exists" field. - - - - optional//[ default = false ] - - - - Holder for reflection information generated from mysqlx_cursor.proto - - - File descriptor for mysqlx_cursor.proto - - - - Open a cursor - - .. uml:: - - client -> server: Open - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, the ID is going to represent new cursor and assigned to it statement - :param stmt: statement which resultset is going to be iterated through the cursor - :param fetch_rows: number of rows which should be retrieved from sequential cursor - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - Container for nested types declared in the Open message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "prepare_execute" field. - - - - optional - - - - Container for nested types declared in the OneOfMessage message type. - - - - Fetch next portion of data from a cursor - - .. uml:: - - client -> server: Fetch - alt Success - ... none or partial Resultsets or full Resultsets ... - client <- server: StmtExecuteOk - else - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be already open - :param fetch_rows: number of rows which should be retrieved from sequential cursor - - - - Field number for the "cursor_id" field. - - - - required - - - - Field number for the "fetch_rows" field. - - - - optional - - - - - Close cursor - - .. uml:: - - client -> server: Close - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param cursor_id: client side assigned cursor id, must be allocated/open - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "cursor_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_datatypes.proto - - - File descriptor for mysqlx_datatypes.proto - - - - a scalar - - - - Field number for the "type" field. - - - - required - - - - Field number for the "v_signed_int" field. - - - Field number for the "v_unsigned_int" field. - - - Field number for the "v_octets" field. - - - - 4 is unused, was Null which doesn't have a storage anymore - - - - Field number for the "v_double" field. - - - Field number for the "v_float" field. - - - Field number for the "v_bool" field. - - - Field number for the "v_string" field. - - - Enum of possible cases for the "DefaultOneOf" oneof. - - - Container for nested types declared in the Scalar message type. - - - - a string with a charset/collation - - - - Field number for the "value" field. - - - - required - - - - Field number for the "collation" field. - - - Enum of possible cases for the "String_present" oneof. - - - - an opaque octet sequence, with an optional content_type - See ``Mysqlx.Resultset.ColumnMetadata`` for list of known values. - - - - Field number for the "value" field. - - - - required - - - - Field number for the "content_type" field. - - - - a object - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array - - - - Field number for the "value" field. - - - - a helper to allow all field types - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scalar" field. - - - Field number for the "obj" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Any message type. - - - Holder for reflection information generated from mysqlx_expect.proto - - - File descriptor for mysqlx_expect.proto - - - - open an Expect block and set/unset the conditions that have to be fulfilled - - if any of the conditions fail, all enclosed messages will fail with - a Mysqlx.Error message. - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Field number for the "op" field. - - - - [ default = EXPECT_CTX_COPY_PREV ];//optional - - - - Field number for the "cond" field. - - - Container for nested types declared in the Open message type. - - - - copy the operations from the parent Expect-block - - - - - start with a empty set of operations - - - - Field number for the "condition_key" field. - - - - required - - - - Field number for the "condition_value" field. - - - - optional - - - - Field number for the "op" field. - - - - [ default = EXPECT_OP_SET ];//optional - - - - Container for nested types declared in the Condition message type. - - - - Change error propagation behaviour - - - - - Check if X Protocol field exists - - - - - Check if X Protocol support document _id generation - - - - - set the condition - - set, if not set - overwrite, if set - - - - - unset the condition - - - - - close a Expect block - - closing a Expect block restores the state of the previous Expect block - for the following messages - - :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error - - - - Holder for reflection information generated from mysqlx_expr.proto - - - File descriptor for mysqlx_expr.proto - - - - Expressions - - the "root" of the expression tree - - .. productionlist:: - expr: `operator` | - : `identifier` | - : `function_call` | - : variable | - : `literal` | - : placeholder - - If expression type is PLACEHOLDER then it refers to the value of a parameter - specified when executing a statement (see `args` field of `StmtExecute` command). - Field `position` (which must be present for such an expression) gives 0-based - position of the parameter in the parameter list. - - - - Field number for the "type" field. - - - - required - - - - Field number for the "identifier" field. - - - Field number for the "variable" field. - - - Field number for the "literal" field. - - - Field number for the "function_call" field. - - - Field number for the "operator" field. - - - Field number for the "position" field. - - - Field number for the "object" field. - - - Field number for the "array" field. - - - Container for nested types declared in the Expr message type. - - - - identifier: name, schame.name - - .. productionlist:: - identifier: string "." string | - : string - - - - Field number for the "name" field. - - - - required - - - - Field number for the "schema_name" field. - - - - DocumentPathItem - - .. productionlist:: - document_path: path_item | path_item document_path - path_item : member | array_index | "**" - member : "." string | "." "*" - array_index : "[" number "]" | "[" "*" "]" - - - - Field number for the "type" field. - - - - required - - - - Field number for the "value" field. - - - Field number for the "index" field. - - - Container for nested types declared in the DocumentPathItem message type. - - - - .member - - - - - .* - - - - - [index] - - - - - [*] - - - - - ** - - - - - col_identifier (table): col@doc_path, tbl.col@doc_path col, tbl.col, schema.tbl.col - col_identifier (document): doc_path - - .. productionlist:: - col_identifier: string "." string "." string | - : string "." string | - : string | - : string "." string "." string "@" document_path | - : string "." string "@" document_path | - : string "@" document_path | - : document_path - document_path: member | arrayLocation | doubleAsterisk - member = "." string | "." "*" - arrayLocation = "[" index "]" | "[" "*" "]" - doubleAsterisk = "**" - - - - Field number for the "document_path" field. - - - Field number for the "name" field. - - - Field number for the "table_name" field. - - - Field number for the "schema_name" field. - - - - function call: ``func(a, b, "1", 3)`` - - .. productionlist:: - function_call: `identifier` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - operator: ``<<(a, b)`` - - .. note:: - - Non-authoritative list of operators implemented (case sensitive): - - Nullary - * ``*`` - * ``default`` - - Unary - * ``!`` - * ``sign_plus`` - * ``sign_minus`` - * ``~`` - - Binary - * ``&&`` - * ``||`` - * ``xor`` - * ``==`` - * ``!=`` - * ``>`` - * ``>=`` - * ``<`` - * ``<=`` - * ``&`` - * ``|`` - * ``^`` - * ``<<`` - * ``>>`` - * ``+`` - * ``-`` - * ``*`` - * ``/`` - * ``div`` - * ``%`` - * ``is`` - * ``is_not`` - * ``regexp`` - * ``not_regexp`` - * ``like`` - * ``not_like`` - * ``cast`` - * ``cont_in`` - * ``not_cont_in`` - - Using special representation, with more than 2 params - * ``in`` (param[0] IN (param[1], param[2], ...)) - * ``not_in`` (param[0] NOT IN (param[1], param[2], ...)) - - Ternary - * ``between`` - * ``between_not`` - * ``date_add`` - * ``date_sub`` - - Units for date_add/date_sub - * ``MICROSECOND`` - * ``SECOND`` - * ``MINUTE`` - * ``HOUR`` - * ``DAY`` - * ``WEEK`` - * ``MONTH`` - * ``QUARTER`` - * ``YEAR`` - * ``SECOND_MICROSECOND`` - * ``MINUTE_MICROSECOND`` - * ``MINUTE_SECOND`` - * ``HOUR_MICROSECOND`` - * ``HOUR_SECOND`` - * ``HOUR_MINUTE`` - * ``DAY_MICROSECOND`` - * ``DAY_SECOND`` - * ``DAY_MINUTE`` - * ``DAY_HOUR`` - - Types for cast - * ``BINARY[(N)]`` - * ``CHAR[(N)]`` - * ``DATE`` - * ``DATETIME`` - * ``DECIMAL[(M[,D])]`` - * ``JSON`` - * ``SIGNED [INTEGER]`` - * ``TIME`` - * ``UNSIGNED [INTEGER]`` - - .. productionlist:: - operator: `name` "(" [ `expr` ["," `expr` ]* ] ")" - - - - Field number for the "name" field. - - - - required - - - - Field number for the "param" field. - - - - an object (with expression values) - - - - Field number for the "fld" field. - - - Container for nested types declared in the Object message type. - - - Field number for the "key" field. - - - - required - - - - Field number for the "value" field. - - - - required - - - - - a Array of expressions - - - - Field number for the "value" field. - - - Holder for reflection information generated from mysqlx_notice.proto - - - File descriptor for mysqlx_notice.proto - - - - Common Frame for all Notices - - ===================================================== ===== - .type value - ===================================================== ===== - :protobuf:msg:`Mysqlx.Notice::Warning` 1 - :protobuf:msg:`Mysqlx.Notice::SessionVariableChanged` 2 - :protobuf:msg:`Mysqlx.Notice::SessionStateChanged` 3 - ===================================================== ===== - - :param type: the type of the payload - :param payload: the payload of the notification - :param scope: global or local notification - - - - Field number for the "type" field. - - - - required - - - - Field number for the "scope" field. - - - - [ default = GLOBAL ];//optional - - - - Field number for the "payload" field. - - - - optional - - - - Container for nested types declared in the Frame message type. - - - - Server-side warnings and notes - - ``.scope`` == ``local`` - ``.level``, ``.code`` and ``.msg`` map the content of - - .. code-block:: sql - - SHOW WARNINGS - - ``.scope`` == ``global`` - (undefined) will be used for global, unstructured messages like: - - * server is shutting down - * a node disconnected from group - * schema or table dropped - - ========================================== ======================= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ======================= - ``.type`` 1 - ``.scope`` ``local`` or ``global`` - ========================================== ======================= - - :param level: warning level: Note or Warning - :param code: warning code - :param msg: warning message - - - - Field number for the "level" field. - - - - [ default = WARNING ];//optional - - - - Field number for the "code" field. - - - - required - - - - Field number for the "msg" field. - - - - required - - - - Container for nested types declared in the Warning message type. - - - - Notify clients about changes to the current session variables - - Every change to a variable that is accessible through: - - .. code-block:: sql - - SHOW SESSION VARIABLES - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 2 - ``.scope`` ``local`` - ========================================== ========= - - :param namespace: namespace that param belongs to - :param param: name of the variable - :param value: the changed value of param - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - - optional - - - - - Notify clients about changes to the internal session state - - ========================================== ========= - :protobuf:msg:`Mysqlx.Notice::Frame` field value - ========================================== ========= - ``.type`` 3 - ``.scope`` ``local`` - ========================================== ========= - - :param param: parameter key - :param value: updated value - - - - Field number for the "param" field. - - - - required - - - - Field number for the "value" field. - - - Container for nested types declared in the SessionStateChanged message type. - - - - .. more to be added - - - - Holder for reflection information generated from mysqlx_prepare.proto - - - File descriptor for mysqlx_prepare.proto - - - - Prepare a new statement - - .. uml:: - - client -> server: Prepare - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, which is going to identify the result of preparation - :param stmt: defines one of following messages to be prepared - Crud.Find, Crud.Insert, Crud.Delete, Crud.Upsert, Sql.StmtExecute - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "stmt" field. - - - - required - - - - Container for nested types declared in the Prepare message type. - - - Field number for the "type" field. - - - - required - - - - Field number for the "find" field. - - - - optional - - - - Field number for the "insert" field. - - - - optional - - - - Field number for the "update" field. - - - - optional - - - - Field number for the "delete" field. - - - - optional - - - - Field number for the "stmt_execute" field. - - - - optional - - - - Enum of possible cases for the "Type_present" oneof. - - - Container for nested types declared in the OneOfMessage message type. - - - - Determine which of optional fields was set by the client - (Workaround for missing "oneof" keyword in pb2.5) - - - - - Execute already prepared statement - - .. uml:: - - client -> server: Execute - alt Success - ... Resultsets... - client <- server: StmtExecuteOk - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :param args_list: Arguments to bind to the prepared statement - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :Returns: :protobuf:msg:`Mysqlx.Ok::` - - - - Field number for the "stmt_id" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - [ default = false ]; optional - - - - - Deallocate already prepared statement - - Deallocating the statement. - - .. uml:: - - client -> server: Deallocate - alt Success - client <- server: Ok - else Failure - client <- server: Error - end - - :param stmt_id: client side assigned statement id, must be already prepared - :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error` - - - - Field number for the "stmt_id" field. - - - - required - - - - Holder for reflection information generated from mysqlx_resultset.proto - - - File descriptor for mysqlx_resultset.proto - - - - a hint about the higher-level encoding of a BYTES field - - ====== ====== =========== - type value description - ====== ====== =========== - BYTES 0x0001 GEOMETRY (WKB encoding) - BYTES 0x0002 JSON (text encoding) - BYTES 0x0003 XML (text encoding) - ====== ====== =========== - - .. note:: - this list isn't comprehensive. As guideline: the field's value is expected - to pass a validator check on client and server if this field is set. - If the server adds more internal datatypes that rely on BLOB storage - like image manipulation, seeking into complex types in BLOBs, ... more - types will be added. - - - - - a hint about the higher-level encoding of a DATETIME field - - ====== ====== =========== - type value description - ======== ====== =========== - DATE 0x0001 DATETIME contains only date part - DATETIME 0x0002 DATETIME contains both date and time parts - ====== ====== =========== - - - - - resultsets are finished, OUT paramset is next - - - - - resultset and out-params are finished, but more resultsets available - - - - - all resultsets are finished - - - - - cursor is opened still the execution of PrepFetch or PrepExecute ended - - - - - meta data of a Column - - .. note:: the encoding used for the different ``bytes`` fields in the meta data is externally - controlled. - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html - - .. note:: - The server may not set the ``original_{table|name}`` fields if they are equal to the plain - ``{table|name}`` field. - - A client has to reconstruct it like:: - - if .original_name is empty and .name is not empty: - .original_name = .name - - if .original_table is empty and .table is not empty: - .original_table = .table - - .. note:: - ``compact metadata format`` can be requested by the client. In that case only ``.type`` is set and - all other fields are empty. - - :param type: - .. table:: Expected Datatype of Mysqlx.Resultset.Row per SQL Type for non NULL values - - ================= ============ ======= ========== ====== ======== - SQL Type .type .length .frac_dig .flags .charset - ================= ============ ======= ========== ====== ======== - TINY SINT x - TINY UNSIGNED UINT x x - SHORT SINT x - SHORT UNSIGNED UINT x x - INT24 SINT x - INT24 UNSIGNED UINT x x - INT SINT x - INT UNSIGNED UINT x x - LONGLONG SINT x - LONGLONG UNSIGNED UINT x x - DOUBLE DOUBLE x x x - FLOAT FLOAT x x x - DECIMAL DECIMAL x x x - VARCHAR,CHAR,... BYTES x x x - GEOMETRY BYTES - TIME TIME x - DATE DATETIME x - DATETIME DATETIME x - YEAR UINT x x - TIMESTAMP DATETIME x - SET SET x - ENUM ENUM x - NULL BYTES - BIT BIT x - ================= ============ ======= ========== ====== ======== - - .. note:: the SQL "NULL" value is sent as an empty field value in :protobuf:msg:`Mysqlx.Resultset::Row` - .. seealso:: protobuf encoding of primitive datatypes are decribed in https://developers.google.com/protocol-buffers/docs/encoding - - SINT - - ``.length`` - maximum number of displayable decimal digits (including minus sign) of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - =============== == - SQL Type max digits per type - =============== == - TINY SIGNED 4 - SHORT SIGNED 6 - INT24 SIGNED 8 - INT SIGNED 11 - LONGLONG SIGNED 20 - =============== == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded signed 64 integer - - UINT - - ``.flags & 1`` (zerofill) - the client has to left pad with 0's up to .length - - ``.length`` - maximum number of displayable decimal digits of the type - - .. note:: - valid range is 0-255, but usually you'll see 1-20 - - ================= == - SQL Type max digits per type - ================= == - TINY UNSIGNED 3 - SHORT UNSIGNED 5 - INT24 UNSIGNED 8 - INT UNSIGNED 10 - LONGLONG UNSIGNED 20 - ================= == - - .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - BIT - - ``.length`` - maximum number of displayable binary digits - - .. note:: valid range for M of the ``BIT`` type is 1 - 64 - .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html - - ``value`` - variable length encoded unsigned 64 integer - - DOUBLE - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'double' - - FLOAT - - ``.length`` - maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``) - - ``.fractional_digits`` - maximum number of displayable decimal digits following the decimal point - - ``value`` - encoded as Protobuf's 'float' - - BYTES, ENUM - BYTES is used for all opaque byte strings that may have a charset - - * TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB - * TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT - * VARCHAR, VARBINARY - * CHAR, BINARY - * ENUM - - ``.length`` - the maximum length of characters of the underlying type - - ``.flags & 1`` (rightpad) - if the length of the field is less than ``.length``, the receiver is - supposed to add padding characters to the right end of the string. - If the ``.charset`` is "binary", the padding character is ``0x00``, - otherwise it is a space character as defined by that character set. - - ============= ======= ======== ======= - SQL Type .length .charset .flags - ============= ======= ======== ======= - TINYBLOB 256 binary - BLOB 65535 binary - VARCHAR(32) 32 utf8 - VARBINARY(32) 32 utf8_bin - BINARY(32) 32 binary rightpad - CHAR(32) 32 utf8 rightpad - ============= ======= ======== ======= - - ``value`` - sequence of bytes with added one extra '\0' byte at the end. To obtain the - original string, the extra '\0' should be removed. - .. note:: the length of the string can be acquired with protobuf's field length() method - length of sequence-of-bytes = length-of-field - 1 - .. note:: the extra byte allows to distinguish between a NULL and empty byte sequence - - TIME - A time value. - - ``value`` - the following bytes sequence: - - ``| negate [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * negate - one byte, should be one of: 0x00 for "+", 0x01 for "-" - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. seealso:: protobuf encoding in https://developers.google.com/protocol-buffers/docs/encoding - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - Example: 0x00 -> +00:00:00.000000 - - DATETIME - A date or date and time value. - - ``value`` - a sequence of variants, arranged as follows: - - ``| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` - - * year - variable length encoded unsigned64 value for the year - * month - variable length encoded unsigned64 value for the month - * day - variable length encoded unsigned64 value for the day - * hour - optional variable length encoded unsigned64 value for the hour - * minutes - optional variable length encoded unsigned64 value for the minutes - * seconds - optional variable length encoded unsigned64 value for the seconds - * useconds - optional variable length encoded unsigned64 value for the microseconds - - .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0 - - ``.flags & 1`` (timestamp) - - ============= ======= - SQL Type .flags - ============= ======= - DATETIME - TIMESTAMP 1 - - DECIMAL - An arbitrary length number. The number is encoded as a single byte - indicating the position of the decimal point followed by the Packed BCD - encoded number. Packed BCD is used to simplify conversion to and - from strings and other native arbitrary precision math datatypes. - .. seealso:: packed BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal - - ``.length`` - maximum number of displayable decimal digits (*excluding* the decimal point and sign, but including ``.fractional_digits``) - - .. note:: should be in the range of 1 - 65 - - ``.fractional_digits`` - is the decimal digits to display out of length - - .. note:: should be in the range of 0 - 30 - - ``value`` - the following bytes sequence: - - ``| scale | BCD | sign | [0x0] |`` - - * scale - 8bit scale value (number of decimal digit after the '.') - * BCD - BCD encoded digits (4 bits for each digit) - * sign - sign encoded on 4 bits (0xc = "+", 0xd = "-") - * 0x0 - last 4bits if length(digits) % 2 == 0 - - Example: x04 0x12 0x34 0x01 0xd0 -> -12.3401 - - SET - A list of strings representing a SET of values. - - ``value`` - A sequence of 0 or more of protobuf's bytes (length prepended octets) or one of - the special sequences with a predefined meaning listed below. - - Example (length of the bytes array shown in brackets): - * ``[0]`` - the NULL value - * ``[1] 0x00`` - a set containing a blank string '' - * ``[1] 0x01`` - this would be an invalid value, but is to be treated as the empty set - * ``[2] 0x01 0x00`` - a set with a single item, which is the '\0' character - * ``[8] 0x03 F O O 0x03 B A R`` - a set with 2 items: FOO,BAR - - :param name: name of the column - :param original_name: name of the column before an alias was applied - :param table: name of the table the column orginates from - :param original_table: name of the table the column orginates from before an alias was applied - :param schema: schema the column originates from - :param catalog: - catalog the schema originates from - - .. note:: - as there is current no support for catalogs in MySQL, don't expect this field to be set. - In the MySQL C/S protocol the field had the value ``def`` all the time. - - :param fractional_digits: displayed factional decimal digits for floating point and fixed point numbers - :param length: maximum count of displayable characters of .type - :param flags: - ``.type`` specific flags - - ======= ====== =========== - type value description - ======= ====== =========== - UINT 0x0001 zerofill - DOUBLE 0x0001 unsigned - FLOAT 0x0001 unsigned - DECIMAL 0x0001 unsigned - BYTES 0x0001 rightpad - ======= ====== =========== - - ====== ================ - value description - ====== ================ - 0x0010 NOT_NULL - 0x0020 PRIMARY_KEY - 0x0040 UNIQUE_KEY - 0x0080 MULTIPLE_KEY - 0x0100 AUTO_INCREMENT - ====== ================ - - default: 0 - :param content_type: - a hint about the higher-level encoding of a BYTES field, for more informations - please refer to Mysqlx.Resultset.ContentType_BYTES enum. - - - - Field number for the "type" field. - - - - datatype of the field in a row - - - - Field number for the "name" field. - - - Field number for the "original_name" field. - - - Field number for the "table" field. - - - Field number for the "original_table" field. - - - Field number for the "schema" field. - - - Field number for the "catalog" field. - - - Field number for the "collation" field. - - - Field number for the "fractional_digits" field. - - - Field number for the "length" field. - - - Field number for the "flags" field. - - - Field number for the "content_type" field. - - - Container for nested types declared in the ColumnMetaData message type. - - - - Row in a Resultset - - a row is represented as a list of fields encoded as byte blobs. - Blob of size 0 represents the NULL value. Otherwise, if it contains at least - one byte, it encodes a non-null value of the field using encoding appropriate for the - type of the value given by ``ColumnMetadata``, as specified - in the :protobuf:msg:`Mysqlx.Resultset::ColumnMetaData` description. - - - - Field number for the "field" field. - - - Holder for reflection information generated from mysqlx_session.proto - - - File descriptor for mysqlx_session.proto - - - - the initial message send from the client to the server to start the - authentication proccess - - :param mech_name: authentication mechanism name - :param auth_data: authentication data - :param initial_response: initial response - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "mech_name" field. - - - - required - - - - Field number for the "auth_data" field. - - - Field number for the "initial_response" field. - - - - send by client or server after a :protobuf:msg:`Mysqlx.Session::AuthenticateStart` to - exchange more auth data - - :param auth_data: authentication data - :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue` - - - - Field number for the "auth_data" field. - - - - required - - - - - sent by the server after successful authentication - - :param auth_data: authentication data - - - - Field number for the "auth_data" field. - - - - reset the current session - param keep_open: if is true the session will be reset, but stays authenticated. - otherwise, the session will be closed and needs to be authenticated again. - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Field number for the "keep_open" field. - - - - close the current session - - :Returns: :protobuf:msg:`Mysqlx::Ok` - - - - Holder for reflection information generated from mysqlx_sql.proto - - - File descriptor for mysqlx_sql.proto - - - - execute a statement in the given namespace - - .. uml:: - - client -> server: StmtExecute - ... zero or more Resultsets ... - server --> client: StmtExecuteOk - - Notices: - This message may generate a notice containing WARNINGs generated by its execution. - This message may generate a notice containing INFO messages generated by its execution. - - :param namespace: namespace of the statement to be executed - :param stmt: statement that shall be executed. - :param args: values for wildcard replacements - :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others - :returns: - * zero or one :protobuf:msg:`Mysqlx.Resultset::` followed by :protobuf:msg:`Mysqlx.Sql::StmtExecuteOk` - - - - Field number for the "namespace" field. - - - - optional [ default = "sql" ] - - - - Field number for the "stmt" field. - - - - required - - - - Field number for the "args" field. - - - Field number for the "compact_metadata" field. - - - - optional [ default = false ] - - - - - statement executed successful - - -
-
diff --git a/AUTS_UpdateService/bin/Debug/Newtonsoft.Json.dll b/AUTS_UpdateService/bin/Debug/Newtonsoft.Json.dll deleted file mode 100644 index 7af125a..0000000 Binary files a/AUTS_UpdateService/bin/Debug/Newtonsoft.Json.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/Newtonsoft.Json.xml b/AUTS_UpdateService/bin/Debug/Newtonsoft.Json.xml deleted file mode 100644 index 008e0ca..0000000 --- a/AUTS_UpdateService/bin/Debug/Newtonsoft.Json.xml +++ /dev/null @@ -1,11305 +0,0 @@ - - - - Newtonsoft.Json - - - - - Represents a BSON Oid (object id). - - - - - Gets or sets the value of the Oid. - - The value of the Oid. - - - - Initializes a new instance of the class. - - The Oid value. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized BSON data. - - - - - Gets or sets a value indicating whether binary data reading should be compatible with incorrect Json.NET 3.5 written binary. - - - true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. - - - - - Gets or sets a value indicating whether the root object will be read as a JSON array. - - - true if the root object will be read as a JSON array; otherwise, false. - - - - - Gets or sets the used when reading values from BSON. - - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Initializes a new instance of the class. - - The containing the BSON data to read. - if set to true the root object will be read as a JSON array. - The used when reading values from BSON. - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating BSON data. - - - - - Gets or sets the used when writing values to BSON. - When set to no conversion will occur. - - The used when writing values to BSON. - - - - Initializes a new instance of the class. - - The to write to. - - - - Initializes a new instance of the class. - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying stream. - - - - - Writes the end. - - The token. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes the beginning of a JSON array. - - - - - Writes the beginning of a JSON object. - - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value that represents a BSON object id. - - The Object ID value to write. - - - - Writes a BSON regex. - - The regex pattern. - The regex options. - - - - Specifies how constructors are used when initializing objects during deserialization by the . - - - - - First attempt to use the public default constructor, then fall back to a single parameterized constructor, then to the non-public default constructor. - - - - - Json.NET will use a non-public default constructor before falling back to a parameterized constructor. - - - - - Converts a binary value to and from a base 64 string value. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Creates a custom object. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Creates an object which will then be populated by the serializer. - - Type of the object. - The created object. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Provides a base class for converting a to and from JSON. - - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a F# discriminated union type to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an Entity Framework to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can write JSON. - - - true if this can write JSON; otherwise, false. - - - - - Converts a to and from the ISO 8601 date format (e.g. "2008-04-12T12:53Z"). - - - - - Gets or sets the date time styles used when converting a date to and from JSON. - - The date time styles used when converting a date to and from JSON. - - - - Gets or sets the date time format used when converting a date to and from JSON. - - The date time format used when converting a date to and from JSON. - - - - Gets or sets the culture used when converting a date to and from JSON. - - The culture used when converting a date to and from JSON. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Converts a to and from a JavaScript Date constructor (e.g. new Date(52231943)). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from JSON and BSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts an to and from its name string value. - - - - - Gets or sets a value indicating whether the written enum text should be camel case. - The default value is false. - - true if the written enum text will be camel case; otherwise, false. - - - - Gets or sets the naming strategy used to resolve how enum text is written. - - The naming strategy used to resolve how enum text is written. - - - - Gets or sets a value indicating whether integer values are allowed when serializing and deserializing. - The default value is true. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - true if the written enum text will be camel case; otherwise, false. - - - - Initializes a new instance of the class. - - The naming strategy used to resolve how enum text is written. - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - - Initializes a new instance of the class. - - The of the used to write enum text. - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - true if integers are allowed when serializing and deserializing; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts a to and from Unix epoch time - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Converts a to and from a string (e.g. "1.2.3.4"). - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing property value of the JSON that is being converted. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Converts XML to and from JSON. - - - - - Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produced multiple root elements. - - The name of the deserialized root element. - - - - Gets or sets a value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - true if the array attribute is written to the XML; otherwise, false. - - - - Gets or sets a value indicating whether to write the root JSON object. - - true if the JSON root object is omitted; otherwise, false. - - - - Gets or sets a value indicating whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - true if special characters are encoded; otherwise, false. - - - - Writes the JSON representation of the object. - - The to write to. - The calling serializer. - The value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Checks if the is a namespace attribute. - - Attribute name to test. - The attribute name prefix if it has one, otherwise an empty string. - true if attribute name is for a namespace attribute, otherwise false. - - - - Determines whether this instance can convert the specified value type. - - Type of the value. - - true if this instance can convert the specified value type; otherwise, false. - - - - - Specifies how dates are formatted when writing JSON text. - - - - - Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". - - - - - Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". - - - - - Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. - - - - - Date formatted strings are not parsed to a date type and are read as strings. - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . - - - - - Specifies how to treat the time value when converting between string and . - - - - - Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. - - - - - Treat as a UTC. If the object represents a local time, it is converted to a UTC. - - - - - Treat as a local time if a is being converted to a string. - If a string is being converted to , convert to a local time if a time zone is specified. - - - - - Time zone information should be preserved when converting. - - - - - The default JSON name table implementation. - - - - - Initializes a new instance of the class. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Adds the specified string into name table. - - The string to add. - This method is not thread-safe. - The resolved string. - - - - Specifies default value handling options for the . - - - - - - - - - Include members where the member value is the same as the member's default value when serializing objects. - Included members are written to JSON. Has no effect when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - so that it is not written to JSON. - This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, - decimals and floating point numbers; and false for booleans). The default value ignored can be changed by - placing the on the property. - - - - - Members with a default value but no JSON will be set to their default value when deserializing. - - - - - Ignore members where the member value is the same as the member's default value when serializing objects - and set members to their default value when deserializing. - - - - - Specifies float format handling options when writing special floating point numbers, e.g. , - and with . - - - - - Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". - - - - - Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. - Note that this will produce non-valid JSON. - - - - - Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a of property. - - - - - Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Floating point numbers are parsed to . - - - - - Floating point numbers are parsed to . - - - - - Specifies formatting options for the . - - - - - No special formatting is applied. This is the default. - - - - - Causes child objects to be indented according to the and settings. - - - - - Provides an interface for using pooled arrays. - - The array type content. - - - - Rent an array from the pool. This array must be returned when it is no longer needed. - - The minimum required length of the array. The returned array may be longer. - The rented array from the pool. This array must be returned when it is no longer needed. - - - - Return an array to the pool. - - The array that is being returned. - - - - Provides an interface to enable a class to return line and position information. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - The current line number or 0 if no line information is available (for example, when returns false). - - - - Gets the current line position. - - The current line position or 0 if no line information is available (for example, when returns false). - - - - Instructs the how to serialize the collection. - - - - - Gets or sets a value indicating whether null items are allowed in the collection. - - true if null items are allowed in the collection; otherwise, false. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with a flag indicating whether the array can contain null items. - - A flag indicating whether the array can contain null items. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to use the specified constructor when deserializing that object. - - - - - Instructs the how to serialize the object. - - - - - Gets or sets the id. - - The id. - - - - Gets or sets the title. - - The title. - - - - Gets or sets the description. - - The description. - - - - Gets or sets the collection's items converter. - - The collection's items converter. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets a value that indicates whether to preserve object references. - - - true to keep object reference; otherwise, false. The default is false. - - - - - Gets or sets a value that indicates whether to preserve collection's items references. - - - true to keep collection's items object references; otherwise, false. The default is false. - - - - - Gets or sets the reference loop handling used when serializing the collection's items. - - The reference loop handling. - - - - Gets or sets the type name handling used when serializing the collection's items. - - The type name handling. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Provides methods for converting between .NET types and JSON types. - - - - - - - - Gets or sets a function that creates default . - Default settings are automatically used by serialization methods on , - and and on . - To serialize without using any default settings create a with - . - - - - - Represents JavaScript's boolean value true as a string. This field is read-only. - - - - - Represents JavaScript's boolean value false as a string. This field is read-only. - - - - - Represents JavaScript's null as a string. This field is read-only. - - - - - Represents JavaScript's undefined as a string. This field is read-only. - - - - - Represents JavaScript's positive infinity as a string. This field is read-only. - - - - - Represents JavaScript's negative infinity as a string. This field is read-only. - - - - - Represents JavaScript's NaN as a string. This field is read-only. - - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - The time zone handling when the date is converted to a string. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation using the specified. - - The value to convert. - The format the date will be converted to. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - The string delimiter character. - The string escape handling. - A JSON string representation of the . - - - - Converts the to its JSON string representation. - - The value to convert. - A JSON string representation of the . - - - - Serializes the specified object to a JSON string. - - The object to serialize. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting. - - The object to serialize. - Indicates how the output should be formatted. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a collection of . - - The object to serialize. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using formatting and a collection of . - - The object to serialize. - Indicates how the output should be formatted. - A collection of converters used while serializing. - A JSON string representation of the object. - - - - Serializes the specified object to a JSON string using . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - A JSON string representation of the object. - - - - - Serializes the specified object to a JSON string using a type, formatting and . - - The object to serialize. - Indicates how the output should be formatted. - The used to serialize the object. - If this is null, default serialization settings will be used. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - A JSON string representation of the object. - - - - - Deserializes the JSON to a .NET object. - - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to a .NET object using . - - The JSON to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The JSON to deserialize. - The of object being deserialized. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type. - - The type of the object to deserialize to. - The JSON to deserialize. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the given anonymous type. - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the given anonymous type using . - - - The anonymous type to deserialize to. This can't be specified - traditionally and must be inferred from the anonymous type passed - as a parameter. - - The JSON to deserialize. - The anonymous type object. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized anonymous type from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The type of the object to deserialize to. - The JSON to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The type of the object to deserialize to. - The object to deserialize. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using a collection of . - - The JSON to deserialize. - The type of the object to deserialize. - Converters to use while deserializing. - The deserialized object from the JSON string. - - - - Deserializes the JSON to the specified .NET type using . - - The JSON to deserialize. - The type of the object to deserialize to. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - The deserialized object from the JSON string. - - - - Populates the object with values from the JSON string. - - The JSON to populate values from. - The target object to populate values onto. - - - - Populates the object with values from the JSON string using . - - The JSON to populate values from. - The target object to populate values onto. - - The used to deserialize the object. - If this is null, default serialization settings will be used. - - - - - Serializes the to a JSON string. - - The node to serialize. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to serialize. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Serializes the to a JSON string. - - The node to convert to JSON. - A JSON string of the . - - - - Serializes the to a JSON string using formatting. - - The node to convert to JSON. - Indicates how the output should be formatted. - A JSON string of the . - - - - Serializes the to a JSON string using formatting and omits the root object if is true. - - The node to serialize. - Indicates how the output should be formatted. - Omits writing the root object. - A JSON string of the . - - - - Deserializes the from a JSON string. - - The JSON string. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by . - - The JSON string. - The name of the root element to append when deserializing. - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by - and writes a Json.NET array attribute for collections. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - The deserialized . - - - - Deserializes the from a JSON string nested in a root element specified by , - writes a Json.NET array attribute for collections, and encodes special characters. - - The JSON string. - The name of the root element to append when deserializing. - - A value to indicate whether to write the Json.NET array attribute. - This attribute helps preserve arrays when converting the written XML back to JSON. - - - A value to indicate whether to encode special characters when converting JSON to XML. - If true, special characters like ':', '@', '?', '#' and '$' in JSON property names aren't used to specify - XML namespaces, attributes or processing directives. Instead special characters are encoded and written - as part of the XML element name. - - The deserialized . - - - - Converts an object to and from JSON. - - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Gets a value indicating whether this can read JSON. - - true if this can read JSON; otherwise, false. - - - - Gets a value indicating whether this can write JSON. - - true if this can write JSON; otherwise, false. - - - - Converts an object to and from JSON. - - The object type to convert. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Writes the JSON representation of the object. - - The to write to. - The value. - The calling serializer. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. - The calling serializer. - The object value. - - - - Reads the JSON representation of the object. - - The to read from. - Type of the object. - The existing value of object being read. If there is no existing value then null will be used. - The existing value has a value. - The calling serializer. - The object value. - - - - Determines whether this instance can convert the specified object type. - - Type of the object. - - true if this instance can convert the specified object type; otherwise, false. - - - - - Instructs the to use the specified when serializing the member or class. - - - - - Gets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - - - - - Initializes a new instance of the class. - - Type of the . - - - - Initializes a new instance of the class. - - Type of the . - Parameter list to use when constructing the . Can be null. - - - - Represents a collection of . - - - - - Instructs the how to serialize the collection. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Instructs the to deserialize properties with no matching class member into the specified collection - and write values during serialization. - - - - - Gets or sets a value that indicates whether to write extension data when serializing the object. - - - true to write extension data when serializing the object; otherwise, false. The default is true. - - - - - Gets or sets a value that indicates whether to read extension data when deserializing the object. - - - true to read extension data when deserializing the object; otherwise, false. The default is true. - - - - - Initializes a new instance of the class. - - - - - Instructs the not to serialize the public field or public read/write property value. - - - - - Base class for a table of atomized string objects. - - - - - Gets a string containing the same characters as the specified range of characters in the given array. - - The character array containing the name to find. - The zero-based index into the array specifying the first character of the name. - The number of characters in the name. - A string containing the same characters as the specified range of characters in the given array. - - - - Instructs the how to serialize the object. - - - - - Gets or sets the member serialization. - - The member serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified member serialization. - - The member serialization. - - - - Initializes a new instance of the class with the specified container Id. - - The container Id. - - - - Instructs the to always serialize the member with the specified name. - - - - - Gets or sets the type used when serializing the property's collection items. - - The collection's items type. - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the of the . - - The of the . - - - - The parameter list to use when constructing the described by . - If null, the default constructor is used. - When non-null, there must be a constructor defined in the that exactly matches the number, - order, and type of these parameters. - - - - [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] - - - - - - Gets or sets the null value handling used when serializing this property. - - The null value handling. - - - - Gets or sets the default value handling used when serializing this property. - - The default value handling. - - - - Gets or sets the reference loop handling used when serializing this property. - - The reference loop handling. - - - - Gets or sets the object creation handling used when deserializing this property. - - The object creation handling. - - - - Gets or sets the type name handling used when serializing this property. - - The type name handling. - - - - Gets or sets whether this property's value is serialized as a reference. - - Whether this property's value is serialized as a reference. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets a value indicating whether this property is required. - - - A value indicating whether this property is required. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class with the specified name. - - Name of the property. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously skips the children of the current token. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Specifies the state of the reader. - - - - - A read method has not been called. - - - - - The end of the file has been reached successfully. - - - - - Reader is at a property. - - - - - Reader is at the start of an object. - - - - - Reader is in an object. - - - - - Reader is at the start of an array. - - - - - Reader is in an array. - - - - - The method has been called. - - - - - Reader has just read a value. - - - - - Reader is at the start of a constructor. - - - - - Reader is in a constructor. - - - - - An error occurred that prevents the read operation from continuing. - - - - - The end of the file has been reached successfully. - - - - - Gets the current reader state. - - The current reader state. - - - - Gets or sets a value indicating whether the source should be closed when this reader is closed. - - - true to close the source when this reader is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether multiple pieces of JSON content can - be read from a continuous stream without erroring. - - - true to support reading multiple pieces of JSON content; otherwise false. - The default is false. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - Gets or sets how time zones are handled when reading JSON. - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - - - - - Gets or sets how custom date formatted strings are parsed when reading JSON. - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets the type of the current JSON token. - - - - - Gets the text value of the current JSON token. - - - - - Gets the .NET type for the current JSON token. - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets or sets the culture used when reading JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Reads the next JSON token from the source. - - true if the next token was read successfully; false if there are no more tokens to read. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the source as a of . - - A of . This method will return null at the end of an array. - - - - Skips the children of the current token. - - - - - Sets the current token. - - The new token. - - - - Sets the current token and value. - - The new token. - The value. - - - - Sets the current token and value. - - The new token. - The value. - A flag indicating whether the position index inside an array should be updated. - - - - Sets the state based on current token type. - - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Changes the reader's state to . - If is set to true, the source is also closed. - - - - - The exception thrown when an error occurs while reading JSON text. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Instructs the to always serialize the member, and to require that the member has a value. - - - - - The exception thrown when an error occurs during JSON serialization or deserialization. - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path, line number, line position, and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The line number indicating where the error occurred. - The line position indicating where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Serializes and deserializes objects into and from the JSON format. - The enables you to control how objects are encoded into JSON. - - - - - Occurs when the errors during serialization and deserialization. - - - - - Gets or sets the used by the serializer when resolving references. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when resolving type names. - - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - - - - Gets or sets how reference loops (e.g. a class referencing itself) is handled. - The default value is . - - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets a collection that will be used during serialization. - - Collection that will be used during serialization. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. - The default value is false. - - - true if there will be a check for additional JSON content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Creates a new instance. - The will not use default settings - from . - - - A new instance. - The will not use default settings - from . - - - - - Creates a new instance using the specified . - The will not use default settings - from . - - The settings to be applied to the . - - A new instance using the specified . - The will not use default settings - from . - - - - - Creates a new instance. - The will use default settings - from . - - - A new instance. - The will use default settings - from . - - - - - Creates a new instance using the specified . - The will use default settings - from as well as the specified . - - The settings to be applied to the . - - A new instance using the specified . - The will use default settings - from as well as the specified . - - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Populates the JSON values onto the target object. - - The that contains the JSON structure to read values from. - The target object to populate values onto. - - - - Deserializes the JSON structure contained by the specified . - - The that contains the JSON structure to deserialize. - The being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The type of the object to deserialize. - The instance of being deserialized. - - - - Deserializes the JSON structure contained by the specified - into an instance of the specified type. - - The containing the object. - The of object being deserialized. - The instance of being deserialized. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - The type of the value being serialized. - This parameter is used when is Auto to write out the type name if the type of the value does not match. - Specifying the type is optional. - - - - - Serializes the specified and writes the JSON structure - using the specified . - - The used to write the JSON structure. - The to serialize. - - - - Specifies the settings on a object. - - - - - Gets or sets how reference loops (e.g. a class referencing itself) are handled. - The default value is . - - Reference loop handling. - - - - Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. - The default value is . - - Missing member handling. - - - - Gets or sets how objects are created during deserialization. - The default value is . - - The object creation handling. - - - - Gets or sets how null values are handled during serialization and deserialization. - The default value is . - - Null value handling. - - - - Gets or sets how default values are handled during serialization and deserialization. - The default value is . - - The default value handling. - - - - Gets or sets a collection that will be used during serialization. - - The converters. - - - - Gets or sets how object references are preserved by the serializer. - The default value is . - - The preserve references handling. - - - - Gets or sets how type name writing and reading is handled by the serializer. - The default value is . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - The type name handling. - - - - Gets or sets how metadata properties are used during deserialization. - The default value is . - - The metadata properties handling. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how a type name assembly is written and resolved by the serializer. - The default value is . - - The type name assembly format. - - - - Gets or sets how constructors are used during deserialization. - The default value is . - - The constructor handling. - - - - Gets or sets the contract resolver used by the serializer when - serializing .NET objects to JSON and vice versa. - - The contract resolver. - - - - Gets or sets the equality comparer used by the serializer when comparing references. - - The equality comparer. - - - - Gets or sets the used by the serializer when resolving references. - - The reference resolver. - - - - Gets or sets a function that creates the used by the serializer when resolving references. - - A function that creates the used by the serializer when resolving references. - - - - Gets or sets the used by the serializer when writing trace messages. - - The trace writer. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the used by the serializer when resolving type names. - - The binder. - - - - Gets or sets the error handler called during serialization and deserialization. - - The error handler called during serialization and deserialization. - - - - Gets or sets the used by the serializer when invoking serialization callback methods. - - The context. - - - - Gets or sets how and values are formatted when writing JSON text, - and the expected date format when reading JSON text. - The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". - - - - - Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . - A null value means there is no maximum. - The default value is 128. - - - - - Indicates how JSON text output is formatted. - The default value is . - - - - - Gets or sets how dates are written to JSON text. - The default value is . - - - - - Gets or sets how time zones are handled during serialization and deserialization. - The default value is . - - - - - Gets or sets how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. - The default value is . - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written as JSON. - The default value is . - - - - - Gets or sets how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. - The default value is . - - - - - Gets or sets how strings are escaped when writing JSON text. - The default value is . - - - - - Gets or sets the culture used when reading JSON. - The default value is . - - - - - Gets a value indicating whether there will be a check for additional content after deserializing an object. - The default value is false. - - - true if there will be a check for additional content after deserializing an object; otherwise, false. - - - - - Initializes a new instance of the class. - - - - - Represents a reader that provides fast, non-cached, forward-only access to JSON text data. - - - - - Asynchronously reads the next JSON token from the source. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns true if the next token was read successfully; false if there are no more tokens to read. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a []. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the []. This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a of . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the of . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously reads the next JSON token from the source as a . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous read. The - property returns the . This result will be null at the end of an array. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Initializes a new instance of the class with the specified . - - The containing the JSON data to read. - - - - Gets or sets the reader's property name table. - - - - - Gets or sets the reader's character buffer pool. - - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a []. - - A [] or null if the next JSON token is null. This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Gets a value indicating whether the class can return line information. - - - true if and can be provided; otherwise, false. - - - - - Gets the current line number. - - - The current line number or 0 if no line information is available (for example, returns false). - - - - - Gets the current line position. - - - The current line position or 0 if no line information is available (for example, returns false). - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - Derived classes must override this method to get asynchronous behaviour. Otherwise it will - execute synchronously, returning an already-completed task. - - - - Gets or sets the writer's character array pool. - - - - - Gets or sets how many s to write for each level in the hierarchy when is set to . - - - - - Gets or sets which character to use to quote attribute values. - - - - - Gets or sets which character to use for indenting when is set to . - - - - - Gets or sets a value indicating whether object names will be surrounded with quotes. - - - - - Initializes a new instance of the class using the specified . - - The to write to. - - - - Flushes whatever is in the buffer to the underlying and also flushes the underlying . - - - - - Closes this writer. - If is set to true, the underlying is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the specified end token. - - The end token to write. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Specifies the type of JSON token. - - - - - This is returned by the if a read method has not been called. - - - - - An object start token. - - - - - An array start token. - - - - - A constructor start token. - - - - - An object property name. - - - - - A comment. - - - - - Raw JSON. - - - - - An integer. - - - - - A float. - - - - - A string. - - - - - A boolean. - - - - - A null token. - - - - - An undefined token. - - - - - An object end token. - - - - - An array end token. - - - - - A constructor end token. - - - - - A Date. - - - - - Byte data. - - - - - - Represents a reader that provides validation. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Sets an event handler for receiving schema validation errors. - - - - - Gets the text value of the current JSON token. - - - - - - Gets the depth of the current token in the JSON document. - - The depth of the current token in the JSON document. - - - - Gets the path of the current JSON token. - - - - - Gets the quotation mark character used to enclose the value of a string. - - - - - - Gets the type of the current JSON token. - - - - - - Gets the .NET type for the current JSON token. - - - - - - Initializes a new instance of the class that - validates the content returned from the given . - - The to read from while validating. - - - - Gets or sets the schema. - - The schema. - - - - Gets the used to construct this . - - The specified in the constructor. - - - - Changes the reader's state to . - If is set to true, the underlying is also closed. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a []. - - - A [] or null if the next JSON token is null. - - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying as a . - - A . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . This method will return null at the end of an array. - - - - Reads the next JSON token from the underlying as a of . - - A of . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Asynchronously closes this writer. - If is set to true, the destination is also closed. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously flushes whatever is in the buffer to the destination and also flushes the destination. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the specified end token. - - The end token to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes indent characters. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the JSON value delimiter. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an indent space. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON without changing the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of the current JSON object or array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of an array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a constructor. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the end of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a null value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON array. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the start of a constructor with the given name. - - The name of the constructor. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the beginning of a JSON object. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a [] value. - - The [] value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a value. - - The value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes a of value. - - The of value to write. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes an undefined value. - - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously writes the given white space. - - The string of white space characters. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Asynchronously ets the state of the . - - The being written. - The value being written. - The token to monitor for cancellation requests. The default value is . - A that represents the asynchronous operation. - The default behaviour is to execute synchronously, returning an already-completed task. Derived - classes can override this behaviour for true asynchronicity. - - - - Gets or sets a value indicating whether the destination should be closed when this writer is closed. - - - true to close the destination when this writer is closed; otherwise false. The default is true. - - - - - Gets or sets a value indicating whether the JSON should be auto-completed when this writer is closed. - - - true to auto-complete the JSON when this writer is closed; otherwise false. The default is true. - - - - - Gets the top. - - The top. - - - - Gets the state of the writer. - - - - - Gets the path of the writer. - - - - - Gets or sets a value indicating how JSON text output should be formatted. - - - - - Gets or sets how dates are written to JSON text. - - - - - Gets or sets how time zones are handled when writing JSON text. - - - - - Gets or sets how strings are escaped when writing JSON text. - - - - - Gets or sets how special floating point numbers, e.g. , - and , - are written to JSON text. - - - - - Gets or sets how and values are formatted when writing JSON text. - - - - - Gets or sets the culture used when writing JSON. Defaults to . - - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the destination and also flushes the destination. - - - - - Closes this writer. - If is set to true, the destination is also closed. - If is set to true, the JSON is auto-completed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the end of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the end of an array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end constructor. - - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - - - - Writes the property name of a name/value pair of a JSON object. - - The name of the property. - A flag to indicate whether the text should be escaped when it is written as a JSON property name. - - - - Writes the end of the current JSON object or array. - - - - - Writes the current token and its children. - - The to read the token from. - - - - Writes the current token. - - The to read the token from. - A flag indicating whether the current token's children should be written. - - - - Writes the token and its value. - - The to write. - - The value to write. - A value is only required for tokens that have an associated value, e.g. the property name for . - null can be passed to the method for tokens that don't have a value, e.g. . - - - - - Writes the token. - - The to write. - - - - Writes the specified end token. - - The end token to write. - - - - Writes indent characters. - - - - - Writes the JSON value delimiter. - - - - - Writes an indent space. - - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON without changing the writer's state. - - The raw JSON to write. - - - - Writes raw JSON where a value is expected and updates the writer's state. - - The raw JSON to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a of value. - - The of value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - An error will raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes the given white space. - - The string of white space characters. - - - - Releases unmanaged and - optionally - managed resources. - - true to release both managed and unmanaged resources; false to release only unmanaged resources. - - - - Sets the state of the . - - The being written. - The value being written. - - - - The exception thrown when an error occurs while writing JSON text. - - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - Initializes a new instance of the class - with a specified error message, JSON path and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The path to the JSON where the error occurred. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Specifies how JSON comments are handled when loading JSON. - - - - - Ignore comments. - - - - - Load comments as a with type . - - - - - Specifies how duplicate property names are handled when loading JSON. - - - - - Replace the existing value when there is a duplicate property. The value of the last property in the JSON object will be used. - - - - - Ignore the new value when there is a duplicate property. The value of the first property in the JSON object will be used. - - - - - Throw a when a duplicate property is encountered. - - - - - Contains the LINQ to JSON extension methods. - - - - - Returns a collection of tokens that contains the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, the ancestors of every token in the source collection. - - - - Returns a collection of tokens that contains the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains the descendants of every token in the source collection. - - - - Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. - - The type of the objects in source, constrained to . - An of that contains the source collection. - An of that contains every token in the source collection, and the descendants of every token in the source collection. - - - - Returns a collection of child properties of every object in the source collection. - - An of that contains the source collection. - An of that contains the properties of every object in the source collection. - - - - Returns a collection of child values of every object in the source collection with the given key. - - An of that contains the source collection. - The token key. - An of that contains the values of every token in the source collection with the given key. - - - - Returns a collection of child values of every object in the source collection. - - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child values of every object in the source collection with the given key. - - The type to convert the values to. - An of that contains the source collection. - The token key. - An that contains the converted values of every token in the source collection with the given key. - - - - Returns a collection of converted child values of every object in the source collection. - - The type to convert the values to. - An of that contains the source collection. - An that contains the converted values of every token in the source collection. - - - - Converts the value. - - The type to convert the value to. - A cast as a of . - A converted value. - - - - Converts the value. - - The source collection type. - The type to convert the value to. - A cast as a of . - A converted value. - - - - Returns a collection of child tokens of every array in the source collection. - - The source collection type. - An of that contains the source collection. - An of that contains the values of every token in the source collection. - - - - Returns a collection of converted child tokens of every array in the source collection. - - An of that contains the source collection. - The type to convert the values to. - The source collection type. - An that contains the converted values of every token in the source collection. - - - - Returns the input typed as . - - An of that contains the source collection. - The input typed as . - - - - Returns the input typed as . - - The source collection type. - An of that contains the source collection. - The input typed as . - - - - Represents a collection of objects. - - The type of token. - - - - Gets the of with the specified key. - - - - - - Represents a JSON array. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous load. The property contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Initializes a new instance of the class with the specified content. - - The contents of the array. - - - - Loads an from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads an from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the at the specified index. - - - - - - Determines the index of a specific item in the . - - The object to locate in the . - - The index of if found in the list; otherwise, -1. - - - - - Inserts an item to the at the specified index. - - The zero-based index at which should be inserted. - The object to insert into the . - - is not a valid index in the . - - - - - Removes the item at the specified index. - - The zero-based index of the item to remove. - - is not a valid index in the . - - - - - Returns an enumerator that iterates through the collection. - - - A of that can be used to iterate through the collection. - - - - - Adds an item to the . - - The object to add to the . - - - - Removes all items from the . - - - - - Determines whether the contains a specific value. - - The object to locate in the . - - true if is found in the ; otherwise, false. - - - - - Copies the elements of the to an array, starting at a particular array index. - - The array. - Index of the array. - - - - Gets a value indicating whether the is read-only. - - true if the is read-only; otherwise, false. - - - - Removes the first occurrence of a specific object from the . - - The object to remove from the . - - true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . - - - - - Represents a JSON constructor. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets or sets the name of this constructor. - - The constructor name. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name and content. - - The constructor name. - The contents of the constructor. - - - - Initializes a new instance of the class with the specified name. - - The constructor name. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified key. - - The with the specified key. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a token that can contain other tokens. - - - - - Occurs when the list changes or an item in the list changes. - - - - - Occurs before an item is added to the collection. - - - - - Occurs when the items list of the collection has changed, or the collection is reset. - - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Raises the event. - - The instance containing the event data. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Get the first child token of this token. - - - A containing the first child token of the . - - - - - Get the last child token of this token. - - - A containing the last child token of the . - - - - - Returns a collection of the child tokens of this token, in document order. - - - An of containing the child tokens of this , in document order. - - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - - A containing the child values of this , in document order. - - - - - Returns a collection of the descendant tokens for this token in document order. - - An of containing the descendant tokens of the . - - - - Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. - - An of containing this token, and all the descendant tokens of the . - - - - Adds the specified content as children of this . - - The content to be added. - - - - Adds the specified content as the first children of this . - - The content to be added. - - - - Creates a that can be used to add tokens to the . - - A that is ready to have content written to it. - - - - Replaces the child nodes of this token with the specified content. - - The content. - - - - Removes the child nodes from this token. - - - - - Merge the specified content into this . - - The content to be merged. - - - - Merge the specified content into this using . - - The content to be merged. - The used to merge the content. - - - - Gets the count of child JSON tokens. - - The count of child JSON tokens. - - - - Represents a collection of objects. - - The type of token. - - - - An empty collection of objects. - - - - - Initializes a new instance of the struct. - - The enumerable. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Gets the of with the specified key. - - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Represents a JSON object. - - - - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous load. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Occurs when a property value changes. - - - - - Occurs when a property value is changing. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Initializes a new instance of the class with the specified content. - - The contents of the object. - - - - Gets the node type for this . - - The type. - - - - Gets an of of this object's properties. - - An of of this object's properties. - - - - Gets a with the specified name. - - The property name. - A with the specified name or null. - - - - Gets the with the specified name. - The exact name will be searched for first and if no matching property is found then - the will be used to match a property. - - The property name. - One of the enumeration values that specifies how the strings will be compared. - A matched with the specified name or null. - - - - Gets a of of this object's property values. - - A of of this object's property values. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets or sets the with the specified property name. - - - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - is not valid JSON. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - is not valid JSON. - - - - - - - - Creates a from an object. - - The object that will be used to create . - A with the values of the specified object. - - - - Creates a from an object. - - The object that will be used to create . - The that will be used to read the object. - A with the values of the specified object. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Gets the with the specified property name. - - Name of the property. - The with the specified property name. - - - - Gets the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - One of the enumeration values that specifies how the strings will be compared. - The with the specified property name. - - - - Tries to get the with the specified property name. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - Name of the property. - The value. - One of the enumeration values that specifies how the strings will be compared. - true if a value was successfully retrieved; otherwise, false. - - - - Adds the specified property name. - - Name of the property. - The value. - - - - Determines whether the JSON object has the specified property name. - - Name of the property. - true if the JSON object has the specified property name; otherwise, false. - - - - Removes the property with the specified name. - - Name of the property. - true if item was successfully removed; otherwise, false. - - - - Tries to get the with the specified property name. - - Name of the property. - The value. - true if a value was successfully retrieved; otherwise, false. - - - - Returns an enumerator that can be used to iterate through the collection. - - - A that can be used to iterate through the collection. - - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Raises the event with the provided arguments. - - Name of the property. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Represents a JSON property. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Asynchronously loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns a that contains the JSON that was read from the specified . - - - - Gets the container's children tokens. - - The container's children tokens. - - - - Gets the property name. - - The property name. - - - - Gets or sets the property value. - - The property value. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Gets the node type for this . - - The type. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Initializes a new instance of the class. - - The property name. - The property content. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Loads a from a . - - A that will be read for the content of the . - A that contains the JSON that was read from the specified . - - - - Loads a from a . - - A that will be read for the content of the . - The used to load the JSON. - If this is null, default load settings will be used. - A that contains the JSON that was read from the specified . - - - - Represents a view of a . - - - - - Initializes a new instance of the class. - - The name. - - - - When overridden in a derived class, returns whether resetting an object changes its value. - - - true if resetting the component changes its value; otherwise, false. - - The component to test for reset capability. - - - - When overridden in a derived class, gets the current value of the property on a component. - - - The value of a property for a given component. - - The component with the property for which to retrieve the value. - - - - When overridden in a derived class, resets the value for this property of the component to the default value. - - The component with the property value that is to be reset to the default value. - - - - When overridden in a derived class, sets the value of the component to a different value. - - The component with the property value that is to be set. - The new value. - - - - When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. - - - true if the property should be persisted; otherwise, false. - - The component with the property to be examined for persistence. - - - - When overridden in a derived class, gets the type of the component this property is bound to. - - - A that represents the type of component this property is bound to. - When the or - - methods are invoked, the object specified might be an instance of this type. - - - - - When overridden in a derived class, gets a value indicating whether this property is read-only. - - - true if the property is read-only; otherwise, false. - - - - - When overridden in a derived class, gets the type of the property. - - - A that represents the type of the property. - - - - - Gets the hash code for the name of the member. - - - - The hash code for the name of the member. - - - - - Represents a raw JSON string. - - - - - Asynchronously creates an instance of with the content of the reader's current token. - - The reader. - The token to monitor for cancellation requests. The default value is . - A representing the asynchronous creation. The - property returns an instance of with the content of the reader's current token. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class. - - The raw json. - - - - Creates an instance of with the content of the reader's current token. - - The reader. - An instance of with the content of the reader's current token. - - - - Specifies the settings used when loading JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets how JSON comments are handled when loading JSON. - The default value is . - - The JSON comment handling. - - - - Gets or sets how JSON line info is handled when loading JSON. - The default value is . - - The JSON line info handling. - - - - Gets or sets how duplicate property names in JSON objects are handled when loading JSON. - The default value is . - - The JSON duplicate property name handling. - - - - Specifies the settings used when merging JSON. - - - - - Initializes a new instance of the class. - - - - - Gets or sets the method used when merging JSON arrays. - - The method used when merging JSON arrays. - - - - Gets or sets how null value properties are merged. - - How null value properties are merged. - - - - Gets or sets the comparison used to match property names while merging. - The exact property name will be searched for first and if no matching property is found then - the will be used to match a property. - - The comparison used to match property names while merging. - - - - Specifies the settings used when selecting JSON. - - - - - Gets or sets a timeout that will be used when executing regular expressions. - - The timeout that will be used when executing regular expressions. - - - - Gets or sets a flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - A flag that indicates whether an error should be thrown if - no tokens are found when evaluating part of the expression. - - - - - Represents an abstract JSON token. - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Writes this token to a asynchronously. - - A into which this method will write. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains - the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Asynchronously creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - The token to monitor for cancellation requests. The default value is . - - A that represents the asynchronous creation. The - property returns a that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Gets a comparer that can compare two tokens for value equality. - - A that can compare two nodes for value equality. - - - - Gets or sets the parent. - - The parent. - - - - Gets the root of this . - - The root of this . - - - - Gets the node type for this . - - The type. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Compares the values of two tokens, including the values of all descendant tokens. - - The first to compare. - The second to compare. - true if the tokens are equal; otherwise false. - - - - Gets the next sibling token of this node. - - The that contains the next sibling token. - - - - Gets the previous sibling token of this node. - - The that contains the previous sibling token. - - - - Gets the path of the JSON token. - - - - - Adds the specified content immediately after this token. - - A content object that contains simple content or a collection of content objects to be added after this token. - - - - Adds the specified content immediately before this token. - - A content object that contains simple content or a collection of content objects to be added before this token. - - - - Returns a collection of the ancestor tokens of this token. - - A collection of the ancestor tokens of this token. - - - - Returns a collection of tokens that contain this token, and the ancestors of this token. - - A collection of tokens that contain this token, and the ancestors of this token. - - - - Returns a collection of the sibling tokens after this token, in document order. - - A collection of the sibling tokens after this tokens, in document order. - - - - Returns a collection of the sibling tokens before this token, in document order. - - A collection of the sibling tokens before this token, in document order. - - - - Gets the with the specified key. - - The with the specified key. - - - - Gets the with the specified key converted to the specified type. - - The type to convert the token to. - The token key. - The converted token value. - - - - Get the first child token of this token. - - A containing the first child token of the . - - - - Get the last child token of this token. - - A containing the last child token of the . - - - - Returns a collection of the child tokens of this token, in document order. - - An of containing the child tokens of this , in document order. - - - - Returns a collection of the child tokens of this token, in document order, filtered by the specified type. - - The type to filter the child tokens on. - A containing the child tokens of this , in document order. - - - - Returns a collection of the child values of this token, in document order. - - The type to convert the values to. - A containing the child values of this , in document order. - - - - Removes this token from its parent. - - - - - Replaces this token with the specified token. - - The value. - - - - Writes this token to a . - - A into which this method will write. - A collection of which will be used when writing the token. - - - - Returns the indented JSON for this token. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - The indented JSON for this token. - - - - - Returns the JSON for this token using the given formatting and converters. - - Indicates how the output should be formatted. - A collection of s which will be used when writing the token. - The JSON for this token using the given formatting and converters. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to []. - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to of . - - The value. - The result of the conversion. - - - - Performs an explicit conversion from to . - - The value. - The result of the conversion. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from [] to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from to . - - The value to create a from. - The initialized with the specified value. - - - - Performs an implicit conversion from of to . - - The value to create a from. - The initialized with the specified value. - - - - Creates a for this token. - - A that can be used to read this token and its descendants. - - - - Creates a from an object. - - The object that will be used to create . - A with the value of the specified object. - - - - Creates a from an object using the specified . - - The object that will be used to create . - The that will be used when reading the object. - A with the value of the specified object. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the . - - The object type that the token will be deserialized to. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates an instance of the specified .NET type from the using the specified . - - The object type that the token will be deserialized to. - The that will be used when creating the object. - The new object created from the JSON value. - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - An positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Load a from a string that contains JSON. - - A that contains JSON. - A populated from the string that contains JSON. - - - - Load a from a string that contains JSON. - - A that contains JSON. - The used to load the JSON. - If this is null, default load settings will be used. - A populated from the string that contains JSON. - - - - Creates a from a . - - A positioned at the token to read into this . - The used to load the JSON. - If this is null, default load settings will be used. - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Creates a from a . - - A positioned at the token to read into this . - - A that contains the token and its descendant tokens - that were read from the reader. The runtime type of the token is determined - by the token type of the first token encountered in the reader. - - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A , or null. - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - A . - - - - Selects a using a JSONPath expression. Selects the token that matches the object path. - - - A that contains a JSONPath expression. - - The used to select tokens. - A . - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. - An of that contains the selected elements. - - - - Selects a collection of elements using a JSONPath expression. - - - A that contains a JSONPath expression. - - The used to select tokens. - An of that contains the selected elements. - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Creates a new instance of the . All child tokens are recursively cloned. - - A new instance of the . - - - - Adds an object to the annotation list of this . - - The annotation to add. - - - - Get the first annotation object of the specified type from this . - - The type of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets the first annotation object of the specified type from this . - - The of the annotation to retrieve. - The first annotation object that matches the specified type, or null if no annotation is of the specified type. - - - - Gets a collection of annotations of the specified type for this . - - The type of the annotations to retrieve. - An that contains the annotations for this . - - - - Gets a collection of annotations of the specified type for this . - - The of the annotations to retrieve. - An of that contains the annotations that match the specified type for this . - - - - Removes the annotations of the specified type from this . - - The type of annotations to remove. - - - - Removes the annotations of the specified type from this . - - The of annotations to remove. - - - - Compares tokens to determine whether they are equal. - - - - - Determines whether the specified objects are equal. - - The first object of type to compare. - The second object of type to compare. - - true if the specified objects are equal; otherwise, false. - - - - - Returns a hash code for the specified object. - - The for which a hash code is to be returned. - A hash code for the specified object. - The type of is a reference type and is null. - - - - Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. - - - - - Gets the at the reader's current position. - - - - - Initializes a new instance of the class. - - The token to read from. - - - - Initializes a new instance of the class. - - The token to read from. - The initial path of the token. It is prepended to the returned . - - - - Reads the next JSON token from the underlying . - - - true if the next token was read successfully; false if there are no more tokens to read. - - - - - Gets the path of the current JSON token. - - - - - Specifies the type of token. - - - - - No token type has been set. - - - - - A JSON object. - - - - - A JSON array. - - - - - A JSON constructor. - - - - - A JSON object property. - - - - - A comment. - - - - - An integer value. - - - - - A float value. - - - - - A string value. - - - - - A boolean value. - - - - - A null value. - - - - - An undefined value. - - - - - A date value. - - - - - A raw JSON value. - - - - - A collection of bytes value. - - - - - A Guid value. - - - - - A Uri value. - - - - - A TimeSpan value. - - - - - Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. - - - - - Gets the at the writer's current position. - - - - - Gets the token being written. - - The token being written. - - - - Initializes a new instance of the class writing to the given . - - The container being written to. - - - - Initializes a new instance of the class. - - - - - Flushes whatever is in the buffer to the underlying . - - - - - Closes this writer. - If is set to true, the JSON is auto-completed. - - - Setting to true has no additional effect, since the underlying is a type that cannot be closed. - - - - - Writes the beginning of a JSON object. - - - - - Writes the beginning of a JSON array. - - - - - Writes the start of a constructor with the given name. - - The name of the constructor. - - - - Writes the end. - - The token. - - - - Writes the property name of a name/value pair on a JSON object. - - The name of the property. - - - - Writes a value. - An error will be raised if the value cannot be written as a single JSON token. - - The value to write. - - - - Writes a null value. - - - - - Writes an undefined value. - - - - - Writes raw JSON. - - The raw JSON to write. - - - - Writes a comment /*...*/ containing the specified text. - - Text to place inside the comment. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a [] value. - - The [] value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Writes a value. - - The value to write. - - - - Represents a value in JSON (string, integer, date, etc). - - - - - Writes this token to a asynchronously. - - A into which this method will write. - The token to monitor for cancellation requests. - A collection of which will be used when writing the token. - A that represents the asynchronous write operation. - - - - Initializes a new instance of the class from another object. - - A object to copy from. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Initializes a new instance of the class with the given value. - - The value. - - - - Gets a value indicating whether this token has child tokens. - - - true if this token has child values; otherwise, false. - - - - - Creates a comment with the given value. - - The value. - A comment with the given value. - - - - Creates a string with the given value. - - The value. - A string with the given value. - - - - Creates a null value. - - A null value. - - - - Creates a undefined value. - - A undefined value. - - - - Gets the node type for this . - - The type. - - - - Gets or sets the underlying token value. - - The underlying token value. - - - - Writes this token to a . - - A into which this method will write. - A collection of s which will be used when writing the token. - - - - Indicates whether the current object is equal to another object of the same type. - - - true if the current object is equal to the parameter; otherwise, false. - - An object to compare with this object. - - - - Determines whether the specified is equal to the current . - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - - - - Returns a that represents this instance. - - - ToString() returns a non-JSON string value for tokens with a type of . - If you want the JSON for all token types then you should use . - - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format provider. - - A that represents this instance. - - - - - Returns a that represents this instance. - - The format. - The format provider. - - A that represents this instance. - - - - - Returns the responsible for binding operations performed on this object. - - The expression tree representation of the runtime value. - - The to bind this object. - - - - - Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: - Value - Meaning - Less than zero - This instance is less than . - Zero - This instance is equal to . - Greater than zero - This instance is greater than . - - - is not of the same type as this instance. - - - - - Specifies how line information is handled when loading JSON. - - - - - Ignore line information. - - - - - Load line information. - - - - - Specifies how JSON arrays are merged together. - - - - Concatenate arrays. - - - Union arrays, skipping items that already exist. - - - Replace all array items. - - - Merge array items together, matched by index. - - - - Specifies how null value properties are merged. - - - - - The content's null value properties will be ignored during merging. - - - - - The content's null value properties will be merged. - - - - - Specifies the member serialization options for the . - - - - - All public members are serialized by default. Members can be excluded using or . - This is the default member serialization mode. - - - - - Only members marked with or are serialized. - This member serialization mode can also be set by marking the class with . - - - - - All public and private fields are serialized. Members can be excluded using or . - This member serialization mode can also be set by marking the class with - and setting IgnoreSerializableAttribute on to false. - - - - - Specifies metadata property handling options for the . - - - - - Read metadata properties located at the start of a JSON object. - - - - - Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. - - - - - Do not try to read metadata properties. - - - - - Specifies missing member handling options for the . - - - - - Ignore a missing member and do not attempt to deserialize it. - - - - - Throw a when a missing member is encountered during deserialization. - - - - - Specifies null value handling options for the . - - - - - - - - - Include null values when serializing and deserializing objects. - - - - - Ignore null values when serializing and deserializing objects. - - - - - Specifies how object creation is handled by the . - - - - - Reuse existing objects, create new objects when needed. - - - - - Only reuse existing objects. - - - - - Always create new objects. - - - - - Specifies reference handling options for the . - Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement . - - - - - - - - Do not preserve references when serializing types. - - - - - Preserve references when serializing into a JSON object structure. - - - - - Preserve references when serializing into a JSON array structure. - - - - - Preserve references when serializing. - - - - - Specifies reference loop handling options for the . - - - - - Throw a when a loop is encountered. - - - - - Ignore loop references and do not serialize. - - - - - Serialize loop references. - - - - - Indicating whether a property is required. - - - - - The property is not required. The default state. - - - - - The property must be defined in JSON but can be a null value. - - - - - The property must be defined in JSON and cannot be a null value. - - - - - The property is not required but it cannot be a null value. - - - - - - Contains the JSON schema extension methods. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - true if the specified is valid; otherwise, false. - - - - - - Determines whether the is valid. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - When this method returns, contains any error messages generated while validating. - - true if the specified is valid; otherwise, false. - - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - - - - - Validates the specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - The source to test. - The schema to test with. - The validation event handler. - - - - - An in-memory representation of a JSON Schema. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the id. - - - - - Gets or sets the title. - - - - - Gets or sets whether the object is required. - - - - - Gets or sets whether the object is read-only. - - - - - Gets or sets whether the object is visible to users. - - - - - Gets or sets whether the object is transient. - - - - - Gets or sets the description of the object. - - - - - Gets or sets the types of values allowed by the object. - - The type. - - - - Gets or sets the pattern. - - The pattern. - - - - Gets or sets the minimum length. - - The minimum length. - - - - Gets or sets the maximum length. - - The maximum length. - - - - Gets or sets a number that the value should be divisible by. - - A number that the value should be divisible by. - - - - Gets or sets the minimum. - - The minimum. - - - - Gets or sets the maximum. - - The maximum. - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the minimum attribute (). - - A flag indicating whether the value can not equal the number defined by the minimum attribute (). - - - - Gets or sets a flag indicating whether the value can not equal the number defined by the maximum attribute (). - - A flag indicating whether the value can not equal the number defined by the maximum attribute (). - - - - Gets or sets the minimum number of items. - - The minimum number of items. - - - - Gets or sets the maximum number of items. - - The maximum number of items. - - - - Gets or sets the of items. - - The of items. - - - - Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . - - - true if items are validated using their array position; otherwise, false. - - - - - Gets or sets the of additional items. - - The of additional items. - - - - Gets or sets a value indicating whether additional items are allowed. - - - true if additional items are allowed; otherwise, false. - - - - - Gets or sets whether the array items must be unique. - - - - - Gets or sets the of properties. - - The of properties. - - - - Gets or sets the of additional properties. - - The of additional properties. - - - - Gets or sets the pattern properties. - - The pattern properties. - - - - Gets or sets a value indicating whether additional properties are allowed. - - - true if additional properties are allowed; otherwise, false. - - - - - Gets or sets the required property if this property is present. - - The required property if this property is present. - - - - Gets or sets the a collection of valid enum values allowed. - - A collection of valid enum values allowed. - - - - Gets or sets disallowed types. - - The disallowed types. - - - - Gets or sets the default value. - - The default value. - - - - Gets or sets the collection of that this schema extends. - - The collection of that this schema extends. - - - - Gets or sets the format. - - The format. - - - - Initializes a new instance of the class. - - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The object representing the JSON Schema. - - - - Reads a from the specified . - - The containing the JSON Schema to read. - The to use when resolving schema references. - The object representing the JSON Schema. - - - - Load a from a string that contains JSON Schema. - - A that contains JSON Schema. - A populated from the string that contains JSON Schema. - - - - Load a from a string that contains JSON Schema using the specified . - - A that contains JSON Schema. - The resolver. - A populated from the string that contains JSON Schema. - - - - Writes this schema to a . - - A into which this method will write. - - - - Writes this schema to a using the specified . - - A into which this method will write. - The resolver used. - - - - Returns a that represents the current . - - - A that represents the current . - - - - - - Returns detailed information about the schema exception. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the line number indicating where the error occurred. - - The line number indicating where the error occurred. - - - - Gets the line position indicating where the error occurred. - - The line position indicating where the error occurred. - - - - Gets the path to the JSON where the error occurred. - - The path to the JSON where the error occurred. - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class - with a specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class - with a specified error message and a reference to the inner exception that is the cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, or null if no inner exception is specified. - - - - Initializes a new instance of the class. - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - The parameter is null. - The class name is null or is zero (0). - - - - - Generates a from a specified . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets how undefined schemas are handled by the serializer. - - - - - Gets or sets the contract resolver. - - The contract resolver. - - - - Generate a from the specified type. - - The type to generate a from. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - Generate a from the specified type. - - The type to generate a from. - The used to resolve schema references. - Specify whether the generated root will be nullable. - A generated from the specified type. - - - - - Resolves from an id. - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets or sets the loaded schemas. - - The loaded schemas. - - - - Initializes a new instance of the class. - - - - - Gets a for the specified reference. - - The id. - A for the specified reference. - - - - - The value types allowed by the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - No type specified. - - - - - String type. - - - - - Float type. - - - - - Integer type. - - - - - Boolean type. - - - - - Object type. - - - - - Array type. - - - - - Null type. - - - - - Any type. - - - - - - Specifies undefined schema Id handling options for the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Do not infer a schema Id. - - - - - Use the .NET type name as the schema Id. - - - - - Use the assembly qualified .NET type name as the schema Id. - - - - - - Returns detailed information related to the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - Gets the associated with the validation error. - - The JsonSchemaException associated with the validation error. - - - - Gets the path of the JSON location where the validation error occurred. - - The path of the JSON location where the validation error occurred. - - - - Gets the text description corresponding to the validation error. - - The text description. - - - - - Represents the callback method that will handle JSON schema validation events and the . - - - JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschema for more details. - - - - - - A camel case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Resolves member mappings for a type, camel casing property names. - - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used by to resolve a for a given . - - - - - Gets a value indicating whether members are being get and set using dynamic code generation. - This value is determined by the runtime permissions available. - - - true if using dynamic code generation; otherwise, false. - - - - - Gets or sets the default members search flags. - - The default members search flags. - - - - Gets or sets a value indicating whether compiler generated members should be serialized. - - - true if serialized compiler generated members; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. - - - true if the interface will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. - - - true if the attribute will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore IsSpecified members when serializing and deserializing types. - - - true if the IsSpecified members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets a value indicating whether to ignore ShouldSerialize members when serializing and deserializing types. - - - true if the ShouldSerialize members will be ignored when serializing and deserializing types; otherwise, false. - - - - - Gets or sets the naming strategy used to resolve how property names and dictionary keys are serialized. - - The naming strategy used to resolve how property names and dictionary keys are serialized. - - - - Initializes a new instance of the class. - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Gets the serializable members for the type. - - The type to get serializable members for. - The serializable members for the type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates the constructor parameters. - - The constructor to create properties for. - The type's member properties. - Properties for the given . - - - - Creates a for the given . - - The matching member property. - The constructor parameter. - A created for the given . - - - - Resolves the default for the contract. - - Type of the object. - The contract's default . - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Creates a for the given type. - - Type of the object. - A for the given type. - - - - Determines which contract type is created for the given type. - - Type of the object. - A for the given type. - - - - Creates properties for the given . - - The type to create properties for. - /// The member serialization mode for the type. - Properties for the given . - - - - Creates the used by the serializer to get and set values from a member. - - The member. - The used by the serializer to get and set values from a member. - - - - Creates a for the given . - - The member's parent . - The member to create a for. - A created for the given . - - - - Resolves the name of the property. - - Name of the property. - Resolved name of the property. - - - - Resolves the name of the extension data. By default no changes are made to extension data names. - - Name of the extension data. - Resolved name of the extension data. - - - - Resolves the key of the dictionary. By default is used to resolve dictionary keys. - - Key of the dictionary. - Resolved key of the dictionary. - - - - Gets the resolved name of the property. - - Name of the property. - Name of the property. - - - - The default naming strategy. Property names and dictionary keys are unchanged. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - The default serialization binder used when resolving and loading classes from type names. - - - - - Initializes a new instance of the class. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - The type of the object the formatter creates a new instance of. - - - - - When overridden in a derived class, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer that writes to the application's instances. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides information surrounding an error. - - - - - Gets the error. - - The error. - - - - Gets the original object that caused the error. - - The original object that caused the error. - - - - Gets the member that caused the error. - - The member that caused the error. - - - - Gets the path of the JSON location where the error occurred. - - The path of the JSON location where the error occurred. - - - - Gets or sets a value indicating whether this is handled. - - true if handled; otherwise, false. - - - - Provides data for the Error event. - - - - - Gets the current object the error event is being raised against. - - The current object the error event is being raised against. - - - - Gets the error context. - - The error context. - - - - Initializes a new instance of the class. - - The current object. - The error context. - - - - Get and set values for a using dynamic methods. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Provides methods to get attributes. - - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Used by to resolve a for a given . - - - - - - - - - Resolves the contract for a given type. - - The type to resolve a contract for. - The contract for a given type. - - - - Used to resolve references when serializing and deserializing JSON by the . - - - - - Resolves a reference to its object. - - The serialization context. - The reference to resolve. - The object that was resolved from the reference. - - - - Gets the reference for the specified object. - - The serialization context. - The object to get a reference for. - The reference to the object. - - - - Determines whether the specified object is referenced. - - The serialization context. - The object to test for a reference. - - true if the specified object is referenced; otherwise, false. - - - - - Adds a reference to the specified object. - - The serialization context. - The reference. - The object to reference. - - - - Allows users to control class loading and mandate what class to load. - - - - - When implemented, controls the binding of a serialized object to a type. - - Specifies the name of the serialized object. - Specifies the name of the serialized object - The type of the object the formatter creates a new instance of. - - - - When implemented, controls the binding of a serialized object to a type. - - The type of the object the formatter creates a new instance of. - Specifies the name of the serialized object. - Specifies the name of the serialized object. - - - - Represents a trace writer. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - The that will be used to filter the trace messages passed to the writer. - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Provides methods to get and set values. - - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - Contract details for a used by the . - - - - - Gets the of the collection items. - - The of the collection items. - - - - Gets a value indicating whether the collection type is a multidimensional array. - - true if the collection type is a multidimensional array; otherwise, false. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the collection values. - - true if the creator has a parameter with the collection values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the default collection items . - - The converter. - - - - Gets or sets a value indicating whether the collection items preserve object references. - - true if collection items preserve object references; otherwise, false. - - - - Gets or sets the collection item reference loop handling. - - The reference loop handling. - - - - Gets or sets the collection item type name handling. - - The type name handling. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Handles serialization callback events. - - The object that raised the callback event. - The streaming context. - - - - Handles serialization error callback events. - - The object that raised the callback event. - The streaming context. - The error context. - - - - Sets extension data for an object during deserialization. - - The object to set extension data on. - The extension data key. - The extension data value. - - - - Gets extension data for an object during serialization. - - The object to set extension data on. - - - - Contract details for a used by the . - - - - - Gets the underlying type for the contract. - - The underlying type for the contract. - - - - Gets or sets the type created during deserialization. - - The type created during deserialization. - - - - Gets or sets whether this type contract is serialized as a reference. - - Whether this type contract is serialized as a reference. - - - - Gets or sets the default for this contract. - - The converter. - - - - Gets the internally resolved for the contract's type. - This converter is used as a fallback converter when no other converter is resolved. - Setting will always override this converter. - - - - - Gets or sets all methods called immediately after deserialization of the object. - - The methods called immediately after deserialization of the object. - - - - Gets or sets all methods called during deserialization of the object. - - The methods called during deserialization of the object. - - - - Gets or sets all methods called after serialization of the object graph. - - The methods called after serialization of the object graph. - - - - Gets or sets all methods called before serialization of the object. - - The methods called before serialization of the object. - - - - Gets or sets all method called when an error is thrown during the serialization of the object. - - The methods called when an error is thrown during the serialization of the object. - - - - Gets or sets the default creator method used to create the object. - - The default creator method used to create the object. - - - - Gets or sets a value indicating whether the default creator is non-public. - - true if the default object creator is non-public; otherwise, false. - - - - Contract details for a used by the . - - - - - Gets or sets the dictionary key resolver. - - The dictionary key resolver. - - - - Gets the of the dictionary keys. - - The of the dictionary keys. - - - - Gets the of the dictionary values. - - The of the dictionary values. - - - - Gets or sets the function used to create the object. When set this function will override . - - The function used to create the object. - - - - Gets a value indicating whether the creator has a parameter with the dictionary values. - - true if the creator has a parameter with the dictionary values; otherwise, false. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets the object's properties. - - The object's properties. - - - - Gets or sets the property name resolver. - - The property name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object constructor. - - The object constructor. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Gets or sets the object member serialization. - - The member object serialization. - - - - Gets or sets the missing member handling used when deserializing this object. - - The missing member handling. - - - - Gets or sets a value that indicates whether the object's properties are required. - - - A value indicating whether the object's properties are required. - - - - - Gets or sets how the object's properties with null values are handled during serialization and deserialization. - - How the object's properties with null values are handled during serialization and deserialization. - - - - Gets the object's properties. - - The object's properties. - - - - Gets a collection of instances that define the parameters used with . - - - - - Gets or sets the function used to create the object. When set this function will override . - This function is called with a collection of arguments which are defined by the collection. - - The function used to create the object. - - - - Gets or sets the extension data setter. - - - - - Gets or sets the extension data getter. - - - - - Gets or sets the extension data value type. - - - - - Gets or sets the extension data name resolver. - - The extension data name resolver. - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Maps a JSON property to a .NET member or constructor parameter. - - - - - Gets or sets the name of the property. - - The name of the property. - - - - Gets or sets the type that declared this property. - - The type that declared this property. - - - - Gets or sets the order of serialization of a member. - - The numeric order of serialization. - - - - Gets or sets the name of the underlying member or parameter. - - The name of the underlying member or parameter. - - - - Gets the that will get and set the during serialization. - - The that will get and set the during serialization. - - - - Gets or sets the for this property. - - The for this property. - - - - Gets or sets the type of the property. - - The type of the property. - - - - Gets or sets the for the property. - If set this converter takes precedence over the contract converter for the property type. - - The converter. - - - - Gets or sets the member converter. - - The member converter. - - - - Gets or sets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets or sets a value indicating whether this is readable. - - true if readable; otherwise, false. - - - - Gets or sets a value indicating whether this is writable. - - true if writable; otherwise, false. - - - - Gets or sets a value indicating whether this has a member attribute. - - true if has a member attribute; otherwise, false. - - - - Gets the default value. - - The default value. - - - - Gets or sets a value indicating whether this is required. - - A value indicating whether this is required. - - - - Gets a value indicating whether has a value specified. - - - - - Gets or sets a value indicating whether this property preserves object references. - - - true if this instance is reference; otherwise, false. - - - - - Gets or sets the property null value handling. - - The null value handling. - - - - Gets or sets the property default value handling. - - The default value handling. - - - - Gets or sets the property reference loop handling. - - The reference loop handling. - - - - Gets or sets the property object creation handling. - - The object creation handling. - - - - Gets or sets or sets the type name handling. - - The type name handling. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets a predicate used to determine whether the property should be deserialized. - - A predicate used to determine whether the property should be deserialized. - - - - Gets or sets a predicate used to determine whether the property should be serialized. - - A predicate used to determine whether the property should be serialized. - - - - Gets or sets an action used to set whether the property has been deserialized. - - An action used to set whether the property has been deserialized. - - - - Returns a that represents this instance. - - - A that represents this instance. - - - - - Gets or sets the converter used when serializing the property's collection items. - - The collection's items converter. - - - - Gets or sets whether this property's collection items are serialized as a reference. - - Whether this property's collection items are serialized as a reference. - - - - Gets or sets the type name handling used when serializing the property's collection items. - - The collection's items type name handling. - - - - Gets or sets the reference loop handling used when serializing the property's collection items. - - The collection's items reference loop handling. - - - - A collection of objects. - - - - - Initializes a new instance of the class. - - The type. - - - - When implemented in a derived class, extracts the key from the specified element. - - The element from which to extract the key. - The key for the specified element. - - - - Adds a object. - - The property to add to the collection. - - - - Gets the closest matching object. - First attempts to get an exact case match of and then - a case insensitive match. - - Name of the property. - A matching property if found. - - - - Gets a property by property name. - - The name of the property to get. - Type property name string comparison. - A matching property if found. - - - - Contract details for a used by the . - - - - - Initializes a new instance of the class. - - The underlying type for the contract. - - - - Lookup and create an instance of the type described by the argument. - - The type to create. - Optional arguments to pass to an initializing constructor of the JsonConverter. - If null, the default constructor is used. - - - - A kebab case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Represents a trace writer that writes to memory. When the trace message limit is - reached then old trace messages will be removed as new messages are added. - - - - - Gets the that will be used to filter the trace messages passed to the writer. - For example a filter level of will exclude messages and include , - and messages. - - - The that will be used to filter the trace messages passed to the writer. - - - - - Initializes a new instance of the class. - - - - - Writes the specified trace level, message and optional exception. - - The at which to write this trace. - The trace message. - The trace exception. This parameter is optional. - - - - Returns an enumeration of the most recent trace messages. - - An enumeration of the most recent trace messages. - - - - Returns a of the most recent trace messages. - - - A of the most recent trace messages. - - - - - A base class for resolving how property names and dictionary keys are serialized. - - - - - A flag indicating whether dictionary keys should be processed. - Defaults to false. - - - - - A flag indicating whether extension data names should be processed. - Defaults to false. - - - - - A flag indicating whether explicitly specified property names, - e.g. a property name customized with a , should be processed. - Defaults to false. - - - - - Gets the serialized name for a given property name. - - The initial property name. - A flag indicating whether the property has had a name explicitly specified. - The serialized property name. - - - - Gets the serialized name for a given extension data name. - - The initial extension data name. - The serialized extension data name. - - - - Gets the serialized key for a given dictionary key. - - The initial dictionary key. - The serialized dictionary key. - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Hash code calculation - - - - - - Object equality implementation - - - - - - - Compare to another NamingStrategy - - - - - - - Represents a method that constructs an object. - - The object type to create. - - - - When applied to a method, specifies that the method is called when an error occurs serializing an object. - - - - - Provides methods to get attributes from a , , or . - - - - - Initializes a new instance of the class. - - The instance to get attributes for. This parameter should be a , , or . - - - - Returns a collection of all of the attributes, or an empty collection if there are no attributes. - - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. - - The type of the attributes. - When true, look up the hierarchy chain for the inherited custom attribute. - A collection of s, or an empty collection. - - - - Get and set values for a using reflection. - - - - - Initializes a new instance of the class. - - The member info. - - - - Sets the value. - - The target to set the value on. - The value to set on the target. - - - - Gets the value. - - The target to get the value from. - The value. - - - - A snake case naming strategy. - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - - - Initializes a new instance of the class. - - - A flag indicating whether dictionary keys should be processed. - - - A flag indicating whether explicitly specified property names should be processed, - e.g. a property name customized with a . - - - A flag indicating whether extension data names should be processed. - - - - - Initializes a new instance of the class. - - - - - Resolves the specified property name. - - The property name to resolve. - The resolved property name. - - - - Specifies how strings are escaped when writing JSON text. - - - - - Only control characters (e.g. newline) are escaped. - - - - - All non-ASCII and control characters (e.g. newline) are escaped. - - - - - HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. - - - - - Indicates the method that will be used during deserialization for locating and loading assemblies. - - - - - In simple mode, the assembly used during deserialization need not match exactly the assembly used during serialization. Specifically, the version numbers need not match as the LoadWithPartialName method of the class is used to load the assembly. - - - - - In full mode, the assembly used during deserialization must match exactly the assembly used during serialization. The Load method of the class is used to load the assembly. - - - - - Specifies type name handling options for the . - - - should be used with caution when your application deserializes JSON from an external source. - Incoming types should be validated with a custom - when deserializing with a value other than . - - - - - Do not include the .NET type name when serializing types. - - - - - Include the .NET type name when serializing into a JSON object structure. - - - - - Include the .NET type name when serializing into a JSON array structure. - - - - - Always include the .NET type name when serializing. - - - - - Include the .NET type name when the type of the object being serialized is not the same as its declared type. - Note that this doesn't include the root serialized object by default. To include the root object's type name in JSON - you must specify a root type object with - or . - - - - - Determines whether the collection is null or empty. - - The collection. - - true if the collection is null or empty; otherwise, false. - - - - - Adds the elements of the specified collection to the specified generic . - - The list to add to. - The collection of elements to add. - - - - Converts the value to the specified type. If the value is unable to be converted, the - value is checked whether it assignable to the specified type. - - The value to convert. - The culture to use when converting. - The type to convert or cast the value to. - - The converted type. If conversion was unsuccessful, the initial value - is returned if assignable to the target type. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic that returns a result - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Helper method for generating a MetaObject which calls a - specific method on Dynamic, but uses one of the arguments for - the result. - - - - - Returns a Restrictions object which includes our current restrictions merged - with a restriction limiting our type - - - - - Helper class for serializing immutable collections. - Note that this is used by all builds, even those that don't support immutable collections, in case the DLL is GACed - https://github.com/JamesNK/Newtonsoft.Json/issues/652 - - - - - Gets the type of the typed collection's items. - - The type. - The type of the typed collection's items. - - - - Gets the member's underlying type. - - The member. - The underlying type of the member. - - - - Determines whether the property is an indexed property. - - The property. - - true if the property is an indexed property; otherwise, false. - - - - - Gets the member's value on the object. - - The member. - The target object. - The member's value on the object. - - - - Sets the member's value on the target object. - - The member. - The target. - The value. - - - - Determines whether the specified MemberInfo can be read. - - The MemberInfo to determine whether can be read. - /// if set to true then allow the member to be gotten non-publicly. - - true if the specified MemberInfo can be read; otherwise, false. - - - - - Determines whether the specified MemberInfo can be set. - - The MemberInfo to determine whether can be set. - if set to true then allow the member to be set non-publicly. - if set to true then allow the member to be set if read-only. - - true if the specified MemberInfo can be set; otherwise, false. - - - - - Builds a string. Unlike this class lets you reuse its internal buffer. - - - - - Determines whether the string is all white space. Empty string will return false. - - The string to test whether it is all white space. - - true if the string is all white space; otherwise, false. - - - - - Specifies the state of the . - - - - - An exception has been thrown, which has left the in an invalid state. - You may call the method to put the in the Closed state. - Any other method calls result in an being thrown. - - - - - The method has been called. - - - - - An object is being written. - - - - - An array is being written. - - - - - A constructor is being written. - - - - - A property is being written. - - - - - A write method has not been called. - - - - Specifies that an output will not be null even if the corresponding type allows it. - - - Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. - - - Initializes the attribute with the specified return value condition. - - The return value condition. If the method returns this value, the associated parameter will not be null. - - - - Gets the return value condition. - - - Specifies that an output may be null even if the corresponding type disallows it. - - - Specifies that null is allowed as an input even if the corresponding type disallows it. - - - - Specifies that the method will not return if the associated Boolean parameter is passed the specified value. - - - - - Initializes a new instance of the class. - - - The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to - the associated parameter matches this value. - - - - Gets the condition parameter value. - - - diff --git a/AUTS_UpdateService/bin/Debug/SharpCompress.dll b/AUTS_UpdateService/bin/Debug/SharpCompress.dll deleted file mode 100644 index a4322fa..0000000 Binary files a/AUTS_UpdateService/bin/Debug/SharpCompress.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/System.Buffers.dll b/AUTS_UpdateService/bin/Debug/System.Buffers.dll deleted file mode 100644 index 9f5d1e3..0000000 Binary files a/AUTS_UpdateService/bin/Debug/System.Buffers.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/System.Buffers.xml b/AUTS_UpdateService/bin/Debug/System.Buffers.xml deleted file mode 100644 index fe1f651..0000000 --- a/AUTS_UpdateService/bin/Debug/System.Buffers.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - System.Buffers - - - - - Provides a resource pool that enables reusing instances of type . - - - - Renting and returning buffers with an can increase performance - in situations where arrays are created and destroyed frequently, resulting in significant - memory pressure on the garbage collector. - - - This class is thread-safe. All members may be used by multiple threads concurrently. - - - - - The lazily-initialized shared pool instance. - - - - Retrieves a shared instance. - - - The shared pool provides a default implementation of - that's intended for general applicability. It maintains arrays of multiple sizes, and - may hand back a larger array than was actually requested, but will never hand back a smaller - array than was requested. Renting a buffer from it with will result in an - existing buffer being taken from the pool if an appropriate buffer is available or in a new - buffer being allocated if one is not available. - - - - Ensures that has been initialized to a pool and returns it. - - - - Creates a new instance using default configuration options. - - A new instance. - - - - Creates a new instance using custom configuration options. - - The maximum length of array instances that may be stored in the pool. - - The maximum number of array instances that may be stored in each bucket in the pool. The pool - groups arrays of similar lengths into buckets for faster access. - - A new instance with the specified configuration options. - - The created pool will group arrays into buckets, with no more than - in each bucket and with those arrays not exceeding in length. - - - - - Retrieves a buffer that is at least the requested length. - - The minimum length of the array needed. - - An that is at least in length. - - - This buffer is loaned to the caller and should be returned to the same pool via - so that it may be reused in subsequent usage of . - It is not a fatal error to not return a rented buffer, but failure to do so may lead to - decreased application performance, as the pool may need to create a new buffer to replace - the one lost. - - - - - Returns to the pool an array that was previously obtained via on the same - instance. - - - The buffer previously obtained from to return to the pool. - - - If true and if the pool will store the buffer to enable subsequent reuse, - will clear of its contents so that a subsequent consumer via - will not see the previous consumer's content. If false or if the pool will release the buffer, - the array's contents are left unchanged. - - - Once a buffer has been returned to the pool, the caller gives up all ownership of the buffer - and must not use it. The reference returned from a given call to must only be - returned via once. The default - may hold onto the returned buffer in order to rent it again, or it may release the returned buffer - if it's determined that the pool already has enough buffers stored. - - - - The reason for a BufferAllocated event. - - - The pool is allocating a buffer to be pooled in a bucket. - - - The requested buffer size was too large to be pooled. - - - The pool has already allocated for pooling as many buffers of a particular size as it's allowed. - - - - Event for when a buffer is rented. This is invoked once for every successful call to Rent, - regardless of whether a buffer is allocated or a buffer is taken from the pool. In a - perfect situation where all rented buffers are returned, we expect to see the number - of BufferRented events exactly match the number of BuferReturned events, with the number - of BufferAllocated events being less than or equal to those numbers (ideally significantly - less than). - - - - - Event for when a buffer is allocated by the pool. In an ideal situation, the number - of BufferAllocated events is significantly smaller than the number of BufferRented and - BufferReturned events. - - - - - Event raised when a buffer is returned to the pool. This event is raised regardless of whether - the returned buffer is stored or dropped. In an ideal situation, the number of BufferReturned - events exactly matches the number of BufferRented events. - - - - The default maximum length of each array in the pool (2^20). - - - The default maximum number of arrays per bucket that are available for rent. - - - Lazily-allocated empty array used when arrays of length 0 are requested. - - - Gets an ID for the pool to use with events. - - - Provides a thread-safe bucket containing buffers that can be Rent'd and Return'd. - - - - Creates the pool with numberOfBuffers arrays where each buffer is of bufferLength length. - - - - Gets an ID for the bucket to use with events. - - - Takes an array from the bucket. If the bucket is empty, returns null. - - - - Attempts to return the buffer to the bucket. If successful, the buffer will be stored - in the bucket and true will be returned; otherwise, the buffer won't be stored, and false - will be returned. - - - - The buffer is not associated with this pool and may not be returned to it. - - - diff --git a/AUTS_UpdateService/bin/Debug/System.Data.SQLite.dll b/AUTS_UpdateService/bin/Debug/System.Data.SQLite.dll deleted file mode 100644 index 4f5314c..0000000 Binary files a/AUTS_UpdateService/bin/Debug/System.Data.SQLite.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/System.Memory.dll b/AUTS_UpdateService/bin/Debug/System.Memory.dll deleted file mode 100644 index 4617199..0000000 Binary files a/AUTS_UpdateService/bin/Debug/System.Memory.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/System.Memory.xml b/AUTS_UpdateService/bin/Debug/System.Memory.xml deleted file mode 100644 index 4d12fd7..0000000 --- a/AUTS_UpdateService/bin/Debug/System.Memory.xml +++ /dev/null @@ -1,355 +0,0 @@ - - - System.Memory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_UpdateService/bin/Debug/System.Numerics.Vectors.dll b/AUTS_UpdateService/bin/Debug/System.Numerics.Vectors.dll deleted file mode 100644 index 0865972..0000000 Binary files a/AUTS_UpdateService/bin/Debug/System.Numerics.Vectors.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/System.Numerics.Vectors.xml b/AUTS_UpdateService/bin/Debug/System.Numerics.Vectors.xml deleted file mode 100644 index da34d39..0000000 --- a/AUTS_UpdateService/bin/Debug/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2621 +0,0 @@ - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is &quot;up&quot; from the camera&#39;s point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. - -or- - fieldOfView is greater than or equal to . - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. - -or- - farPlaneDistance is less than or equal to zero. - -or- - nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane&#39;s normal vector. - The plane&#39;s distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane&#39;s normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. - -or- - The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. - -or- - index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The one&#39;s complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector&#39;s elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one&#39;s complement of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector&#39;s elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector&#39;s elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. - -or- - index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false. If obj is null, the method returns false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector&#39;s length. - - - Returns the length of the vector squared. - The vector&#39;s length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector&#39;s elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/AUTS_UpdateService/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll b/AUTS_UpdateService/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll deleted file mode 100644 index c5ba4e4..0000000 Binary files a/AUTS_UpdateService/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml b/AUTS_UpdateService/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml deleted file mode 100644 index 9d79492..0000000 --- a/AUTS_UpdateService/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml +++ /dev/null @@ -1,291 +0,0 @@ - - - - System.Runtime.CompilerServices.Unsafe - - - - Contains generic, low-level functionality for manipulating pointers. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of offset to pointer. - - - Adds an element offset to the given void pointer. - The void pointer to add the offset to. - The offset to add. - The type of void pointer. - A new void pointer that reflects the addition of offset to the specified pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Adds a byte offset to the given reference. - The reference to add the offset to. - The offset to add. - The type of reference. - A new reference that reflects the addition of byte offset to pointer. - - - Determines whether the specified references point to the same location. - The first reference to compare. - The second reference to compare. - The type of reference. - - if and point to the same location; otherwise, . - - - Casts the given object to the specified type. - The object to cast. - The type which the object will be cast to. - The original object, casted to the given type. - - - Reinterprets the given reference as a reference to a value of type . - The reference to reinterpret. - The type of reference to reinterpret. - The desired type of the reference. - A reference to a value of type . - - - Returns a pointer to the given by-ref parameter. - The object whose pointer is obtained. - The type of object. - A pointer to the given value. - - - Reinterprets the given read-only reference as a reference. - The read-only reference to reinterpret. - The type of reference. - A reference to a value of type . - - - Reinterprets the given location as a reference to a value of type . - The location of the value to reference. - The type of the interpreted location. - A reference to a value of type . - - - Determines the byte offset from origin to target from the given references. - The reference to origin. - The reference to target. - The type of reference. - Byte offset from origin to target i.e. - . - - - Copies a value of type to the given location. - The location to copy to. - A pointer to the value to copy. - The type of value to copy. - - - Copies a value of type to the given location. - The location to copy to. - A reference to the value to copy. - The type of value to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. - The destination address to copy to. - The source address to copy from. - The number of bytes to copy. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. - The address of the start of the memory block to initialize. - The value to initialize the block to. - The number of bytes to initialize. - - - Returns a value that indicates whether a specified reference is greater than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is greater than ; otherwise, . - - - Returns a value that indicates whether a specified reference is less than another specified reference. - The first value to compare. - The second value to compare. - The type of the reference. - - if is less than ; otherwise, . - - - Determines if a given reference to a value of type is a null reference. - The reference to check. - The type of the reference. - - if is a null reference; otherwise, . - - - Returns a reference to a value of type that is a null reference. - The type of the reference. - A reference to a value of type that is a null reference. - - - Reads a value of type from the given location. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. - The location to read from. - The type to read. - An object of type read from the given location. - - - Returns the size of an object of the given type parameter. - The type of object whose size is retrieved. - The size of an object of type . - - - Bypasses definite assignment rules for a given value. - The uninitialized object. - The type of the uninitialized object. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of offset from pointer. - - - Subtracts an element offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subraction of offset from pointer. - - - Subtracts an element offset from the given void pointer. - The void pointer to subtract the offset from. - The offset to subtract. - The type of the void pointer. - A new void pointer that reflects the subtraction of offset from the specified pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subtraction of byte offset from pointer. - - - Subtracts a byte offset from the given reference. - The reference to subtract the offset from. - The offset to subtract. - The type of reference. - A new reference that reflects the subraction of byte offset from pointer. - - - Returns a to a boxed value. - The value to unbox. - The type to be unboxed. - - is , and is a non-nullable value type. - - is not a boxed value type. - --or- - - is not a boxed . - - cannot be found. - A to the boxed value . - - - Writes a value of type to the given location. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. - The location to write to. - The value to write. - The type of value to write. - - - \ No newline at end of file diff --git a/AUTS_UpdateService/bin/Debug/TeeChart.dll b/AUTS_UpdateService/bin/Debug/TeeChart.dll deleted file mode 100644 index f6e9728..0000000 Binary files a/AUTS_UpdateService/bin/Debug/TeeChart.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/UTS_Core.dll b/AUTS_UpdateService/bin/Debug/UTS_Core.dll deleted file mode 100644 index 4700a98..0000000 Binary files a/AUTS_UpdateService/bin/Debug/UTS_Core.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/UTS_Core.dll.config b/AUTS_UpdateService/bin/Debug/UTS_Core.dll.config deleted file mode 100644 index 9e4ecc2..0000000 --- a/AUTS_UpdateService/bin/Debug/UTS_Core.dll.config +++ /dev/null @@ -1,68 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - False - - - False - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AUTS_UpdateService/bin/Debug/UTS_Core.pdb b/AUTS_UpdateService/bin/Debug/UTS_Core.pdb deleted file mode 100644 index ebf911a..0000000 Binary files a/AUTS_UpdateService/bin/Debug/UTS_Core.pdb and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/UTS_Core.xml b/AUTS_UpdateService/bin/Debug/UTS_Core.xml deleted file mode 100644 index 7aa1e04..0000000 --- a/AUTS_UpdateService/bin/Debug/UTS_Core.xml +++ /dev/null @@ -1,9737 +0,0 @@ - - - - -UTS_Core - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 压缩文件夹到zip文件 - - 需要压缩的文件夹 - 压缩后的zip文件路径 - - - - 压缩文件至Zip文件 - - 被压缩的文件路径 - 压缩文件路径 - - - - 压缩指定文件夹至tar格式文件,不会生成根文件目录 - - 压缩文件名 - 源文件夹 - - - - 压缩指定文件列表到tar格式文件 - - 文件列表 - 压缩文件路径 - 压缩文件所在文件夹路径 - - - - 填充文件表,供压缩文件使用 - - 文件列表 - 需要压缩的文件夹 - 文件前缀 - - - - 解压Tar格式文件夹 - - 文件路径 - 目标文件夹 - - - - Contains the schema of a single DB column. - - - - - 清空数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键) - 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据 - - 表名 - 基础表名 - - - - - 复制基础表数据到新表中 - - 表名 - 基础表名 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - Contains the entire database schema - - - - - 判断列名 - - - - - - 判断条件 - - - - - - 判断值 - - - - - - 当前条件与上一个条件的逻辑关系 - - - - - - 将当前条件转换为字符串,不支持将条件逻辑关系同时转换 - - - - - - 查询条件的表名 - - - - - - 当IsSearchAllCols = False时,查询返回列名集合 - - - - - - 查询的条件 - - - - - - 排序方式 - - - - - - 但需要排序时排序列名 - - - - - - 从返回结果提取指定行的内容 - - - - - - Describes a single view schema - - - - - Contains the view name - - - - - Contains the view SQL statement - - - - - 数据库语句助手 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句 - 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用 - - - - - - 查询指定数据表符合条件的所有数据 - - 指定表名 - 查询条件, - - - - - 查询表符合条件的所有指定列的数据 - - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询表符合条件的所有指定列的数据 - - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据表名 - 查询条件 - - - - - 查询指定数据表的信息 - - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量 - - 表名 - - - - - 数据表插入一行数据 - - 表名 - 列名字符串 - 列值字符串 - - - - - 数据表插入一行数据 - - 表名 - 列名与列值键值对 - - - - - 数据表插入一行,通过命令参数方式执行时使用 - - - - - - - - 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 表名 - 字段列表 - - - - - 更新指定表数据 - - 指定表名 - 更新字符串 - - - - - - 更新指定表数据 - - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 指定数据表增加一列数据 - - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 数据表删除一列数据 - - 表名 - 需要删除的列名,仅一列 - - - - - 删除指定表多行数据 - - 表名 - 条件 - - - - - 创建数据表 - - 表名 - 创建表的列信息字符串 - - - - - 创建数据表,如果存在则不创建 - - 表名 - 创建表的列信息字符串 - - - - - 清空数据表,表依旧存在 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的去重数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据库名 - 数据表名 - 查询条件 - - - - - 查询指定数据库中指定数据表符合条件的所有数据 - - - 数据库名 - 数据表名 - 查询条件(可选) - - - - - 查询指定数据库中指定数据表的信息 - - 数据库名 - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量 - - 数据库名 - 表名 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名字符串 - 列值字符串 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名与列值键值对 - - - - - 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 数据库名 - - 需要插入列名的集合 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新字符串 - - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 数据库名 - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 指定数据库中指定数据表增加一列数据 - - 数据库名 - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 指定数据库中数据表删除一列数据 - - 数据库名 - 表名 - 需要删除的列名,仅一列 - - - - - 指定数据库中指定表删除多行数据 - - 数据库名 - 表名 - 条件 - - - - - 指定数据库中创建数据表 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 指定数据库中创建数据表,如果存在则不创建 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 清空指定数据库中数据表,表依旧存在 - - 数据库名 - 数据表名 - - - - - 删除指定数据库中数据表 - - 数据库名 - 数据表名 - - - - - 数据库通用命令执行器 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - - - - 数据库类型,目前支持Mysql与Sqlite - - - - - 打开数据库连接 - - - - - - 关闭数据库连接 - - - - - 创建当前连接的命令执行句柄 - - - - - - 运行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 开启事务 - - - - - - 提交事务 - - - - - 回滚事务 - - - - - 创建数据参数 - - 参数数据类型 - 参数名称 - 参数值 - - - - - 添加数据参数 - - - - - - - - - 清空数据 - - - - - 回收资源 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 是否为唯一值 - - - - - - 查询指定数据表的信息 - - - - - - - 1 byte,小整数值 - - - - - 2 bytes,大整数值 - - - - - 3 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 8 bytes,极大整数值 - - - - - 4 bytes,单精度浮点数值 - - - - - 8 bytes,双精度浮点数值 - - - - - 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值 - - - - - 3 bytes,日期值,YYYY-MM-DD - - - - - 3 bytes,时间值或持续时间,HH:MM:SS - - - - - 1 bytes,年份值,YYYY - - - - - 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS - - - - - 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS - - - - - 0-255 bytes,定长字符串 - - - - - 0-65535 bytes,变长字符串 - - - - - 0-255 bytes,不超过 255 个字符的二进制字符串 - - - - - 0-255 bytes,短文本字符串 - - - - - 0-65 535 bytes,二进制形式的长文本数据 - - - - - 0-65 535 bytes,长文本数据 - - - - - 0-16 777 215 bytes,二进制形式的中等长度文本数据 - - - - - 0-16 777 215 bytes,中等长度文本数据 - - - - - 0-4 294 967 295 bytes,二进制形式的极大文本数据 - - - - - 0-4 294 967 295 bytes,极大文本数据 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 数据类型是否带符号 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 应用程序日志 - - - - 日志文件所在父文件夹路径 - - - 日志文件名前缀 - - - 日志文件所在路径 - - - - 保存日志的文件夹完整路径 - - - - - 日志文件前缀 - - - - - 写入错误信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入警告信息记录日志 - - - - - - 写入错误信息记录日志 - - - - - - 写入数据库信息记录日志 - - - - - - 将信息入到日志 - - 日志类型 - 日志内容 - - - - 写日志 - - - - - 日志类型 - - - - 调试信息 - - - 系统运行信息 - - - 警告信息 - - - 错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息 - - - 致命信息 - - - - 考虑修改为自定义控件 - - - - - 是否在添加内容时先挂起布局 - - - - - - 是否添加记录到控件 - - - - - - 控件记录最大行数 - - - - - - 需要被添加数据记录的控件句柄 - - - - - - 清空内容 - - - - - 显示所有数据,优先度最高 - - - - - - 是否显示系统信息 - - - - - - 是否显示串口信息 - - - - - - 是否显示数据库信息 - - - - - - 是否显示网络信息 - - - - - - 是否显示Ftp信息 - - - - - - 显示信息的集合,对应数据位为1则打印,为0不打印 - - - - - - 是否添加时间前缀 - - - - - - 是否显示与上包显示的间隔 - - - - - - 打印调试信息 - - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印的信息 - - - - 打印调试信息 - - 打印信息类型 - 需要打印信息的提示前缀 - 需要打印的信息 - - - - 枚举扩展类 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 获取当前枚举所有描述特性值,未填的枚举采用枚举名 - - 枚举类型 - - - - - 字符算数表达式求和 - - - - 精度 - - - - 替换占位符 - - 字符串表达式 - - - - - 替换表达式式中的十六进制占位符为实际内容,例如替换B4为buf中的第4位即buf(4)的值 - - - - - - - - 获取表达式转换后的结果是否为真,0、false、空字符为假,1,true为真, 其余为通过计算不为0判断真假 - - - - - - - 获取double类型运算式字符串后缀表达式 - - 字符串表达式 - - - - - 获取小数类型运算结果 - - 浮点型数1 - 浮点型数2 - 运算符 - - - - - 获取符号的优先级 - - 运算符号 - - - - - 校验字符合法性,0为数字,1为运算符,-1为未使用的运算符 - - 需要校验的字符 - - - - - 校验运算式字符串合法性(todo:待进一步完善检测逻辑) - - 需要校验的字符串 - - - - - 返回表达式的值 'Momo 2022-11-10 增加 、Momo 2023-12-15 错误时抛出错误而不是弹窗 - - - - - - 将图像格式转换为二进制数组,以jpeg的格式 - - - - - - - 将图像格式转换为二进制数组 - - 图像 - 图像格式 - - - - - 将二进制数组转换为图像格式 - - - - - - - 将图片变更为String格式,默认PNG格式保存 - - - - - - - 将图片变更为String格式 - - - 保存格式 - - - - - 将图片string还原为图片格式 - - - - - - - 压缩图像到指定的高度与宽度 - - 图像 - 指定的宽度 - 指定的高度 - - - - - 压缩图像,根据宽度比 - - 图像 - 指定的宽度 - - - - - 压缩图像,根据高度比 - - 图像 - 指定的高度 - - - - - 按指定比例有损的压缩图像 - - - - - - - - - 获取图片的代码器信息 - - - - - - 截取整个电脑屏幕 - - - - - - 截取整个电脑屏幕,并指定文件路径下生成jpg格式文件。 - - - - 服务器密钥 - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 获取字符串的MD5值 - - 需要求MD5的原文字符串 - - - - - 获取文件的MD5值 - - 文件路径 - - - - - 将类对象序列化为xml文件 - - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - - 运行一条需要记录在撤销栈的命令 - - - - - 重做命令 - - - - - 撤销命令 - - - - - 运行命令,并将命令添加至撤销堆栈 - - - - - - 将命令添加至撤销堆栈 - - - - - 清空撤销命令堆栈 - - - - - 清空重做命令堆栈 - - - - - 清空撤销与重做命令堆栈 - - - - - 执行撤销命令 - - - - - 执行重做命令 - - - - - 测试数据入库类 - - - - - 是否能够连接远程网络 - - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - 项目索引 - 工艺站索引 - - - - - 创建本地测试记录表 - 由于同步数据不会下载测试记录表,所以本地测试记录表需要手动创建 - - 测试记录表名 - - - - 获取指定表中未存在的数据列集合 - - 数据库执行器 - 需要查询的数据库名 - 需要查询的数据表名 - 需要查询的字段名集合 - - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 检测测试记录字段名是否存在远端数据库,如果不存在则新增,存在则检测字段长度是否需要加长 - - 数据库执行器 - 数据库名 - 数据表名 - 测试记录字段集合 - - - - 在指定数据表中添加指定字段集合 - - 数据库执行器 - 需要查询的数据表名 - 添加字段的键值对,键为字段名,值为列的修饰 - 是否将执行命令保存到缓存表中 - - - - 过滤数据库名,当前sqlite数据库不需要指定库名 - - - - - - - - 保存执行语句到缓存表中 - - 数据库执行器 - Sql语句 - - - - 保存执行语句到缓存表中 - - Sql语句 - - - - 查询对应产品名的对应产品索引,指定执行器方式 - - - - - - - - - 根据判断条件获取数据库是否存在数据,若存在则更新该数据,不存在则插入一条数据 - - 数据库名,账号操作多库时必填 - 数据表名 - 需要更新或插入的数据 - 判断条件,如 `Sn` = '1001' - - - - 获取匹配的用户信息 - - 用户账号 - 用户密码 - - - - - 保存指定字段得测试记录至指定表格中。 - 直接执行保存操作,未检测表格是否存在。 - 保存失败则会抛出异常。 - - 数据表名 - 字段内容 - - - - 新增SN至云端总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - - - - 新增SN至本地总表,仅针对产品条码生成方式为测试录入的类型 - - 数据库执行器 - 数据库名 - 站位信息 - 测试结果 - 是否将结果保存至本地缓存表 - - - - 更新Sn总表内容至远端数据库 - - DB执行器 - 数据库名 - 当前站位信息 - 当前测试结果 - - - - 更新本地SN总表的测试记录(用于处理组播写入Sn总表操作) - - 测试条码 - 对应总表站位顺序 - 测试时间 - 测试结果 - A1站对应条码 - - - - 更新远程订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - - - - 更新本地订单表订单状态 - - 数据库句柄 - 数据库名 - 站位信息 - 测试结果 - 是否将执行命令保存到缓存表中 - - - - 更新本地数据库测试记录,若存在相同条码号的记录则删除后添加 - - - - - - - - - - 更新本地数据库测试记录 - - - - - - - - - - 保存测试记录至云端数据库 - - - - - - - - - - 保存唯一测试日志至云端数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存测试记录至本地数据库 - - - - - - - - - - 保存唯一测试记录至本地数据库,若存在相同条码号的记录则覆盖 - - - - - - - - - - 保存唯一测试记录至数据库,若存在相同条码号的记录则覆盖 - - - - - - - - 保存测试记录至数据库。 - - - - - - - - 更新组装站所有条码中与主条码产品相同的条码的测试信息(除主条码) - - - - - - - - 添加指定字段到测试记录表中 - - 测试记录表明 - 字段键值对,键为字段名,值为字段描述 - - - - 从数据表中查询对应客户订单号的内部订单信息 - - 客户订单索引 - - - - - 从数据表中查询对应客户订单号的客户订单信息 - - 客户订单索引 - - - - - 通过项目(产品)索引与条码查询客户订单号 - - - - - - - - 查询所有MO的名称与索引,优先云端,其次本地 - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询对应条码的对应产品索引,本地查询方式 - - - - - - - 查询所有的错误代码,返回数据表 - - - - - - 查询所有的产品类相关,返回数据表 - - - - - - 获取当前的测试记录数据表 - - 项目索引 - 站位索引 - - - - - 获取当前的条码指定站位的测试记录数据 - - 项目索引 - 站位索引 - - - - - 从远程条码总表中获取条码信息 - - - - - - - 从本地条码总表中获取条码信息 - - - - - - - 更新数据库服务表中的信息 - - 服务索引 - 更新字段值及内容 - - - - 更新缓存 - - - - - - - 生产流程签名表,待删除 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 流程签名 - - - - - Sn关联信息表 - - - - - 索引 - - - - - 项目唯一标识 - - - - - 产品序号唯一标识 - - - - - 录入时间 - - - - - 更新时间,用于同步下载 - - - - - 建表语句 - - 建表语句 - - - - 用户操作记录总表 - - - - - 操作者 - - - - - 操作时间 - - - - - 操作内容说明 - - - - - 建表语句 - - 建表语句 - - - - 内部订单索引 - - - - - 订单ID - - - - - 内部单号 - - - - - 订单所属公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 创建时间 - - - - - 修改日期 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 订单状态 - - - - - 交货时间 - - - - - 适用站位 - - - - - 条码范围 - - - - - 建表语句 - - 建表语句 - - - - 客户订单表 - - - - - 订单索引 - - - - - 公司索引 - - - - - 订单生产产品索引 - - - - - 订单号 - - - - - 生产数量 - - - - - 交货日期 - - - - - 订单生成日期 - - - - - 修改日期 - - - - - 成本单价 - - - - - 销售单价 - - - - - 订单状态 - - - - - 建表语句 - - 建表语句 - - - - 产线索引 - - - - - 产线名称 - - - - - 产线描述 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 生产计划索引 - - - - - 订单索引 - - - - - 内部订单 - - - - - 站位索引 - - - - - 产线索引 - - - - - 生产时间 - - - - - 修改日期 - - - - - 已完成产量 - - - - - 目标产量 - - - - - 累计目标产量 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 项目总表 - - - - - 项目唯一标识 - - - - - 项目类型索引 - - - - - 项目名称 - - - - - 项目描述 - - - - - 创建人 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 预览图 - - - - - 预览图 - - - - - 单价 - - - - - 单价单位 - - - - - 当前项目是否有效 - - - - - 最后有效日期 - - - - - 录入条码总表类型,0无订单,1有订单 - - - - - 建表语句 - - 建表语句 - - - - 产品类型 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 不良代码类型表 - - - - - 索引 - - - - - 所属维修分类索引 - - - - - 名称 - - - - - 创建日期 - - - - - 更新时间 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修日志索引 - - - - - 维修产品索引 - - - - - 所属站位索引 - - - - - 所属订单索引 - - - - - 维修所属测试日志索引 - - - - - 维修产品条码 - - - - - 测试日志所属测试流程名称 - - - - - 产品测试日志失败步骤名 - - - - - 产品测试日志失败信息 - - - - - 产品测试日志错误代码 - - - - - 维修产品日期 - - - - - 当条记录更新时间 - - - - - 维修原因类型 - - - - - 维修原因 - - - - - 维修来源 - - - - - 维修来源订单号 - - - - - 维修人工注释 - - - - - 维修产品结果索引 - - - - - 产品图像文件名1 - - - - - 产品图像文件名2 - - - - - 产品图像文件名3 - - - - - 产品图像文件名4 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 索引 - - - - - 所属维修分类索引 - - - - - 名称 - - - - - 创建日期 - - - - - 更新时间 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 索引 - - - - - 报修人员 - - - - - 报修单号 - - - - - 产品类型 - - - - - 产品条码 - - - - - 产品图像 - - - - - 不良品来源 - - - - - 不良代码 - - - - - 不良说明 - - - - - 创建日期 - - - - - 更新时间 - - - - - 维修进度 - - - - - 维修结果 - - - - - 维修记录索引 - - - - - 维修人员 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 维修结果名称 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修来源索引 - - - - - 维修来源名称 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 维修原因类型表 - - - - - 维修类型索引 - - - - - 维修类型说明 - - - - - 创建时间 - - - - - 修改日期 - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 索引 - - - - - 订单ID - - - - - 内部单ID - - - - - 机型ID - - - - - 条码 - - - - - 创建时间 - - - - - 更新时间 - - - - - 条码生成类型 - - - - - 参与组装条码 - - - - - 被组装的时间 - - - - - 第1站测试时间 - - - - - 第2站测试时间 - - - - - 第3站测试时间 - - - - - 第4站测试时间 - - - - - 第5站测试时间 - - - - - 第6站测试时间 - - - - - 第7站测试时间 - - - - - 第8站测试时间 - - - - - 第9站测试时间 - - - - - 第10站测试时间 - - - - - 第11站测试时间 - - - - - 第12站测试时间 - - - - - 第1站测试结果 - - - - - 第2站测试结果 - - - - - 第3站测试结果 - - - - - 第4站测试结果 - - - - - 第5站测试结果 - - - - - 第6站测试结果 - - - - - 第7站测试结果 - - - - - 第8站测试结果 - - - - - 第9站测试结果 - - - - - 第10站测试结果 - - - - - 第11站测试结果 - - - - - 第12站测试结果 - - - - - 建表语句 - - 建表语句 - - - - 产品需要索引客户订单号表 - - - - - 索引,暂无作用 - - - - - 客户订单索引 - - - - - 内部订单号 - - - - - 产品索引 - - - - - 工作站索引集合以,分割 - - - - - 创建时间 - - - - - SN前缀 - - - - - SN起始号 - - - - - SN结束号 - - - - - 产品工艺站总表 - - - - - 工艺站索引 - - - - - 项目索引 - - - - - 工艺站名称 - - - - - 工艺站类型 - - - - - 工艺站序号,从1开始 - - - - - Sn总表序号 - - - - - 工艺站描述 - - - - - 最后更新日期(重复字段等待删除) - - - - - 修改日期 - - - - - 测试记录表名 - - - - - 预览图片 - - - - - 备注 - - - - - 最新测试包名 - - - - - 最新包MD5 - - - - - 当前站位是否有效 - - - - - 站位条码生成规则,1系统生成,2客户录入 - - - - - 编辑密码 - - - - - 发布密码 - - - - - 建表语句 - - 建表语句 - - - - 工艺站包索引 - - - - - 项目索引 - - - - - 站位索引 - - - - - 创建时间 - - - - - 更新时间 - - - - - 当前包名 - - - - - 当前包MD5值 - - - - - 记录本版本更改内容 - - - - - 当前包是否有效 - - - - - 登录用户索引 - - - - - 登录用户名称 - - - - - 发布电脑的公网IP - - - - - 发布电脑用户名 - - - - - 发布电脑的SID - - - - - 备注 - - - - - 建表语句 - - 建表语句 - - - - 用户数据库同步总表 - - - - - 需要同步的数据表名 - - - - - 数据表版本编号 - - - - - 最近同步的本地时间 - - - - - 同步类型,如全表下载(all),或是增量下载(new) - - - - - 同步时需要更新的数据列 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - - 添加需要同步的数据表名至同步表中 - - 数据库名 - 需要同步的数据表名 - 同步类型,all为全表下载,new为增量下载 - 同步时下载的字段,默认为*全字段下载 - - - - - 数据库连接涉及多库操作时,新增数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,更新数据后更新触发器 - - 数据库名 - 数据表名 - - - - - 数据库连接涉及多库操作时,删除后更新触发器 - - 数据库名 - 数据表名 - - - - - 测试记录表,不同项目不同站表名不同 - - - - - 用户唯一标识 - - - - - 设备唯一索引 - - - - - 生产线索引 - - - - - 内部订单索引 - - - - - 应用程序名 - - - - - 测试流程名 - - - - - 产品SN唯一索引 - - - - - 测试起始时间 - - - - - 测试耗时 - - - - - 测试结果 - - - - - 错误代码 - - - - - 失败步骤集合 - - - - - 失败步骤集合 - - - - - 自定义字段,由实际使用中添加字段 - - - - - 数据表名 - - 项目索引 - 工艺站索引 - - - - - 建表语句 - - 建表语句 - - - - 产商的客户总表 - - - - - 修改日期 - - - - - 建表语句 - - 建表语句 - - - - 本地未上传记录缓存表 - - - - 数据库操作记录表枚举值 - - - 序列号 - - - 用户名 - - - 日期时间 - - - 数据库语句 - - - 是否已经同步到远程数据库 - - - 同步出错编码 - - - 同步出错提示 - - - 备注 - - - - Sqlite数据库建表语句 - - 建表语句 - - - -索引 - - - - - 数据服务索引 - - - - - 软件名 - - - - - 软件版本 - - - - - 注册日期与时间 - - - - - 最后活动日期与时间 - - - - - 最后活动信息 - - - - - 备注 - - - - - 索引 - - - - - 数据服务索引 - - - - - 软件名称 - - - - - App版本 - - - - - 测试项目名 - - - - - 测试站名 - - - - - 测试流程名 - - - - - 生成日期 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 客户总表 - - - - - 客户唯一标识 - - - - - 客户公司名 - - - - - 创建日期 - - - - - 修改日期 - - - - - 服务索引唯一值 - - - - - 鉴权文件索引 - - - - - 鉴权文件有效日期 - - - - - 公司名 - - - - - 服务终端内核 - - - - - 服务终端类型 - - - - - 服务终端名称 - - - - - 服务自定义标识名称 - - - - - 服务MAC地址 - - - - - CPU序列号 - - - - - 服务版本 - - - - - 服务注册日期 - - - - -服务最后活动日期 - - - - - 服务是否有效,注册默认有效 - - - - - 数据服务在线 - - - - - 数据服务在线时间 - - - - - 数据服务需要人工处理错误信息 - - - - - 更新服务版本 - - - - - 更新服务是否在线 - - - - - 更新服务需要人工处理错误信息 - - - - - 子网名称 - - - - - 设备角色 - - - - - 与子网服务连接状态 - - - - - 缓存表数量 - - - - - 网上邻居 - - - - - 索引 - - - - - 数据服务索引 - - - - - 数据服务版本 - - - - - 更新服务版本 - - - - - 厂商名称 - - - - - 生成日期与时间 - - - - - 公网IP - - - - - 私网IP - - - - - Mac地址 - - - - - 日志类型 - - - - - 日志内容 - - - - - 建表语句 - - 建表语句 - - - - 数据库总表 - - - - - 数据库唯一标识 - - - - - 所属公司索引 - - - - - 数据库名 - - - - - 数据库用户名 - - - - - 数据库密码 - - - - - 数据库说明 - - - - - 修改日期 - - - - - 设备总表 - - - - - 设备唯一索引 - - - - - 设备名称 - - - - - 设备类型 - - - - - 设备MAC地址 - - - - - 首次登陆时间 - - - - - 末次在线时间 - - - - - 修改日期 - - - - - 设备在线状态 - - - - - 是被是否有效 - - - - - 设备日志总表 - - - - - 设备唯一标识 - - - - - 操作时间 - - - - - 公网IP - - - - - 内网IP - - - - - License文件名 - - - - - 产生日志的APP名 - - - - - App版本号 - - - - - 测试配置文件名称 - - - - - 用户唯一标识 - - - - - 操作内容 - - - - - 错误代码总表 - - - - - 错误代码唯一标识 - - - - - 错误提示信息 - - - - - 统计图中提示颜色 - - - - - 修改日期 - - - - - 索引 - - - - - 公司名称 - - - - - 发布日期 - - - - - 有效日期 - - - - - 备注 - - - - - 操作日志表,对公共库的操作记录 - - - - - 索引,无作用 - - - - - 用户唯一标识 - - - - - 操作时间 - - - - - 具体操作内容 - - - - - 功能模块总表 - - - - - 功能模块唯一索引 - - - - - 功能模块名称 - - - - - 功能模块详细说明 - - - - - 操作级别,读为0,写为1 - - - - - 修改日期 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 发布版本号 - - - - - 发布日期 - - - - - 发布用户索引 - - - - - 发布说明 - - - - - 程序更新软件表 - - - - - 应用程序索引 - - - - - 应用程序名 - - - - - 最新版本号 - - - - - 发布日期 - - - - - 二进制文件 - - - - - MD5校验码 - - - - - FTP包名 - - - - - 需要同步下载表名总表 - - - - - 表名 - - - - - 表版本编号 - - - - - 同步类型 - - - - - 根据数据库类型,返回建表语句 - - 数据库类型 - - - - 数据库操作记录表枚举值 - - - 日志索引 - - - 厂商名称 - - - 应用名称 - - - 应用版本 - - - 日志生成日期与时间 - - - 设备公网IP - - - 设备内网IP地址 - - - 设备MAC - - - 设备系统版本 - - - 设备名称 - - - 设备用户名 - - - 设备网络状态 - - - 日志类型 - - - 日志内容 - - - - Sqlite数据库建表语句 - - 建表语句 - - - - 测试计划编辑信息提示 - - - - - 列名 - - - - - 列类型 - - - - - 列描述 - - - - - 列默认值 - - - - - 修改日期 - - - - - 用户操作功能权限总表 - - - - - 用户唯一标识 - - - - - 数据库唯一标识 - - - - - 拥有完整权限的功能唯一标识,用,分割 - - - - - 拥有读写权限的功能唯一标识,用,分割 - - - - - 拥有只读权限的功能唯一标识,用,分割 - - - - - 用户测试命令总表 - - - - - 修改日期 - - - - - 建表语句 - - 建表语句 - - - - 用户总表 - - - - - 用户ID唯一索引 - - - - - 用户登陆账号 - - - - - 用户密码 - - - - - 公司索引ID - - - - - 创建日期 - - - - - 修改日期 - - - - - 手机号码 - - - - - 微信号 - - - - - 邮箱地址 - - - - - 是否有效 - - - - - Ftp服务器地址 - - - - - - Ftp是否能正常连接,连接正常返回True,连接失败则产生异常 - - - - - - 文件是否存在 - - - - - - - 文件上传 - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - License文件字段枚举 - - - 索引 - - - 客户名 - - - 注册日期 - - - 截止日期 - - - 管理员账号 - - - 管理员密码 - - - 远程数据库URL或IP - - - 远程数据库连接端口 - - - 远程数据库账号 - - - 远程数据库密码 - - - 远程数据库私有操作库 - - - 远程数据库共有操作库 - - - 本地数据库存放文件夹 - - - 本地数据库文件名 - - - 本地数据库密码 - - - Ftp服务器 - - - Ftp通讯端口 - - - Ftp通讯账号 - - - Ftp通讯密码 - - - 客户MAC地址,锁定|MAC时使用 - - - 备注 - - - UTS版本号 - - - 签名 - - - License文件校验返回枚举值 - - - 未找到License - - - 无法打开License - - - 无效的License - - - 校验通过 - - - License校验结果 - - - 校验通过 - - - 无效的客户 - - - 无效的注册日期 - - - 无效的截止日期 - - - 无效的用户 - - - 无效的用户密码 - - - 无效的MAC地址 - - - 无效的UTS版本 - - - 无效的签名 - - - 无效的数据库地址 - - - 无效的数据库名 - - - 无效的数据库用户 - - - 无效的数据库密码 - - - 无效的数据库端口号 - - - 无效的数据库名(sqlite) - - - 无效的数据库文件夹名(sqlite) - - - 存储License签名校验值 - - - License密钥 - - - - 索引 - - 索引 - - - - 获取客户名 - - 客户名 - - - - 获取注册日期 - - 注册日期 - - - - 获取截止日期 - - 截止日期 - - - - 获取管理员账号 - - 管理员账号 - - - - 获取管理员密码 - - 管理员密码 - - - - 远程数据库URL或IP(待删除字段) - - 远程数据库URL或IP - - - - 远程数据库连接端口 - - 远程数据库连接端口 - - - - 远程数据库账号 - - 远程数据库账号 - - - - 远程数据库密码 - - 远程数据库密码 - - - - 远程数据库操作库 - - 远程数据库操作库 - - - - 远程数据库公开库 - - - - - - 本地数据库存放文件夹 - - 本地数据库存放文件夹 - - - - 本地数据库文件名 - - 本地数据库文件名 - - - - 本地数据库密码 - - 本地数据库密码 - - - - Ftp服务器地址(待删除字段) - - Ftp服务器地址 - - - - Ftp服务器端口 - - Ftp服务器端口 - - - - Ftp服务器用户 - - Ftp服务器用户 - - - - Ftp服务器密码 - - Ftp服务器密码 - - - - 获取客户MAC地址 - - 客户MAC地址 - - - - 获取备注 - - 备注 - - - - 获取UTS版本号 - - UTS版本号 - - - - 获取签名 - - 签名 - - - - 读取License文件所有内容,并进行解密,将解密后的内容存入License字典中 - - License文件完整路径(含文件名) - - - - 类的作用:获取服务器信息 - 创建人员:ML - Log编号:1 - 修改描述:创建 - 修改日期:2019-10-15 - 修改人员:ML - - - - Server文件字段枚举 - - - 客户名 - - - 数据库服务器地址 - - - 数据库服务器端口 - - - 数据库名 - - - 数据库用户名 - - - 数据库用户密码 - - - Ftp地址 - - - Ftp端口 - - - Ftp用户名 - - - Ftp用户密码 - - - Server文件校验返回枚举值 - - - 未找到Server - - - 无法打开Server - - - 无效的Server - - - 校验通过 - - - 存储Server校验返回值 - - - 存储Server所有信息 - - - 服务器密钥 - - -Server所有可用字段 - - - - 获取客户名 - - 客户名 - - - - 获取服务器名 - - 服务器名 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 获取服务器端口 - - 服务器端口 - - - - 获取数据库名 - - 数据库名 - - - - 获取数据库用户名 - - 数据库用户名 - - - - 获取数据库用户密码 - - 数据库用户密码 - - - - 读取Server文件所有内容,并进行解密,将解密后的内容存入Server字典中 - - Server文件完整路径(含文件名) - 读取Server文件的状态 - - - - 校验Server - - Server文件完整路径(含文件名) - 校验是否通过 - - - 是否记住密码 - - - 是否自动登录 - - - 是否正在登录中 - - - 校验文件信息 - - - 用户登录信息 - - - 修改窗体标题 - - - 读取Setting中的缓存量 - - - 保存Setting中的缓存量 - - - - 初始化账号控件显示 - - - - - 密码获取与保存机制以后会修改,或加密 - - - - 记住密码复选框状态修改触发事件 - - - 自动登录复选框状态修改触发事件 - - - - 使用账号密码登录 - - - - 是否需要显示登陆页面,方便以后编译时,生成不登陆工具 - - - 是否记住密码 - - - 是否自动登录 - - - - 用户信息类 - - - - 账号索引 - - - 公司索引 - - - 获取或设置用户账号 - - - 获取或设置用户密码 - - - 获取或设置用户注册日期 - - - 获取或设置用户电话号码 - - - 获取或设置用户微信号 - - - 获取或设置用户电子邮箱 - - - 获取或设置用户是否有效 - - - - 已下单待转内部单 - - - - - 已转M/O待制条码 - - - - - 已制SN待制计划 - - - - - 已制计划待生产 - - - - - 生产中 - - - - - 完成生产 - - - - - 已完成 - - - - - 取消 - - - - - 暂停中 - - - - - 客户订单信息 - - - - - 订单索引 - - - - - 订单条码序号字符串 - - - - - 订单状态 - - - - - 订单总量 - - - - - 订单产品 - - - - - 订单所属客户索引 - - - - - 订单交期 - - - - - 订单创建时间 - - - - - 成本单价 - - - - - 销售单价 - - - - 错误代码管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 提取错误代码与错误消息字符串中的错误代码 - - - - - - 内部订单信息 - - - - - 内部订单索引 - - - - - 客户订单索引 - - - - - 内部订单号字符串 - - - - - 公司索引 - - - - - 产品索引 - - - - - 产品类型索引 - - - - - 内部订单创建时间 - - - - - 订单交期 - - - - - 目标产能 - - - - - 当前总产能 - - - - - 内部订单状态 - - - - 内部订单管理器 - - - 初始化测试器线程锁 - - - - 创建内部订单管理器单例 - - - - - - 初始化指定内部订单索引的订单详情 - - - - - 产线管理器,全局唯一 - - - 初始化管理器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 获取所有产线的名字 - - - - - 产品类型管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 从数据库中获取所有的产品类型 - - - - 测试命令管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 根据命令类型与命令名索引命令 - - - - - - - - 初始化版主信息 - - - - - - 初始化流程站帮助信息 - 从本地数据库中读取 - - 数据库类型 - 数据库连接字符串 - - - 测试流程列管理器,全局唯一 - - - 初始化测试器线程锁 - - - - 创建单例管理器,并初始化管理器内容 - - - - - - 检测用户对项目的修改是否输入合法 - 不合法时会抛出异常 - - - - - 初始化项目模式 - - - - - 从云端数据库加载项目信息 - - - - - 从本地Xml文件加载项目信息 - - - - - 从本地数据库加载项目信息 - - - - - 新建项目信息 - - - - - 当前项目初始化方式 - - - - - - 项目索引,创建项目时生成 - - - - - - 项目类型索引 - - - - - - 项目名称 - - - - - - 项目图像在FTP中的文件名 - - - - - - 项目描述 - - - - - - 项目有效日期 - - - - - - 项目是否有效 - - - - - - 1有订单模式,0无订单模式,暂无作用 - - - - - - 项目备注 - - - - - - 单价 - - - - - - 项目站集合 - - - - - - 被删除测试站集合 - - - - - - 项目信息是否被修改 - - - - - - 预览图被修改 - - - - - - 项目当前操作人员索引 - - - - - - 项目当前操作人名称 - - - - - - 项目原图 - - - - - - 项目预览图 - - - - - - 初始化项目 - - 项目名称 - 加载模式 - - - - 初始化项目 - - 项目索引 - 加载模式 - - - - 加载本地项目 - - 项目名称 - - - - 加载项目所有站 - - - - - - 加载测试站信息 - - Xml节点 - - - - 通过数据表更新项目站信息 - - - - - - 通过数据表更新项目信息 - - - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 数据库名称 - 项目索引 - - - - 通过项目索引从远程数据库初始化项目信息 - - 项目索引 - - - - 通过项目索引加载项目站信息 - - 数据库执行器 - 项目索引 - - - - 获取当前站位所有站包 - - - - - - - - 通过项目索引初始化项目信息 - - 数据库执行器 - 项目索引 - - - - 通过项目索引从本地数据库初始化项目信息 - - 项目索引 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 数据库名 - 项目名称 - - - - 通过项目名称从远程数据库初始化项目信息 - - 项目名称 - - - - 通过项目名称加载数据库项目信息 - - 数据库执行器 - 项目名称 - - - - 通过项目名称从本地数据库初始化项目信息 - - 项目名称 - - - - 加载本地项目列表 - - - - - - - 从数据表中提取项目名称列表 - - - - - - - 从远程数据库加载项目名列表 - - - - - - 从本地数据库加载项目名列表 - - - - - - 加载项目列表 - - 加载模式 - - - - - 保存项目所有站信息 - - - - - - 保存项目至本地文件 - - - - - - 将项目信息保存至本Xml文件 - - - - - 查询项目是否存在 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - - 项目表修改原有项目信息 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 项目表添加新项目 - - 数据库执行器 - 数据库名称 - 项目信息 - - - - 更新项目索引 - - - - - 更新上传项目信息 - - - - - - - 更新工艺站索引 - - - - - 发布项目,将项目保存至本地,然后发布项目 - - - - - 删除项目在云端所有相关信息 - - - - - 工艺站序号 - - - - - 工艺站名称 - - - - - 工艺站类型,下拉选择 - - - - - 工艺站预览图,按键加载 - - - - - 工艺站描述 - - - - - 条码生成方式,1.系统生成,2.用户录入 - - - - - 允许测试设备类型 - - - - - 允许测试软件名称 - - - - - 工艺站包名,按键加载 - - - - - 初始化测试站表格 - - 表格控件 - - - - 当前App所属服务索引 - - - - - - 当前App名称 - - - - - - 当前App版本 - - - - - - 当前App运行信息 - - - - - - 当前App状态,默认0为空闲 - - - - - - 调试信息 - - - - - 流程信息 - - - - - 警告信息 - - - - - 错误信息 - - - - - 致命信息 - - - - - 定期更新APP的活动时间,调用则会定期基于本地调用存储过程至缓存表 - - - - - 添加日志内容至缓存的日志队列中 - 调用SaveLogQueueToDb将队列中的数据写入到数据库 - - Tip:缓存队列仅记录每条日志不同的内容,例如写入时间,日志类型,日志内容等 - - - - - - - 网络发送Json字符串,字符串以回车换行结尾 - - - - - - 超时接收回复信息,以回车换行结尾 - - 超时时间,单位毫秒 - 接收到的字符串,超时返回空字符串 - - - - 服务任务类型枚举集合 - - - - - 数据库同步 - - - - - 监听Json文件 - - - - - 服务任务状态枚举值 - - - - - 启动状态 - - - - - 停止状态 - - - - - 服务任务类型 - - - - - - 服务任务名,服务任务的唯一索引 - - - - - - 服务任务的状态 - - - - - - 任务开启 - - - - - 任务停止 - - - - - 任务重启 - - - - - 任务参数集合设置 - - 任务参数键值对 - - - - 任务参数集合获取 - - - - - - 任务类型接口,每个任务必须实现的功能 - - - - - 任务开始 - - - - - 任务退出 - - - - - 重启任务 - - - - - 设置任务参数 - - - - - - 获取任务参数 - - - - - - 应用程序与服务通讯协议类,可将此类序列化为Json字符串或反序列化Json字符串为此类 - - 更改须知: - 当需要增加不参与序列化的共有字段时, - 在变量名上一行,参照JsonFilter字段增加JsonIgnore特性. - - 当需要增加命令名称类型时, - 首先在CmdNamesEnum中增加枚举字段, - 之后在FilterFiled函数中,增加指定命令名称中需要序列话的字段名数组. - - 2021-03-26 - 增加软件与设备通讯命令,用于注册软件 InitApp - - - - - - 发送控制命令时,通信的用户账号 - - - - - 发送控制命令时,执行程序名 - - - - - 通讯时使用的命令名称 - - - - - 用户存储服务中任务信息 - - - - - 指定需要控制的任务名称集合 - - - - - 回复命令时,指示命令执行的状态 - - - - - 回复命令时,指定命令执行后的提示信息 - - - - - 回复命令时,获取当前服务的版本号 - - - - - 发送与恢复时,软件信息 - - - - - 是否为回复数据 - - - - - 是否启用筛选功能,默认为启用筛选功能 - 此字段不参与Json序列化 - - - - - Json序列化时的显示格式,分行对齐显示或是单行无格式显示,默认单行显示 - 此字段不参与Json序列化 - - - - 任务命令执行状态列表 - - - 任务命令列表 - - - 添加任务 - - - 设置任务 - - - 获取任务 - - - 获取所有任务 - - - 删除任务 - - - 删除所有任务 - - - 开启任务 - - - 开启所有任务 - - - 暂停任务 - - - 暂停所有任务 - - - 重启任务 - - - 重启所有任务 - - - 获取DataService版本信息 - - - 初始化APP,从服务端获取APP运行参数 - - - App上报状态至服务 - - - 服务下发通知App - - - - App上报时包含的类型 - - - - - APP已启动 - - - - - APP已关闭 - - - - - APP站位切换 - - - - - APP心跳包 - - - - - Sn总表发生变化 - - - - - 服务下发时包含的类型 - - - - - 序列化类中字段为Json字符串 - - - - - - 反序列Json字符串填充当前类中 - - - - - - 根据任务名称,设置参与序列化的字段名称 - 增加任务名称时,需要更新该函数 - - - - - - - 针对服务任务的Json设置 - 当前作用:筛选指定类中字段参与Json序列化 - - - - - 需要操作的字段名 - 与_retain参数结合使用,实现指定类中某些字段的Json序列化 - - - - - 是否显示指定字段 - 为真时,仅显示指定的字段名 - 为假时,仅不显示指定的字段名 - - - - - 校验条码未测试后处理方式 - - - - - - 校验条码已参与包装后处理方式 - - - - - - 校验条码不属于指定MO后处理方式 - - - - - - 保存图像的数量 - - - - - - 解锁密码 - - - - - - 条码类型 - - - - - - 缺失条码数量后的处理方式 - - - - - - 缺失条码数量后的解锁密码 - - - - - - 是否自动打印 - - - - - - 发生错误后报警文件 - - - - - - 模板文件名 - - - - - - 箱号编辑密码 - - - - - - 公司Logo文件 - - - - - - 公司名称 - - - - - - 箱号规则 - - - - - - 箱号条码 - - - - - - 前置站位 - - - - - - 后置站位 - - - - - - 软件版本 - - - - - - 读取测试站属性 - - - - - - 校验条码失败后处理方式 - - - - - 不处理 - - - - - 校验失败 - - - - - 程序锁定,需要管理员密码解锁,并写入注册表 - - - - - 忽略错误继续录入 - - - - - 条码总数缺少的处理方式 - - - - - 允许录入 - - - - - 不允许录入 - - - - - 需要输入密码解锁 - - - - - 条码单元格的类型 - - - - - 以模板内容为准 - - - - - CODE39支持的字符:空格, 数字, 大写字母, $, %, *, +, -, ., / - - - - - CODE128A支持的字符:空格, 数字, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, / - - - - - CODE128B支持的字符:空格, 数字, 小写字母, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /, ~ - - - - - CODE128C只能包含数字 - - - - - EAN128只能包含数字 - - - - - EAN13是商品编码,必须是13位数字,第13位是根据前面12位运算后得到的 - - - - - Interleaved2of5只能包含数字,数字的长度必须为偶数 - - - - - 修改后的节点 - - - - - 测试流程所关联的项目站包信息 - - - 处于更新表格状态中,不触发表格单元格修改事件 - - - 多个参数间的分割符号 - - - 当前活动节点 - - - 节点选择改变事件 - - - 节点文本被修改事件 - - - 测试命令管理器 - - - 错误代码管理器 - - - - 屏蔽表格引发自定义事件,避免行节点内容修改,todo:暂未完成 - - - - - - 对第二行的Action执行一遍操作,以触发更新事件 - - - - - 光标离开grd表格时,黄色底色切换到选中行 - - - - - 光标进入grd表格时,原底色切换到选中行 - - - - - 根据CmdType 和 isAction 返回该行字体颜色 - - - - - - 鼠标移动到节点位置时所有子节点背景着色 - - - - - FixModule节点Action变化时子节点字体重新着色 - - - - - - FixModule节点Action变化时子节点字体重新着色 - - - - - 根据总表状态对单元格字体重新着色 - - - - - 遍历表格,并更新到全局数组 - - - - - - 节点状态变更,修改节点行颜色 - - - - - - 节点状态变更,修改节点行颜色 - - - - - - 选定行使能或清除Action选项 - - - - - 更新表格内容到缓存,但是并不重新着色 - - - - - 更新ActionEn信息 - - - - - 光标移动时,所在行底色高亮 - - - - - 获取指定行的NodeIndex - - - - - - 获取指定行的NodeLever - - - - - - 获取指定行的NodeIndex - - - - - - 获取指定行的RowType - - - - - - 折叠的列号 - - - - - - 折叠的起始行号 - - - - - - 初始化测试站表格 - - - - - 展开行节点 - - - - - - 节点升级 - - - - - 节点降级 - - - - - 反显节点所在行 - - - - - - 步骤,固定 - - - - - 断点执行,固定列 - - - - - 是否运行 - - - - - 调试结果 - - - - - 节点下限 - - - - - 节点上限 - - - - - 节点测试耗时 - - - - - 模块名称 - - - - - 节点解析 - - - - - 节点控制执行类型 - - - - - 命令类型 - - - - - 命令关键字 - - - - - 执行命令参数 - - - - - 失败重试次数 - - - - - 重试间隔 - - - - - 当前返回值是否记录入库 - - - - - 返回值变量名 - - - - - 错误代码 - - - - - 错误提示 - - - - - 产线变化 - - - - 修改窗体标题 - - - - 显示窗体 - - - - - - 产线变化 - - - - - 测试站修改时处理函数 - - - - - 初始化行节点的风格 - - - - - 快捷键操作 - - - - - - - 读取XML,加载树状视图 - - - - - 读取XML,加载树状视图 - - - - - 将树状视图导出为Xml - - - - - 调试模式 - - - - - 未知类型 - - - - - 扫码目检站 - - - - - 测试站 - - - - - 条码关联站 - - - - - 成品录入站 - - - - - 抽检站 - - - - - 包装站位 - - - - - 唯一条码测试站 - - - - - 包装测试站,2023-05-09添加,参考uts-win的方式做包装站 - - - - - 无序列号 - - - - - 系统生成 - - - - - 测试时录入 - - - - - 用户录入 - - - - - 当前站位类型 - - - - - 项目站索引,项目站唯一索引,新建站时自动生成,生成后不能修改 - - - - - - 项目站名称 - - - - - - 项目站序号,表示该站在项目站总流程中测试顺序 - 例如1,表示当前为第一站 - - - - - - 项目站内容描述 - - - - - - 工艺站预览图 - - - - - - 使用测试站的设备类型,待删除 - - - - - - 使用测试站的设备软件名,待删除 - - - - - - 项目站当前操作人员,为当前登录人员账号 - - - - - - 生成测试站时的顺序,从1开始 - - - - - - 当前站位是否有效 - - - - - - 条码生成规则,1系统生成,2客户录入 - - - - - - 项目站关联的项目站包信息 - - - - - - 项目站所属项目信息 - - - - - - 工艺站信息已被修改 - - - - - - 工艺站类型已被修改 - - - - - - 工艺站预览图已被修改 - - - - - 测试包文件名称,不含.uts后缀 - - - 测试包文件名称,含.uts后缀 - - - - 当前站包所属站位类型 - - - - - 测试站包MD5值 - - - 测试站包版本 - - - 修改项目流程时所需密码 - - - 发布项目流程时所需密码 - - - 测试站包有效日期 - - - 测试站包创建时间 - - - 测试站包修改时间 - - - 发布测试站包的应用程序版本 - - - 发布测试站包的图片 - - - - 项目站包历史发布说明 - - - - - - 当前版本发布说明 - - - - - 站位流程,不同的站位流程类型不同 - - - 测试站包所在的测试站信息 - - - - 创建项目站包 - - - - - 加载项目站包信息文件 - - - - - - 加载项目站包时,校验路径 - - - - - - 加载项目站包时,解压项目文件到指定路径 - - - - - - 加载测试站包时,加载项目站包信息 - - - - - - 加载测试站包内容 - - - - - 保存项目站历史版本说明 - - - - - - 保存项目站信息节点内容 - - - - - - 保存项目站包信息文件 - - - - - - 发布项目时,校验路径合法性 - - - - - 发布项目时,将原项目包文件夹名重命名为预发布项目包文件夹名 - - 预发布项目站包名 - - - - 发布项目时,将缓存信息保存到本地文件中 - - 预发布项目站包名 - - - - 发布项目时,压缩项目文件夹至发布路径 - - 预发布项目站包名 - 预发布项目站包文件名 - - - - 发布项目成功后,更新数据库数据 - - - - - - 发布站包时,更新站位表信息 - - - - - - - 发布站包时,更新站包发布记录表信息 - - - - - - - 发布项目成功后,更新项目包信息 - - - - - 发布项目站包 - - - - - 模块名称 - - - - - - 控制命令类型 - - - - - - 当前流程步骤的解释 - - - - - - 调试模式下运行到当前节点后,暂停运行 - - - - - - 当前流程步骤是否允许执行 - - - - - - 当前流程步骤是否会被执行 - - - - - - 当前流程步骤执行结果是否保存至数据库,FALSE则为临时变量 - - - - - - 行的类型 - - - - - - 行节点关联的站流程 - - - - - - 行节点执行结果信息 - - - - - - 节点树的所有节点集合 - - - - - - 节点所属节点数组的位置,从0开始,即头结点的的索引 - - - - - - 节点的级别,可见节点级别从0开始 - - - - - - 节点在父节点中的索引,可见节点级别从0开始 - - - - - - 记录总使用的说明内容 - - - - - - 子节点总数 - - - - - - 所有子节点总数 - - - - - - 行下包含的子行集合 - - - - - - 当前节点的同级上一节点,若当前节点为首节点则返回nothing - - - - - - 当前节点的同级下一节点,若当前节点为尾节点则返回nothing - - - - - - 当前节点的父节点 - - - - - - 当前节点树的起始节点 - - - - - - 内部缓存子节点 - - - - - 处于展开状态 - - - - - - 是否允许删除当前节点 - - - - - - 是否允许添加子节点 - - - - - - 允许操作当前节点内容 - - - - - - 允许移动节点改变节点的级别 - - - - - - 当前节点是否处于重试状态 - - - - - - 展开节点 - - - - - 折叠节点 - - - - - 展开或折叠节点 - - - - - 增加子节点 - - - - - 插入子节点 - - - - - 移除本身节点 - - - - - 清空节点所有子节点 - - - - - 节点上移 - - - - - 节点下移 - - - - - 节点左移 - - - - - 节点右移 - - - - - 节点深复制,创建一个完全相同信息的节点 - - - - - - 固定模块 - - - - - 模块,可以当作跳转入口 - - - - - 控制 - - - - - 流程 - - - - - 默认的初始化节点风格 - - - - - 从本地文件中初始化节点风格 - - - - - - 导出为XML文件 - - 文件路径 - - - - 加载行节点 - - - - - - - 更新节点的所有子节点的流程站指向 - - - - - - 更新节点的上一节点指向 - - 需要更新的节点 - - - - 更新节点的下一节点指向 - - 需要更新的节点 - - - - 新增节点后,更新父节点的所有子节点计数 - - 新增的节点 - - - - 删除节点后,更新父节点的所有子节点计数 - - 被删除的节点 - 包含当前节点 - - - - 插入节点后,更新节点下方节点的索引 - - 需要更新下方节点索引的节点 - - - - 删除节点后,更新节点下方节点的索引 - - - - - - 获取新添加的节点的链状目录索引 - - - - - - - 更新节点的所有子节点的链式结合的指向 - - - - - - - 删除节点后,更新链状列表 - - - 包含当前节点 - - - - 插入节点后,更新链状目录中受影响节点的索引 - - - - - - 删除节点后,更新链状目录中受影响节点的索引 - - 删除的节点 - 是否保存该节点 - - - - 移除指定节点 - - - - - - 清空节点 - - - - - 行节点表,当前选择行 - - - - - 行节点表,下拉框选择行 - - - - - 行节点表,下拉框所在列 - - - - - 详细信息表格内容变更类型 - - - - - 初始化测试站表格 - - - - - 单行信息表格命令修改后,同步刷新本身信息 - - - - - 下拉框选择对象事件 - - - - - - - 表格下拉框出现时触发事件 - - - - - - - 更新流程列名提示 - - - - - - 更新流程命令提示 - - - - - - - - - 单行信息表格更新当前行 - - - - - - 主表格选中单元格时触发事件 - - - - - - - - 根据CmdType 和 isAction 返回该行字体颜色 - - - - - - 详细信息表格内容变更类型枚举值 - - - - - 未变更 - - - - - 加载流程时时引起的变更 - - - - - 行节点信息修改引起的变更 - - - - - 切换选择节点引起的变更 - - - - - 关联节点内容变更 - - - - - 节点字体 - - - - - - 节点字体颜色 - - - - - - 节点图标 - - - - - - 节点图标索引 - - - - - - 节点背景颜色 - - - - - - 项目站包文件名 - - - - - - 项目站包创建者 - - - - - - 项目站包版本说明 - - - - - 测试流程是否已锁定 - - - - 头节点 - - - - - - 节点树状集合 - - - - - - 节点树的所有节点集合 - - - - - - 节点总数 - - - - - - '创建固定模块节点 - - - - - - - - 创建新的测试流程 - - - - - 保存为Xml文件 - - - - - - 读取测试站属性 - - - - - - 从Xml文件加载 - - - - - - 测试流程固定模块 - - - - - 空模块,无测试时默认值 - - - - - 主模块,测试起始模块 - - - - - 测试通过执行模块 - - - - - 测试失败执行模块 - - - - - 测试卸载执行模块 - - - - - 测试设置执行模块 - - - - - 自定义模块 - - - - - 模板文件名 - - - - - - 公司Logo文件 - - - - - - 串口名 - - - - - - 串口别名 - - - - - - 默认接收超时时间,通讯时超时设置为0时使用该值 - - - - - - 串口接受单字节间隔接受超时 - - - - - 当前串口是否已经打开 - - - - - - 清空接受缓冲区内容 - - - - 字符串发送 - - - 字符串发送,添加回车换行 - - - 十六进制字符串发送 - - - - 根据串口名,查询对应串口 - - - - - - - - 运行CMD命令并获取返回值 2022-10-25 1.6.2 版本 - - 执行文件路径 - 执行参数 - 超时时间 - 获取输出流内容 - 目标字符串,为空则错误输出流有内容则判定失败 - - - - - - 对数据库进行执行操作,用于查询单个字段内容 - - - - 显示提示的控件 - - - 提示文本 - - - 背景颜色 - - - 字体颜色 - - - 字体名称 - - - 字体大小 - - - 字体加粗 - - - 显示模式 - - - 模式参数 - - - - 显示提示图像执行器 - 耦合了 - - - - - UTS串口通讯返回值比较函数静态类 - - - - - 仅一个参数字符串比较,忽略大小写 - - 测试命令返回集合 - - - - - 判断目标字符串是否是上限或下限字符串中的某一个,忽略大小写,符合上下线中的任何一个则返回True - - - Momo 2022-09-19 添加命令,等于上下限其中的一个就返回true - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串,包含则返回False,不包含则返回True - - - Momo 2022-09-15 添加命令,包含指定字符则返回false,否则返回true - - - - 仅一个参数字符串是否包含关系,忽略大小写,下限则为目标字符串包含下限,上限则为上限字符串包含目标字符串 - - - - - - 仅一个参数字符串是否包含关系,忽略大小写,返回数据包含上下限中任意一个字符串即算ok - - - - - - 仅一个参数字符串比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 确认字符串长度 - - 当前值 - 下限 - 上限 - - - - - 确认字符串中每个字符的格式 - - 当前值 - 字符校验模式 - - - - - 多参数字符串列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 浮点型比较方式 - - - - - - - 仅一个参数浮点型比较 - - 当前值 - 下限 - 上限 - - - - - 多参数浮点型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 整数型比较方式 - - - - - - - 仅一个参数整数比较,忽略大小写 - - 当前值 - 下限 - 上限 - - - - - 多参数整数型列表比较上下限 - - 参数列表 - 下限字符串,切割时按冒号切割,位数不足则默认不比较 - 上限字符串,切割时按冒号切割,位数不足则默认不比较 - - - - - 测试命令类型 - - - - - - 测试命令名称 - - - - - - 测试命令参数 - - - - - - 创建命令执行器 - - - - - - - 将参数中的相对路径替换为绝对路径 - - - - - - 字符串处理 - - - 字符串处理,以回车换行结尾 - - - 字符串处理,包含关系 - - - 十六进制字符串处理 - - - 整形字符串处理 - - - 小数型字符串处理 - - - 十六进制处理 - - - - 下限 - - - - - - 上限 - - - - - - 下限_2 - - - - - - 上限_2 - - - - - - 执行结果 - - - - - - 记录值 - - - - - - 执行结果提示信息 - - - - - - 执行耗时,包含重试耗时 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 执行串口通讯命令,接收返回值,并比较返回数据是否在期望上下范围中 - - - - - - 当前串口对象 - - - - - UTS串口波特率,默认115200 - - - - - 接收等待最长毫秒数,默认100ms - - - - - 串口通讯写入失败计数,通讯成功置零,通讯失败则加1 - - - - - 串口通讯写入失败最大上限,默认5次 - - - - - 状态机执行间隔,默认10ms - - - - - 发送同步命令的间隔,默认1000ms - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 当前可以访问的串口名集合 - - - - 按键串口控制器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建按键串口控制器,若按键串口控制器已经创建则返回句柄 - - - - - - 开启任务 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令接收等待最长时间 - - - - - J_Controller状态机 - - - - - 退出状态机 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送心跳包 - - - - - 等待回复 - - - - - 发送控制通道命令 - - - - - 键值回复 - - - - - 连接成功 - - - - - 连接失败 - - - - 通讯串口 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - 接收起始时间 - - - - 打开串口 - - - - - - 通讯字符串的分隔符 - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 将参数字符串处理成参数列表 - - - - - - 输入框值 - - - - - - 密码模式 - - - - - - 当前百分比 - - - - -测试开始事件 - - -测试暂停事件 - - -测试成功事件 - - -测试失败事件 - - -测试结束事件 - - -测试状态变更事件 - - -测试计数变更事件 - - -测试节点变更事件 - - -测试节点完成事件 - - -测试节点结果变化事件 - - -测试时间变更事件 - - - 当前测试节点 - - - 当前测试固定模块 - - - 测试耗时计时器 - - - 单步执行耗时计时器 - - - 程序运行后,测试通过总数 - - - 程序运行后,测试失败总数 - - - 是否已执行设置模块 - - - 是否处于调试断点 - - - 是否退出调试断点 - - - 是否下一节点调试断点 - - - 内置模块入口集合 - - - 自定义模块下函数入口集合 - - - 测试结果内容 - - - 是否退出测试 - - - 测试时间线程 - - - 测试过程中,产生的变量存储 - - - 测试过程中,全局变量存储 - - - 测试过程中,使用的测试站位 - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建测试器,若测试器已经创建则返回句柄 - - - - - 测试状态 - - - - 判定测试失败的模式 - - - - - - 测试时,重新执行Setup模块 - - - - - 获取指定名称的模块节点 - - - - - - - 开始测试,此函数为正式测试调用 - - - - - 开始调试测试,此函数为正式测试调用 - - - - - 流程修改后保存,更新模块索引 - - - - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 执行内置模块函数 - - - - - - - 获取用户退出测试的执行返回结果 - - - - - - 获取不运行的节点的执行返回结果 - - - - - - 获取未知的行节点类型的执行返回结果 - - 当前行节点 - - - - - 执行模块流程 - - - - - - - 执行控制流程 - - - 测试结果 - - - - 执行控制结构的条件部分 - - - - - - - 执行类型为普通流程的行节点 - - - - - - - - 获取指定变量名的变量值 - - 变量名 - 调用模块时传入的局部变量 - - - - - 替换字符串中使用的变量,返回替换后的字符串 - - 原字符串 - 调用模块时传入的局部变量 - 替换后的字符串 - - - - 替换测试命令参数中的变量(变量格式:{var}),待删除 - - - - - - - 退出执行,测试结果为失败 - - - - - 测试主函数,测试Main模块,根据测试结果测试Pass/Fail模块 - - - - - 调试测试当前节点及其子节点 - - 节点对象 - - - - 从当前节点调试测试,直到测试完当前顶级模块 - - 节点对象 - - - - 测试单节点及之后的所有节点 - - - - - - 调试测试节点数组 - - - - - - 调试测试节点数组,包含其子节点 - - - - - - 调试测试子节点集合 - - - - - - 调试测试节点集合,及其子节点 - - - - - - 单步测试失败后退出测试,判定测试失败 - - - - - 单步测试失败后继续测试,执行所有测试流程后,判定测试失败 - - - - - 仅测试当前节点及其子节点 - - - - - 从节点开始往下测试 - - - - - PC机地址 - - - - - UtsHW03设备地址 - - - - - UTS通讯中,本机地址 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在测试状态更改时发生 - - - - - 串口连接状态 - - - - - - 在数据库同步状态更改时发生 - - - - - 数据库同步状态 - - - - - - 项目站未修改 - - - - - 项目站信息已修改 - - - - - 项目站信息修改已保存 - - - - - 在测试状态更改时发生 - - - - - 测试站编辑状态 - - - - - - 无需发送 - - - - - 等待发送 - - - - - 发送失败 - - - - - 发送成功后,等待接收 - - - - - 接收超时 - - - - - 接收完成 - - - - - 测试命令状态 - - - - - - 控制命令状态 - - - - - - 待机测试 - - - - - 正在测试中 - - - - - 测试通过 - - - - - 测试失败 - - - - - 设备异常 - - - - - 在测试状态更改时发生 - - - - - 测试状态 - - 测试状态 - - - - 按键按下枚举值 - - - - - 没有按键按下 - - - - - 开始键按下 - - - - - YES 键按下 - - - - - NO 键按下 - - - - - 开始键长按 - - - - - YES 键长按 - - - - - NO 键长按 - - - - - 开始键松开 - - - - - Yes 键松开 - - - - - NO 键松开 - - - - - UTS测试架按键按下 - - - - - UTS测试架按键键值 - - - - - 内置模块入口集合 - - - 自定义模块下函数入口集合 - - - - 测试记录所关联的控件 - - - - - - 测试记录所关联的测试流程 - - - - - - 获取指定变量名的变量值 - - 变量名 - 调用模块时传入的局部变量 - - - - - 替换字符串中使用的变量,返回替换后的字符串 - - 原字符串 - 调用模块时传入的局部变量 - 替换后的字符串 - - - - 更新测试模块入库 - - - - - 获取执行行节点集合中测试模块入口,并存储至内部模块入口集合 - - 存储测试模块入口集合 - 行节点集合 - - - - 获取固定模块节点 - - 固定模块名 - - - - - 获取模块节点 - - 模块名 - - - - - 初始化记录表格 - - 测试流程 - - - - 获取当前节点所在的记录行,0代表未找到对应节点 - - 当前测试节点 - - - - - 反显当前测试节点所在的记录行 - - 当前测试节点 - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 更新测试记录表格指定记录名的记录结果列内容 - - - - - - - 显示所有行 - - - - - 屏蔽非记录行 - - - - - 测试结果枚举集合 - - - - - 当前用户索引,登陆后填充 - - - - - - 当前服务索引,登陆后获取 - - - - - - 所属产线索引,用户选择后获取 - - - - - - 所属订单索引,用户提供条码,系统自动填充 - - - - - - 测试程序的名称,登陆后填充 - - - - - - 测试流程名,切换项目流程站后获取 - - - - - - 测试产品的索引序号,测试时获取,(使用大写,8字符) - - - - - - 测试开始日期与时间,测试时获取 - - - - - - 测试耗时,测试时获取 - - - - - - 测试结果,测试时获取 - - - - - - 错误代码,测试时获取 - - - - - - 失败步骤集合,测试时获取 - - - - - - 自定义记录数据,测试时获取 - - - - - - 切换测试站后,初始话测试结果信息 - - - - - 开启新一轮测试时,重置测试结果信息 - - - - - 添加自定义需要记录的测试信息 - - 记录列名 - 记录值 - - - - 将当前测试信息转换为字符键值对 - - - - - 通讯串口 - - - 接收起始时间 - - - 接收到的字符串 - - - 接收到的经过处理后的合法数据队列 - - - - 获取所有串口名 - - - - - - 打开串口 - - - - - - - 接收分析后的数据 - - - - - 测试错误代码管理器 - - - 测试线程 - - - 测试站信息 - - - 测试记录表格 - - - - 产线变化 - - - - - 站位变化 - - - - - 存储单笔测试记录至CSV文件 - - - - 当前绘制图形宽度 - - - 当前绘制图形坐标点X - - - 当前绘制图形坐标点Y - - - 当前绘制图形单行最大上限 - - - - 添加绘制测试结果 - - - - - - 校验测试流程有效日期 - - - - - - 开始测试 - - - - - 终止测试 - - - - - 存储单笔测试记录至数据库 - - - - - 根据测试状态,更新界面UI显示 - - - - - - 更新测试时间 - - - - - - 发送方地址 - - - - - - 接收方地址 - - - - - - UTS通讯命令 - - - - - - UTS命令参数 - - - - - - 测试命令常用初始化方式 - - - - - - - - 发送后台通讯命令常用初始化方式 - - - - - - - - 重置当前对象的信息 - - - - - 深度拷贝数据, 创建当前对象的克隆 - - - - - - 将参数字符串处理成参数列表 - - - - - - 将必须通讯参数转换为uts通讯字符串 - - 发送方地址 - 接收发地址 - 命令字 - 命令参数 - 组合命令分隔符 - - - - - 将字符串按格式转换为通讯格式数据对象 - - uts通讯字符串 - 组合命令分隔符 - - - - - 解析uts通讯字符串,初始化内部数据 - - - - - - 将本地数据内容,转换为uts通讯字符串 - - - - - - 测试命令接收等待最长时间 - - - - - 期望回复的测试命令。发送测试命令后,判断串口接收是否为指定命令的回复数据 - - - - - 需要发送的测试命令 - - - - - 接收测试命令 - - - - - 测试命令仅发送,不需要接受 - - - - - 提供发送测试命令统一接口 - - - - - 提供测试命令接收完成统一接口 - - 超时接收时间 - 接收到的数据 - - - - - 串口状态枚举 - - - - - 未开启或已退出 - - - - - 入口 - - - - - 获取串口设备 - - - - - 发送同步命令 - - - - - 等待回复 - - - - - 键值回复 - - - - - 发送测试命令 - - - - - 连接成功 - - - - - 连接失败 - - - - - 串口任务状态,根据状态不同进行不同的串口操作 - - - - - 发送同步命令的时间 - - - - - 已发送通讯数据,等待回复的时间 - - - - - 发送同步命令的间隔时间(ms) - - - - - 测试状态是否发生变化 - - - - - 是否收到按键主动数据,需要回复ACK - - - - - 状态机执行间隔,默认10ms - - - - - 当前可以访问的串口名集合 - - - - - 当前串口对象 - - - - - UTS串口波特率 - - - - - 接收等待最长时间 - - - - - 串口通讯写入失败计数 - - - - - 串口通讯写入失败最大上限 - - - - - 处理高优先级接收数据 - 当前包含按键键值与测试状态回复包等数据 - - - - - UTS串口任务状态机 - - - - - 串口任务,包含索引串口,发送数据,接收数据 - - - - -UTS系列App与UtsCore交互为避免重复书写产生的中间类 - - - - 本地服务索引 - - - 本地服务角色,0客户端,1服务器 - - - 本地服务别名 - - - 本地服务组名(子网名) - - - 软件名称 - - - 软件版本 - - - 测试记录表名 - - - 登录用户信息 - - - 鉴权文件信息 - - - 当前选择站位信息 - - - 测试结果内容 - - - 软件注册器 - - - 服务通讯TCP客户端 - - - 是否释放当前类 - - - 站位观察者集合 - - - 当前软件所属站位类型,None则无类型 - - - UTS软件单例对象 - - - UTS软件单例对象初始化锁 - - - - 创建单例对象 - - - - - - 添加站位修改观察者,唯一添加 - - - - - - 移除站位修改观察者 - - - - - - 清空站位修改观察者 - - - - - 初始化完成 - - - - - - 用户账号信息 - - - - - - 服务索引 - - - - - - 服务角色,0客户端,1服务器 - - - - - - 服务别名 - - - - - - 服务所属分组 - - - - - - 鉴权文件信息 - - - - - - 工厂产线信息 - - - - - - 测试站信息 - - - - - - 测试站信息 - - - - - - APP注册机 - - - - - - 测试记录表名 - - - - - - 未查询到数据库订单号时是否显示提示 - - - - - - 允许保存未查询到订单号的记录入库,显示提示时,此字段不生效。 - - - - - - 初始化信息,唯一初始化 - - 软件选择站位时,可以选择的站位类型,默认显示测试站位 - - - - 测试状态改变处理事件 - - - - - - - 连接数据服务,异步执行 - - - - - 保持与数据服务的Tcp连接存活 - - - - - - 定期发送App心跳包 - - - - - - 主动向服务发送变化数据 - - 变化类型 - 字段内容 - - - - 发送App上报信息 - - - - - - - 发送数据 - - - - - - - APP接收服务器数据 - - - - - - 处理数据,并返回回复数据 - - 需要处理的数据参数 - 需要回复的数据 - - - - 显示登陆页面 - - - - - 注册APP - - - - - 初始化测试结果字段信息 - - - - - 填充测试结果订单信息字段 - - - - - 根据序号分配给测试记录的订单号,并将测试记录写入到数据库中,提交成功后会重置测试记录。 - - - - - 根据项目名与站位名称,加载项目站信息 - - - - - - - 显示切换项目站信息页面,供用户修改测试站 - - - - - 用户选择测试站后回调函数 - - - - - - - 定期更新APP存活时间 - - - - - - 保存软件运行日志至数据库 - - - - - - 保存软件运行日志至数据库 - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 创建文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 文件上传 - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 文件下载 - 从FTP下载压缩包,到本地指定路径 - - - - - 从注册表中获取UTS软件运行所需的变量值 - - 注意: - 使用时避免反复读写注册表,应将获取的字段值保存至变量中; - 获取字段失败时会程序异,使用时做好异常保护; - 只读的变量是从注册表中获取的字段根据规则拼接而成的; - - - - 数据服务 - - - 更新服务 - - - 鉴权文件 - - - 数据库文件夹 - - - 产品相关 - - - - 注册表存放根路径配置信息 - - - - - 获取注册表是否存在 - - - - - - 获取和设置UTS软件存放位置的根文件路径,如C:/AUTS - - - - - - 获取和设置UTS软件Ftp所在地址 - - - - - - 获取和设置数据库URL所在地址 - - - - - - 子网名称,用于过滤多播时非相同子网名称数据包 - - - - - - 设备在子网中的角色,0为普通设备,1为服务器设备 - - - - - - 获取和设置License文件名 - - - - - - 获取和设置DataService名称 - - - - - - 获取和设置DataService版本信息 - - - - - - 获取或设置服务的索引,默认值为-1 - - - - - - 获取或设置服务的通讯端口,默认端口55533 - - - - - - 服务注册时使用的自定义标识名 - - - - - - 存放数据服务文件夹,不包含版本文件夹 - - - - - - 数据服务版本文件夹 - - - - - - 获取数据服务执行文件的路径 - - - - - - 获取和设置UpdateService名称 - - - - - - 获取和设置UpdateService版本信息 - - - - - - 获取和设置UpdateService文件夹路径,不包含版本文件夹 - - - - - - 获取和设置UpdateService当前版本文件夹路径 - - - - - - 获取数据服务执行文件的路径 - - - - - - 本地数据库文件夹 - - - - - - 本地产品图像文件夹 - - - - - - UTS使用的数据库连接参数 - - - - - 远程数据库地址修改 - - - - - 远程数据库类型 - - - - - 远程数据库连接字符串 - - - - - 远程私有库名 - - - - - 远程公共库名 - - - - - 本地数据库类型 - - - - - 本地数据库连接字符串 - - - - 系统文件夹枚举值 - - - 错误记录文件夹 - - - 设置文件夹 - - - 用户临时操作文件夹 - - - - Temp文件夹下文件夹 - - - - 创建项目时使用文件夹 - - - 设计时使用文件夹 - - - 测试时使用文件夹 - - - - Temp文件夹下文件夹 - - - - 产品原图文件夹名 - - - 产品预览图文件夹名 - - - - 本地缓存数据路径 - - - - - - 厂商名 - - - - - 校验程序所需的所有文件夹是否存在,不存在则创建 - - - - - 用户设置文件夹完整路径 - - - - - - 行节点风格存储文件完整路径 - - - - - - 用户日志文件夹完整路径 - - - - - - 项目站发布文件夹路径,与项目测试站包发布路径区分,可修改 - - - - - - 项目站包远程存储路径 - - 产品索引 - 产品工艺站索引 - 产品测试站包名 - - - - - 产品原图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 产品原图本地存储文件夹路径 - - - - - - 产品预览图远程存储文件夹路径 - - - - - - 产品原图本地存储路径 - - 产品图像名,含后缀 - - - - - 产品预览图远程存储路径 - - 产品图像名,含后缀 - - - - - 项目站发布文件夹指定项目名路径 - - 产品索引 - - - - - 项目站包发布路径 - - 产品名称 - 站位索引 - - - - - 项目站包文件路径 - - 产品索引 - 站位索引 - 包名待.uts后缀 - - - - - 项目临时编辑文件夹路径 - - - - - - 临时项目设计文件夹路径 - - - - - - 临时项目文件路径 - - - - - - - 项目站设计文件夹路径 - - - - - - 项目站包信息文件名 - - - - - 获取指定包名的项目站包文件夹路径 - - - - - - 获取指定包名的项目站包信息文件路径 - - - - - - - 获取指定包名的项目站包资源文件夹 - - - - - - - 获取指定包名的项目站包测试流程文件夹 - - - - - - - 项目站包文件夹路径 - - - - - - 项目站包信息文件路径 - - - - - - 项目站包资源文件夹 - - - - - - 项目站包资源文件夹 - - - - - - 解析模式,并且确定有关参数 - - - - - 常驻线程,执行各种Mode - - - - diff --git a/AUTS_UpdateService/bin/Debug/Ubiety.Dns.Core.dll b/AUTS_UpdateService/bin/Debug/Ubiety.Dns.Core.dll deleted file mode 100644 index b10ecf2..0000000 Binary files a/AUTS_UpdateService/bin/Debug/Ubiety.Dns.Core.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/Zstandard.Net.dll b/AUTS_UpdateService/bin/Debug/Zstandard.Net.dll deleted file mode 100644 index 83934d1..0000000 Binary files a/AUTS_UpdateService/bin/Debug/Zstandard.Net.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/x64/SQLite.Interop.dll b/AUTS_UpdateService/bin/Debug/x64/SQLite.Interop.dll deleted file mode 100644 index 1a86bfd..0000000 Binary files a/AUTS_UpdateService/bin/Debug/x64/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_UpdateService/bin/Debug/x86/SQLite.Interop.dll b/AUTS_UpdateService/bin/Debug/x86/SQLite.Interop.dll deleted file mode 100644 index 1e4490d..0000000 Binary files a/AUTS_UpdateService/bin/Debug/x86/SQLite.Interop.dll and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_UpdateService/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_UpdateService/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.ProjectInstaller.resources b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.ProjectInstaller.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.ProjectInstaller.resources and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.Resources.resources b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.Resources.resources deleted file mode 100644 index 6c05a97..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.Resources.resources and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.TrustInfo.xml b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.TrustInfo.xml deleted file mode 100644 index 9c2ae30..0000000 --- a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.TrustInfo.xml +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.application b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.application deleted file mode 100644 index 424bd06..0000000 --- a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.application +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - GyZLeBm1NOcT942pMv0z8IEzMb34oaFawv6uoknxeDw= - - - - \ No newline at end of file diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.exe b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.exe deleted file mode 100644 index 403efc8..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.exe and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.exe.manifest b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.exe.manifest deleted file mode 100644 index 51f6abd..0000000 --- a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.exe.manifest +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2Oc+VU7J62jOwBBIU5EncFN4M6dniwFQwoRFcm2igQQ= - - - - - - - - - - - - pkUxy9puRCzT8+NR1z1AhrzgCfuXnvkLKPb6RRIvXI8= - - - - - - - - - - - - rjgJb/IX0GetL+OMedFvFESHxeLiualxv+MztdOlurA= - - - - - - - - - - - - 28d0pL6ZczrSHwUZ0CvOoTbAMTd1JgQWtf+IVJOCVJE= - - - - - - - - - - - - 35pRbDV52ZcfH6A8vPhQBwGT0sLDoi32A2MObvugrSk= - - - - - - - - - - - - iZt23NwbTw3G3o7er2sV/njinSqOJNwVDnslLK/MOLg= - - - - - - - - - - - - QeTVrSMyJYZsM56dHatpgSg+p0WTseZEtdYYQVJfytI= - - - - - - - - - - - - EQ80i1BW05RFWHofw8nY4upHJV2z3owIUJDXc8sbY4o= - - - - - - - - - - - - oZfzHSqxTPw87kQQ75DJmTwVUDYzD1n60919pa1imxU= - - - - - - - - - - - - tiSUnfiw46YVP9+3MKfG9JkLZZLuDZIuF4hDPSdmEPM= - - - - - - - - - - - - ecKwhBSNpYm2/xnaX7+jyB+oNSwFuA1cBib7iaofklk= - - - - - - - - - - - - OvHgcwW+0KvgzzLZhU4Kf19HAhat7huH0CNQvgnTGzU= - - - - - - - - - - - - Ga0YrQoSj2kGZ8cjnbr4limr5Dprs2W6wpW3KozCYxg= - - - - - - - - - - - - vz+4RmT0CX8aipvHGlHc+M8akF1AgKTSkNoXMIZuhW8= - - - - - - - - - - - - HT74aYKB589zcdFVSv71hys5+Wwm2nciEKM9oEG6EYM= - - - - - - - - - - - - N3aEiOjvRXKbx9miZ3YzxkUAQpdbuWUW4YbabLnNDc8= - - - - - - - - - - - - T4H/0NxyBNt1r8NepCkXabB8RAWS8oiUJg7qdmJqI8Y= - - - - - - - - - - - - QlzLo6q5nMFBFwX0kdEhC2q98wjyvU01Z3dWTu4eunE= - - - - - - - - - - - - AZnuMl92VNQ74m4O+fXzc+nN9LZP1xsfoplS4lGNs4k= - - - - - - - - - - - - akJdCbivvXeG6x/ocqU5GIpZBvhgIDk7jfrfK3YYvvE= - - - - - - - - - - - - sA/9afOty8HFRcsW9gn/0C+2jmZyxz1PouftB0gA+nQ= - - - - - - - - - - - - AF5ezQPpM4b1ROQNJlzQCUmhQq2xJRxXgIzEgnJwv3Q= - - - - - - - - - - 0K2GXmsDH+vXztWeoypTH2DIdHyoXBiIhNKpdWP1iCY= - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.pdb b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.pdb deleted file mode 100644 index d8cdca3..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.pdb and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.AssemblyReference.cache b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.AssemblyReference.cache deleted file mode 100644 index c78aa6f..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.CopyComplete b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.CoreCompileInputs.cache b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.CoreCompileInputs.cache deleted file mode 100644 index c0b376f..0000000 --- a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.CoreCompileInputs.cache +++ /dev/null @@ -1 +0,0 @@ -79709d889037120a4a879bd303d52a4d396b2fc4024fa383a512428962d99d24 diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.FileListAbsolute.txt b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.FileListAbsolute.txt deleted file mode 100644 index 75fea33..0000000 --- a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,542 +0,0 @@ -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.config -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Renci.SshNet.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -D:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.config -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -H:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -D:\ML\Dtl_20210312_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\Renci.SshNet.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.xml -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.config -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -G:\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -D:\ML\Dtl_20210318_发布使用\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\Renci.SshNet.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.config -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -E:\BY\工作档案\VS2019\AUTS服务程序\AUTS\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.manifest -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.application -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.TrustInfo.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.manifest -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.application -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.manifest -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.application -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.TrustInfo.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.manifest -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.application -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.manifest -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.application -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\FlexCell.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.TrustInfo.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.manifest -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.application -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.manifest -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.application -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\FlexCell.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.AssemblyReference.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.TrustInfo.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.manifest -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.application -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -D:\Sync\RD_PC\Project\UTS_Studio\src\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.manifest -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.application -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\FlexCell.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.TrustInfo.xml -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.manifest -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.application -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CopyComplete -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -E:\Git\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.config -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe.manifest -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.application -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.exe -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.pdb -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\AUTS_UpdateService.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.Resources.resources -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.ProjectInstaller.resources -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.TrustInfo.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe.manifest -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.application -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_Upd.4F2EBC08.Up2Date -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.exe -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.xml -D:\ML\Wen\AUTS\AUTS_UpdateService\obj\Debug\AUTS_UpdateService.pdb -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_UpdateService\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.GenerateResource.cache b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.GenerateResource.cache deleted file mode 100644 index 10668b9..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbproj.GenerateResource.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbprojAssemblyReference.cache b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbprojAssemblyReference.cache deleted file mode 100644 index 665e882..0000000 Binary files a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.xml b/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.xml deleted file mode 100644 index 406bac7..0000000 --- a/AUTS_UpdateService/obj/Debug/AUTS_UpdateService.xml +++ /dev/null @@ -1,352 +0,0 @@ - - - - -AUTS_UpdateService - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 厂商名 - - - - - 初始化应用日志信息 - - - - - 开启更新服务监听 - - - - - 软件索引 - - - - - - 软件名称 - - - - - - 软件最新版本 - - - - - - 软件包MD5 - - - - - - 软件包名,不含完整路径 - - - - - - 软件发布日期 - - - - - AUTS_DataService服务名 - - - AUTS_DataService的索引 - - - 数据服务的文件夹路径,不包含版本 - - - 数据服务升级时存放从FTP下载的最新包文件夹路径 - - - 服务本地版本 - - - 数据服务在线状态,0离线,1在线 - - - 服务上一次本地版本 - - - 当前服务正在运行 - - - Log文件夹路径 - - - 设置文件夹路径 - - - 更新服务版本 - - - 更新服务版本 - - - 更新服务名称 - - - 是否已更新过版本 - - - 当前服务正在升级 - - - 等待检测服务 - - - - 初始化服务信息 - - - - - 创建运行时必要文件夹 - - - - - 关闭更新服务 - - - - - 保持与服务的定期通讯 - - - - - 定期更新数据库中服务的状态 - - - - - 定期检查DataService是否需要更新 - - - - - - 检测服务 - - - - - 数据服务正常运行时,检查数据服务更新 - - - - - 从远程获取数据服务信息,安装或覆盖数据服务 - - 服务存在状态,如果服务存在则覆盖原文件,不存在则安装服务 - - - - 获取数据服务的最新信息 - - - - - 重置心跳包失败计数 - - - - - 心跳包通讯失败后,更新心跳包失败计数 - - - - - 重置启动服务失败计数 - - - - - 重启或则启动服务失败后,更新启动服务失败计数,超过计数上限则重置数据服务内容 - - - - - 下载服务包,完成服务安装 - - 数据库中该程序包的信息 - 服务是否已经安装 - - - - 初始化FTP服务类 - - - Ftp远程升级文件夹路径 - - - - 判断本地与云端版本号是否一致,不一致则代表需要更新数据服务 - - 本地数据服务版本号 - 远端数据服务版本号 - - - - - Ftp下载文件 - - Ftp文件路径 - 本地文件路径 - - - - - 校验数据服务包 - - 本地文件路径 - 压缩包信息 - - - - License检测 - - - User - - - - 初始化License内容 - - - - - 获取服务版本信息 - - - - - 初始化网络套接字 - 注册表中无端口号时会引发异常 - - - - - 重启服务后,重置连接服务TCP标志位 - - - - - 与服务通讯,包含发送,接收,处理过程 - - - - - - 校验回复字符串 - - - - - - - - 处理返回值 - - - - - - 获取服务版本信息 - - - - - - 描述服务的状态 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 检测服务是否存在 - - 需要检测的服务名称 - 服务是否存在 - - - - 获取服务的状态 - - 服务名称 - - - - - 安装服务 - - 服务程序所在路径 - 服务状态,未知字段 - - - - 卸载服务 - - 服务程序所在路径 - 服务状态,未知字段 - - - 检测服务---状态 - - - - 开启服务 - - 服务名称 - 开启服务结果 - - - - 关闭服务 - - 服务名称 - 关闭服务结果 - - - - 重启服务 - - 服务名称 - - - - diff --git a/AUTS_UpdateService/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_UpdateService/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index 37f7aa6..0000000 Binary files a/AUTS_UpdateService/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_UpdateService/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index e400a30..0000000 Binary files a/AUTS_UpdateService/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/TempPE/My Project.Application.Designer.vb.dll b/AUTS_UpdateService/obj/Debug/TempPE/My Project.Application.Designer.vb.dll deleted file mode 100644 index 63ef288..0000000 Binary files a/AUTS_UpdateService/obj/Debug/TempPE/My Project.Application.Designer.vb.dll and /dev/null differ diff --git a/AUTS_UpdateService/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_UpdateService/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index e66ac16..0000000 Binary files a/AUTS_UpdateService/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbproj.AssemblyReference.cache b/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbproj.AssemblyReference.cache deleted file mode 100644 index 72f1bf8..0000000 Binary files a/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbproj.AssemblyReference.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbproj.FileListAbsolute.txt b/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbprojAssemblyReference.cache b/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbprojAssemblyReference.cache deleted file mode 100644 index 4c4ceaf..0000000 Binary files a/AUTS_UpdateService/obj/Release/AUTS_UpdateService.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_UpdateService/obj/Release/TempPE/My Project.Application.Designer.vb.dll b/AUTS_UpdateService/obj/Release/TempPE/My Project.Application.Designer.vb.dll deleted file mode 100644 index c4ad0ab..0000000 Binary files a/AUTS_UpdateService/obj/Release/TempPE/My Project.Application.Designer.vb.dll and /dev/null differ diff --git a/AUTS_UpdateService/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_UpdateService/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index da69b1a..0000000 Binary files a/AUTS_UpdateService/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Vendor/bin/Debug/license.dat b/AUTS_Vendor/bin/Debug/license.dat deleted file mode 100644 index 5a0e22c..0000000 --- a/AUTS_Vendor/bin/Debug/license.dat +++ /dev/null @@ -1,22 +0,0 @@ -ID = 1 -VendorName = ml -AuthorizationDate = 2021-05-24 17:22:56 -ExpirationDate = 2021年5月24日 -DefaultUser = Admin -DefaultPassword = Admin -MysqlServer = r1 -MysqlPort = 3307 -MysqlUserID = r2 -MysqlPassword = r3 -MysqlDatabase = r4 -PublicDb = r5 -SqliteName = l1 -SqlitePassword = l2 -FtpHost = d1 -FtpPort = 50 -FtpUser = d2 -FtpPwd = d3 -MAC = m1 -Remark = m2 -UtsVersion = 3 -Signature = this is a valid license data diff --git a/AUTS_Vendor/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb b/AUTS_Vendor/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb deleted file mode 100644 index e7dcac5..0000000 --- a/AUTS_Vendor/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.vb +++ /dev/null @@ -1,7 +0,0 @@ -' - Option Strict Off - Option Explicit On - - Imports System - Imports System.Reflection - diff --git a/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbproj.CopyComplete b/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbproj.CopyComplete deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbproj.FileListAbsolute.txt b/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbproj.FileListAbsolute.txt deleted file mode 100644 index 99ae494..0000000 --- a/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbproj.FileListAbsolute.txt +++ /dev/null @@ -1,389 +0,0 @@ -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\UTS_Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\SharpCompress.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\MySql.Data.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\FlexCell.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Memory.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Buffers.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\UTS_Core.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\UTS_Core.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\MySql.Data.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Memory.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Buffers.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CopyComplete -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\FluentFTP.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\FluentFTP.xml -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\bin\Debug\TeeChart.dll -E:\Sync\UTS\SW\UTS_Studio\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\SharpCompress.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\FluentFTP.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\FlexCell.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\TeeChart.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\MySql.Data.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Memory.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Buffers.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\FluentFTP.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\MySql.Data.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Memory.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Buffers.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.AssemblyReference.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CopyComplete -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -I:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\SharpCompress.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\FluentFTP.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\FlexCell.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\TeeChart.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\MySql.Data.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Memory.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Buffers.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\FluentFTP.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\MySql.Data.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Memory.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Buffers.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbprojAssemblyReference.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -E:\BLV_Sync\RD_PC\Project\UTS_Studio\src\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\SharpCompress.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\FluentFTP.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\FlexCell.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\TeeChart.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\MySql.Data.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Memory.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Buffers.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\FluentFTP.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\MySql.Data.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Memory.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Buffers.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CopyComplete -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -D:\Sync\RD_PC\Project\UTS_Studio\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.AssemblyReference.cache -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\SharpCompress.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\FluentFTP.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\FlexCell.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\TeeChart.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\MySql.Data.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Memory.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Buffers.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.pdb -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\FluentFTP.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\MySql.Data.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Memory.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Buffers.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.AssemblyReference.cache -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CopyComplete -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -C:\Users\yyyyyyyyyyyyyyyyyyyy\Desktop\src-2023-03-15(Zima)\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -E:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -E:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -E:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -E:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\SharpCompress.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\FluentFTP.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\FlexCell.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\TeeChart.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\MySql.Data.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Memory.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Buffers.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -E:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.pdb -E:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -E:\Git\AUTS\AUTS_Vendor\bin\Debug\FluentFTP.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\MySql.Data.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Memory.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Buffers.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -E:\Git\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -E:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbprojAssemblyReference.cache -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CopyComplete -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -E:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -G:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -G:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -G:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -G:\Git\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\SharpCompress.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\FluentFTP.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\FlexCell.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\TeeChart.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\MySql.Data.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Memory.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Buffers.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -G:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.pdb -G:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -G:\Git\AUTS\AUTS_Vendor\bin\Debug\FluentFTP.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\MySql.Data.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Memory.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Buffers.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Text.Encoding.CodePages.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -G:\Git\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -G:\Git\AUTS\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.AssemblyReference.cache -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Ven.B648E70F.Up2Date -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -G:\Git\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe.config -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.exe -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.pdb -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\AUTS_Vendor.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\SharpCompress.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\FluentFTP.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\FlexCell.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Newtonsoft.Json.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\TeeChart.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\MySql.Data.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Data.SQLite.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Memory.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Buffers.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Zstandard.Net.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\BouncyCastle.Crypto.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Ubiety.Dns.Core.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.pdb -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\UTS_Core.dll.config -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\FluentFTP.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Newtonsoft.Json.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\MySql.Data.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Memory.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Buffers.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.pdb -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\Google.Protobuf.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.Streams.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Numerics.Vectors.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\K4os.Compression.LZ4.xml -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\K4os.Hash.xxHash.xml -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.AssemblyReference.cache -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.FrmMain.resources -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.Resources.resources -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.GenerateResource.cache -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.vbproj.CoreCompileInputs.cache -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Ven.B648E70F.Up2Date -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.exe -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.xml -D:\ML\Wen\AUTS\AUTS_Vendor\obj\Debug\AUTS_Vendor.pdb -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\ZstdSharp.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Threading.Tasks.Extensions.dll -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\SharpCompress.pdb -D:\ML\Wen\AUTS\AUTS_Vendor\bin\Debug\System.Threading.Tasks.Extensions.xml diff --git a/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbprojAssemblyReference.cache b/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbprojAssemblyReference.cache deleted file mode 100644 index 846831c..0000000 Binary files a/AUTS_Vendor/obj/Debug/AUTS_Vendor.vbprojAssemblyReference.cache and /dev/null differ diff --git a/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-张树友_Win10.cache b/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-张树友_Win10.cache deleted file mode 100644 index 142deab..0000000 Binary files a/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferences-冲突-张树友_Win10.cache and /dev/null differ diff --git a/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferences.cache deleted file mode 100644 index 4107106..0000000 Binary files a/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ diff --git a/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index eb70fab..0000000 Binary files a/AUTS_Vendor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/AUTS_Vendor/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Vendor/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 484bbb4..0000000 Binary files a/AUTS_Vendor/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ diff --git a/AUTS_Vendor/obj/Release/AUTS_Vendor.vbproj.FileListAbsolute.txt b/AUTS_Vendor/obj/Release/AUTS_Vendor.vbproj.FileListAbsolute.txt deleted file mode 100644 index e69de29..0000000 diff --git a/AUTS_Vendor/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/AUTS_Vendor/obj/Release/TempPE/My Project.Resources.Designer.vb.dll deleted file mode 100644 index 193695a..0000000 Binary files a/AUTS_Vendor/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ