diff --git a/Documentation/dev-tools/kcov.rst b/Documentation/dev-tools/kcov.rst index 42b612677799..36890b026e77 100644 --- a/Documentation/dev-tools/kcov.rst +++ b/Documentation/dev-tools/kcov.rst @@ -34,6 +34,7 @@ Profiling data will only become accessible once debugfs has been mounted:: Coverage collection ------------------- + The following program demonstrates coverage collection from within a test program using kcov: @@ -128,6 +129,7 @@ only need to enable coverage (disable happens automatically on thread end). Comparison operands collection ------------------------------ + Comparison operands collection is similar to coverage collection: .. code-block:: c @@ -202,3 +204,130 @@ Comparison operands collection is similar to coverage collection: Note that the kcov modes (coverage collection or comparison operands) are mutually exclusive. + +Remote coverage collection +-------------------------- + +With KCOV_ENABLE coverage is collected only for syscalls that are issued +from the current process. With KCOV_REMOTE_ENABLE it's possible to collect +coverage for arbitrary parts of the kernel code, provided that those parts +are annotated with kcov_remote_start()/kcov_remote_stop(). + +This allows to collect coverage from two types of kernel background +threads: the global ones, that are spawned during kernel boot in a limited +number of instances (e.g. one USB hub_event() worker thread is spawned per +USB HCD); and the local ones, that are spawned when a user interacts with +some kernel interface (e.g. vhost workers). + +To enable collecting coverage from a global background thread, a unique +global handle must be assigned and passed to the corresponding +kcov_remote_start() call. Then a userspace process can pass a list of such +handles to the KCOV_REMOTE_ENABLE ioctl in the handles array field of the +kcov_remote_arg struct. This will attach the used kcov device to the code +sections, that are referenced by those handles. + +Since there might be many local background threads spawned from different +userspace processes, we can't use a single global handle per annotation. +Instead, the userspace process passes a non-zero handle through the +common_handle field of the kcov_remote_arg struct. This common handle gets +saved to the kcov_handle field in the current task_struct and needs to be +passed to the newly spawned threads via custom annotations. Those threads +should in turn be annotated with kcov_remote_start()/kcov_remote_stop(). + +Internally kcov stores handles as u64 integers. The top byte of a handle +is used to denote the id of a subsystem that this handle belongs to, and +the lower 4 bytes are used to denote the id of a thread instance within +that subsystem. A reserved value 0 is used as a subsystem id for common +handles as they don't belong to a particular subsystem. The bytes 4-7 are +currently reserved and must be zero. In the future the number of bytes +used for the subsystem or handle ids might be increased. + +When a particular userspace proccess collects coverage by via a common +handle, kcov will collect coverage for each code section that is annotated +to use the common handle obtained as kcov_handle from the current +task_struct. However non common handles allow to collect coverage +selectively from different subsystems. + +.. code-block:: c + + struct kcov_remote_arg { + unsigned trace_mode; + unsigned area_size; + unsigned num_handles; + uint64_t common_handle; + uint64_t handles[0]; + }; + + #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long) + #define KCOV_DISABLE _IO('c', 101) + #define KCOV_REMOTE_ENABLE _IOW('c', 102, struct kcov_remote_arg) + + #define COVER_SIZE (64 << 10) + + #define KCOV_TRACE_PC 0 + + #define KCOV_SUBSYSTEM_COMMON (0x00ull << 56) + #define KCOV_SUBSYSTEM_USB (0x01ull << 56) + + #define KCOV_SUBSYSTEM_MASK (0xffull << 56) + #define KCOV_INSTANCE_MASK (0xffffffffull) + + static inline __u64 kcov_remote_handle(__u64 subsys, __u64 inst) + { + if (subsys & ~KCOV_SUBSYSTEM_MASK || inst & ~KCOV_INSTANCE_MASK) + return 0; + return subsys | inst; + } + + #define KCOV_COMMON_ID 0x42 + #define KCOV_USB_BUS_NUM 1 + + int main(int argc, char **argv) + { + int fd; + unsigned long *cover, n, i; + struct kcov_remote_arg *arg; + + fd = open("/sys/kernel/debug/kcov", O_RDWR); + if (fd == -1) + perror("open"), exit(1); + if (ioctl(fd, KCOV_INIT_TRACE, COVER_SIZE)) + perror("ioctl"), exit(1); + cover = (unsigned long*)mmap(NULL, COVER_SIZE * sizeof(unsigned long), + PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if ((void*)cover == MAP_FAILED) + perror("mmap"), exit(1); + + /* Enable coverage collection via common handle and from USB bus #1. */ + arg = calloc(1, sizeof(*arg) + sizeof(uint64_t)); + if (!arg) + perror("calloc"), exit(1); + arg->trace_mode = KCOV_TRACE_PC; + arg->area_size = COVER_SIZE; + arg->num_handles = 1; + arg->common_handle = kcov_remote_handle(KCOV_SUBSYSTEM_COMMON, + KCOV_COMMON_ID); + arg->handles[0] = kcov_remote_handle(KCOV_SUBSYSTEM_USB, + KCOV_USB_BUS_NUM); + if (ioctl(fd, KCOV_REMOTE_ENABLE, arg)) + perror("ioctl"), free(arg), exit(1); + free(arg); + + /* + * Here the user needs to trigger execution of a kernel code section + * that is either annotated with the common handle, or to trigger some + * activity on USB bus #1. + */ + sleep(2); + + n = __atomic_load_n(&cover[0], __ATOMIC_RELAXED); + for (i = 0; i < n; i++) + printf("0x%lx\n", cover[i + 1]); + if (ioctl(fd, KCOV_DISABLE, 0)) + perror("ioctl"), exit(1); + if (munmap(cover, COVER_SIZE * sizeof(unsigned long))) + perror("munmap"), exit(1); + if (close(fd)) + perror("close"), exit(1); + return 0; + } diff --git a/Makefile b/Makefile index b7904ae3dfb8..c4362db25701 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 11 +SUBLEVEL = 12 EXTRAVERSION = NAME = Kleptomaniac Octopus diff --git a/abi_gki_aarch64.xml b/abi_gki_aarch64.xml index 286187d01e5a..3ed0c80386ea 100644 --- a/abi_gki_aarch64.xml +++ b/abi_gki_aarch64.xml @@ -1163,12 +1163,12 @@ - - + + - - + + @@ -2103,7 +2103,7 @@ - + @@ -2170,7 +2170,7 @@ - + @@ -2196,7 +2196,7 @@ - + @@ -3361,27 +3361,27 @@ - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + @@ -4868,7 +4868,7 @@ - + @@ -4943,7 +4943,7 @@ - + @@ -5192,7 +5192,7 @@ - + @@ -5354,43 +5354,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5847,7 +5847,7 @@ - + @@ -6830,7 +6830,7 @@ - + @@ -15887,7 +15887,7 @@ - + @@ -17161,8 +17161,8 @@ - - + + @@ -17773,7 +17773,7 @@ - + @@ -18034,7 +18034,7 @@ - + @@ -20054,7 +20054,7 @@ - + @@ -20596,7 +20596,7 @@ - + @@ -20837,12 +20837,12 @@ - + - + @@ -20952,7 +20952,45 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20969,13 +21007,14 @@ - - - - - - - + + + + + + + + @@ -20994,12 +21033,12 @@ - + - + @@ -21027,7 +21066,7 @@ - + @@ -21075,13 +21114,13 @@ - + - - + + @@ -21108,8 +21147,8 @@ - - + + @@ -21141,223 +21180,227 @@ - - + + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - - + + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -21386,7 +21429,7 @@ - + @@ -21398,7 +21441,7 @@ - + @@ -21446,10 +21489,10 @@ - + - + @@ -21458,7 +21501,7 @@ - + @@ -21473,7 +21516,7 @@ - + @@ -21512,7 +21555,7 @@ - + @@ -21539,21 +21582,21 @@ - + - + - + - + - + @@ -21561,7 +21604,7 @@ - + @@ -21578,15 +21621,15 @@ - + - + - + @@ -21594,12 +21637,12 @@ - + - + @@ -21616,8 +21659,8 @@ - - + + @@ -21625,7 +21668,7 @@ - + @@ -21649,7 +21692,7 @@ - + @@ -21657,7 +21700,7 @@ - + @@ -21815,7 +21858,7 @@ - + @@ -21883,12 +21926,12 @@ - + - + - + @@ -21909,7 +21952,7 @@ - + @@ -21938,13 +21981,13 @@ - + - + - + @@ -21965,16 +22008,16 @@ - + - + - + - + @@ -21985,7 +22028,7 @@ - + @@ -21996,10 +22039,10 @@ - + - + @@ -22010,15 +22053,15 @@ - + - + - + @@ -22026,7 +22069,7 @@ - + @@ -22037,20 +22080,20 @@ - + - + - + - + - + @@ -22059,7 +22102,7 @@ - + @@ -22070,15 +22113,15 @@ - + - + - + - + @@ -22186,10 +22229,10 @@ - + - + @@ -22198,9 +22241,9 @@ - + - + @@ -22209,7 +22252,7 @@ - + @@ -22218,7 +22261,7 @@ - + @@ -22244,7 +22287,7 @@ - + @@ -22252,7 +22295,7 @@ - + @@ -22263,28 +22306,28 @@ - + - + - + - - - + + + - + - + @@ -22293,13 +22336,13 @@ - - + + - + - + @@ -22322,16 +22365,16 @@ - + - + - + - + @@ -22360,22 +22403,22 @@ - + - + - + - + - + @@ -22398,7 +22441,7 @@ - + @@ -22412,7 +22455,7 @@ - + @@ -22421,50 +22464,50 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -22479,34 +22522,34 @@ - + - + - + - + - + - + - + @@ -22518,16 +22561,16 @@ - + - + - + - + @@ -22541,7 +22584,7 @@ - + @@ -22550,16 +22593,16 @@ - + - + - + - + @@ -22574,25 +22617,25 @@ - + - + - + - + @@ -22600,13 +22643,13 @@ - + - + - + @@ -22635,13 +22678,13 @@ - + - + @@ -22650,34 +22693,34 @@ - + - + - + - + - + - + - + - + - + @@ -22685,9 +22728,9 @@ - + - + @@ -22696,68 +22739,103 @@ - - + + - + + + + + + + + + + + + + + + - + - + - + - + - - + + - + - + + + - + - + - + + + + - + - + - + - + - + - - - - - - - - - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -22766,74 +22844,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22845,7 +22923,7 @@ - + @@ -22878,10 +22956,10 @@ - + - + @@ -22896,7 +22974,7 @@ - + @@ -22905,25 +22983,25 @@ - + - + - + - + - + - + - + @@ -22938,7 +23016,7 @@ - + @@ -22950,10 +23028,10 @@ - + - + @@ -22962,10 +23040,10 @@ - + - + @@ -22973,7 +23051,7 @@ - + @@ -22987,7 +23065,7 @@ - + @@ -23014,7 +23092,7 @@ - + @@ -23040,15 +23118,15 @@ - + - + - + - + @@ -23056,48 +23134,48 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -23112,7 +23190,7 @@ - + @@ -23123,7 +23201,7 @@ - + @@ -23134,10 +23212,10 @@ - + - + @@ -23145,27 +23223,27 @@ - + - + - + - + - + - + - + - + @@ -23183,12 +23261,12 @@ - + - + - + @@ -23197,10 +23275,10 @@ - + - + @@ -23208,12 +23286,12 @@ - + - + - + @@ -23246,7 +23324,7 @@ - + @@ -23255,7 +23333,7 @@ - + @@ -23267,30 +23345,30 @@ - + - + - + - + - + - + - + @@ -23299,13 +23377,13 @@ - + - + - + @@ -23332,10 +23410,10 @@ - + - + @@ -23344,7 +23422,7 @@ - + @@ -23377,27 +23455,27 @@ - + - + - + - + - + - + - + @@ -23408,15 +23486,15 @@ - + - + - + @@ -23424,40 +23502,40 @@ - + - + - + - + - + - + - + - + - + - + @@ -23465,7 +23543,7 @@ - + @@ -23473,7 +23551,7 @@ - + @@ -23496,33 +23574,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -23531,13 +23609,13 @@ - + - + @@ -23588,7 +23666,7 @@ - + @@ -23597,10 +23675,10 @@ - + - + @@ -23615,13 +23693,13 @@ - + - + @@ -23636,7 +23714,7 @@ - + @@ -23663,7 +23741,7 @@ - + @@ -23678,13 +23756,13 @@ - + - + @@ -23708,10 +23786,10 @@ - + - + @@ -23728,19 +23806,19 @@ - + - + - + - + - + @@ -23748,19 +23826,19 @@ - + - + - + - + @@ -23775,22 +23853,22 @@ - + - + - + - + - + @@ -23814,7 +23892,7 @@ - + @@ -23826,22 +23904,22 @@ - + - - + + - + - + @@ -23849,7 +23927,7 @@ - + @@ -23857,20 +23935,20 @@ - + - - - + + + - + - + @@ -23885,15 +23963,15 @@ - + - + - + @@ -23902,7 +23980,7 @@ - + @@ -23917,108 +23995,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + @@ -24035,7 +24113,7 @@ - + @@ -24062,7 +24140,7 @@ - + @@ -24095,10 +24173,10 @@ - - + + - + @@ -24122,10 +24200,10 @@ - + - + @@ -24149,13 +24227,13 @@ - + - + @@ -24176,7 +24254,7 @@ - + @@ -24191,10 +24269,10 @@ - + - + @@ -24202,7 +24280,7 @@ - + @@ -24211,7 +24289,7 @@ - + @@ -24222,7 +24300,7 @@ - + @@ -24235,7 +24313,7 @@ - + @@ -24252,9 +24330,9 @@ - + - + @@ -24263,13 +24341,13 @@ - + - + - + @@ -24278,13 +24356,13 @@ - + - + - + @@ -24314,7 +24392,7 @@ - + @@ -24325,13 +24403,13 @@ - + - + @@ -24343,31 +24421,31 @@ - + - + - + - + - + - + - + - + @@ -24444,16 +24522,16 @@ - + - + - + @@ -24461,27 +24539,27 @@ - + - + - + - + - + - + - + - + @@ -24582,7 +24660,7 @@ - + @@ -24590,10 +24668,10 @@ - + - + @@ -24608,8 +24686,8 @@ - - + + @@ -24626,18 +24704,18 @@ - + - + - - - + + + @@ -24651,45 +24729,57 @@ - - + + - + - + - + - - - - - - - - - - + - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + - - + + + @@ -24697,174 +24787,177 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -24887,7 +24980,7 @@ - + @@ -24896,315 +24989,315 @@ - + - - + + - - + + - + - + - + - + - + - - + + - - - + + + - - + + - + - - + + - - + + - + - - + + - + - - + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + + - - + + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - - - + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + + + - - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + + + + + + + + + + + - + @@ -25212,7 +25305,7 @@ - + @@ -25220,10 +25313,9 @@ - - + @@ -25241,9 +25333,9 @@ - - - + + + @@ -25254,11 +25346,11 @@ - + - + @@ -25268,7 +25360,7 @@ - + @@ -25290,56 +25382,56 @@ - - + + - + - - + + - - - - - - - + + + + + + + - - + + - + - - + + - + - + - - + + - + - + @@ -25350,9 +25442,9 @@ - + - + @@ -25361,7 +25453,7 @@ - + @@ -25370,7 +25462,7 @@ - + @@ -25388,7 +25480,7 @@ - + @@ -25397,7 +25489,7 @@ - + @@ -25405,9 +25497,9 @@ - + - + @@ -25422,7 +25514,7 @@ - + @@ -25446,7 +25538,7 @@ - + @@ -25484,10 +25576,10 @@ - + - + @@ -25496,10 +25588,10 @@ - + - + @@ -25514,12 +25606,12 @@ - + - + @@ -25530,8 +25622,8 @@ - - + + @@ -25539,10 +25631,10 @@ - + - + @@ -25559,7 +25651,7 @@ - + @@ -25588,7 +25680,7 @@ - + @@ -25603,87 +25695,87 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25710,10 +25802,10 @@ - + - + @@ -25724,22 +25816,22 @@ - + - + - + - + - + @@ -25750,7 +25842,7 @@ - + @@ -25761,24 +25853,24 @@ - + - + - + - + - + - + - + @@ -25786,15 +25878,15 @@ - + - + - + @@ -25806,7 +25898,7 @@ - + @@ -25824,7 +25916,7 @@ - + @@ -25850,16 +25942,16 @@ - + - + - + @@ -25873,7 +25965,7 @@ - + @@ -25887,7 +25979,7 @@ - + @@ -25922,22 +26014,22 @@ - + - + - + - + @@ -25955,7 +26047,7 @@ - + @@ -25967,7 +26059,7 @@ - + @@ -25988,7 +26080,7 @@ - + @@ -26036,25 +26128,25 @@ - + - + - + - + - + @@ -26066,19 +26158,19 @@ - + - + - + - + @@ -26093,7 +26185,7 @@ - + @@ -26102,22 +26194,22 @@ - - + + - + - - + + - + - + @@ -26128,7 +26220,7 @@ - + @@ -26145,7 +26237,7 @@ - + @@ -26170,7 +26262,7 @@ - + @@ -26302,7 +26394,7 @@ - + @@ -26310,9 +26402,9 @@ - + - + @@ -26327,7 +26419,7 @@ - + @@ -26336,7 +26428,7 @@ - + @@ -26351,23 +26443,23 @@ - + - + - + - + @@ -26377,9 +26469,9 @@ - + - + @@ -26387,7 +26479,7 @@ - + @@ -26406,10 +26498,10 @@ - + - + @@ -26435,13 +26527,13 @@ - + - + - + @@ -26455,7 +26547,7 @@ - + @@ -26463,10 +26555,10 @@ - + - + @@ -26483,18 +26575,18 @@ - + - + - + - + @@ -26505,7 +26597,7 @@ - + @@ -26513,16 +26605,16 @@ - - + + - + - + @@ -26534,7 +26626,7 @@ - + @@ -26543,7 +26635,7 @@ - + @@ -26555,19 +26647,19 @@ - + - + - + - + - + @@ -26576,20 +26668,20 @@ - + - + - + - + - + @@ -26598,24 +26690,24 @@ - + - + - - + + - + - + @@ -26644,15 +26736,15 @@ - + - + - + @@ -26681,7 +26773,7 @@ - + @@ -26689,7 +26781,7 @@ - + @@ -26697,7 +26789,7 @@ - + @@ -26705,7 +26797,7 @@ - + @@ -26713,9 +26805,9 @@ - + - + @@ -26736,17 +26828,17 @@ - + - + - + - + - + @@ -26758,9 +26850,9 @@ - + - + @@ -26772,27 +26864,13 @@ - - - - - - - - - - - - - - - - + + - + @@ -26801,19 +26879,19 @@ - + - + - + - + - + @@ -26825,8 +26903,8 @@ - - + + @@ -26837,13 +26915,13 @@ - + - + @@ -26878,7 +26956,7 @@ - + @@ -26886,7 +26964,7 @@ - + @@ -26894,66 +26972,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -26974,7 +27050,7 @@ - + @@ -26991,120 +27067,120 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - - + + - - + + - - + + - - - + + + - + - - + + - - + + - - + + - + @@ -27123,7 +27199,7 @@ - + @@ -27158,18 +27234,18 @@ - - - - + + + + - + - + @@ -27186,7 +27262,7 @@ - + @@ -27194,11 +27270,11 @@ - + - + - + @@ -27211,7 +27287,7 @@ - + @@ -27222,7 +27298,7 @@ - + @@ -27233,7 +27309,7 @@ - + @@ -27241,7 +27317,7 @@ - + @@ -27251,18 +27327,18 @@ - + - + - + @@ -27271,15 +27347,15 @@ - + - + - + @@ -27290,7 +27366,7 @@ - + @@ -27298,55 +27374,55 @@ - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - + @@ -27360,8 +27436,8 @@ - - + + @@ -27372,17 +27448,17 @@ - + - + - + @@ -27408,7 +27484,7 @@ - + @@ -27422,68 +27498,68 @@ - - + + - + - + - - + + - - + + - + - - + + - + - + - - + + - - + + - + - + @@ -27513,22 +27589,22 @@ - + - + - - - + + + - + @@ -27539,7 +27615,7 @@ - + @@ -27558,25 +27634,25 @@ - - + + - + - + - - + + @@ -27590,15 +27666,15 @@ - + - + - + @@ -27623,17 +27699,17 @@ - - - + + + - + - + @@ -27641,7 +27717,7 @@ - + @@ -27656,16 +27732,16 @@ - + - + - + - + @@ -27680,42 +27756,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27728,7 +27804,7 @@ - + @@ -27736,26 +27812,26 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -27790,65 +27866,65 @@ - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - + - - + + - - - + + + - - + + - - + + @@ -27933,7 +28009,7 @@ - + @@ -27941,9 +28017,9 @@ - - - + + + @@ -27960,7 +28036,7 @@ - + @@ -27968,7 +28044,7 @@ - + @@ -27982,7 +28058,7 @@ - + @@ -28017,9 +28093,9 @@ - + - + @@ -28028,7 +28104,7 @@ - + @@ -28036,12 +28112,12 @@ - + - + - + @@ -28072,7 +28148,7 @@ - + @@ -28080,26 +28156,26 @@ - - + + - + - + - + - + - + @@ -28112,7 +28188,7 @@ - + @@ -28123,7 +28199,7 @@ - + @@ -28134,7 +28210,7 @@ - + @@ -28142,13 +28218,13 @@ - + - + @@ -28162,22 +28238,22 @@ - - + + - + - + - - + + @@ -28197,7 +28273,7 @@ - + @@ -28208,19 +28284,19 @@ - + - - - - + + + + - + @@ -28262,22 +28338,22 @@ - + - + - + - + @@ -28291,7 +28367,7 @@ - + @@ -28345,7 +28421,7 @@ - + @@ -28354,18 +28430,18 @@ - + - + - - + + @@ -28378,15 +28454,15 @@ - + - - - - + + + + @@ -28400,8 +28476,8 @@ - - + + @@ -28415,14 +28491,14 @@ - + - + - + @@ -28512,16 +28588,16 @@ - + - + - + @@ -28560,8 +28636,8 @@ - - + + @@ -28571,7 +28647,7 @@ - + @@ -28588,21 +28664,29 @@ - + - - - + + + + + + + + + + + - - - + + + @@ -28612,13 +28696,13 @@ - + - - + + @@ -28664,9 +28748,9 @@ - + - + @@ -28681,10 +28765,10 @@ - + - + @@ -28702,36 +28786,36 @@ - + - + - + - + - + - + - + @@ -28746,8 +28830,8 @@ - - + + @@ -28766,44 +28850,44 @@ - + - + - + - + - - - + + + - + - + - + - + - + @@ -28812,15 +28896,15 @@ - + - + - + @@ -28829,7 +28913,7 @@ - + @@ -28839,7 +28923,7 @@ - + @@ -28847,13 +28931,13 @@ - + - + @@ -28864,13 +28948,13 @@ - + - + - + @@ -28884,19 +28968,19 @@ - + - + - + - + @@ -28906,23 +28990,23 @@ - + - + - + - + - + - + @@ -28936,7 +29020,7 @@ - + @@ -28956,33 +29040,33 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + + + + + - - + + @@ -29013,85 +29097,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29102,7 +29186,7 @@ - + @@ -29117,7 +29201,7 @@ - + @@ -29128,25 +29212,25 @@ - - - + + + - - + + - + - + - + @@ -29155,183 +29239,39 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -29342,39 +29282,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -29385,10 +29293,10 @@ - + - + @@ -29402,23 +29310,7 @@ - - - - - - - - - - - - - - - - - + @@ -29429,24 +29321,24 @@ - + - + - + - + - + - + @@ -29458,7 +29350,7 @@ - + @@ -29470,7 +29362,7 @@ - + @@ -29478,73 +29370,79 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -29555,190 +29453,188 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - - + + - + - - - - + + + + - - - - - - - + + + - + + + + + - - + + - - - + + + - - + + - + - - - - + + + + - - + + - + - - - + + + - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - + @@ -29761,7 +29657,7 @@ - + @@ -29775,9 +29671,9 @@ - + - + @@ -29787,10 +29683,10 @@ - + - + @@ -29808,7 +29704,7 @@ - + @@ -29823,19 +29719,19 @@ - + - + - + - + - + @@ -29913,7 +29809,7 @@ - + @@ -29946,7 +29842,7 @@ - + @@ -30003,7 +29899,7 @@ - + @@ -30012,65 +29908,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30081,21 +29977,21 @@ - + - + - + - + @@ -30106,7 +30002,7 @@ - + @@ -30119,7 +30015,7 @@ - + @@ -30132,13 +30028,13 @@ - + - + @@ -30156,7 +30052,7 @@ - + @@ -30186,8 +30082,8 @@ - - + + @@ -30195,8 +30091,8 @@ - - + + @@ -30204,108 +30100,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30341,16 +30237,16 @@ - + - + - + - + @@ -30362,10 +30258,10 @@ - + - + @@ -30379,27 +30275,27 @@ - + - + - + - + - + - + - + - + @@ -30420,10 +30316,10 @@ - + - + @@ -30435,7 +30331,7 @@ - + @@ -30446,13 +30342,13 @@ - + - + - + @@ -30460,8 +30356,8 @@ - - + + @@ -30472,7 +30368,7 @@ - + @@ -30486,7 +30382,7 @@ - + @@ -30497,7 +30393,7 @@ - + @@ -30511,7 +30407,7 @@ - + @@ -30525,10 +30421,10 @@ - + - + @@ -30555,7 +30451,7 @@ - + @@ -30570,29 +30466,29 @@ - + - + - + - + - + - + - + - + @@ -30615,31 +30511,31 @@ - + - + - + - + - + - + - + - + - + @@ -30660,7 +30556,7 @@ - + @@ -30698,10 +30594,10 @@ - + - + @@ -30725,20 +30621,20 @@ - + - + - + - - + + @@ -30746,7 +30642,7 @@ - + @@ -30754,26 +30650,26 @@ - + - + - + - + - + - + - + - + @@ -30802,20 +30698,20 @@ - + - + - + - + - + @@ -30824,18 +30720,18 @@ - + - + - + - + - + @@ -30844,10 +30740,10 @@ - + - + @@ -30855,7 +30751,7 @@ - + @@ -30863,22 +30759,22 @@ - + - + - + - + - + - + @@ -30890,27 +30786,27 @@ - + - + - + - + - + - + - + @@ -30921,7 +30817,7 @@ - + @@ -30930,7 +30826,7 @@ - + @@ -30959,21 +30855,7 @@ - - - - - - - - - - - - - - - + @@ -30981,10 +30863,10 @@ - + - + @@ -30993,7 +30875,7 @@ - + @@ -31001,9 +30883,9 @@ - + - + @@ -31015,17 +30897,17 @@ - + - + - + - - + + @@ -31033,7 +30915,7 @@ - + @@ -31041,88 +30923,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -31280,8 +31162,8 @@ - - + + @@ -31289,13 +31171,13 @@ - + - + @@ -31303,21 +31185,21 @@ - - + + - + - + - + - + @@ -31331,483 +31213,483 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - - - - - - - - - - - + + - - - + - + - - + - - - + + + - - + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - - - - - - - - - - - - - + + + - - - + + - + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - + + + - - - + + + - - + + + - - + + + + + + + + + + + + + + - - + + - - + + - - + + - + - + - + - - - - - - - - - - - + - - + + + - + + + + + + + + + + - - + + - + - - - - - - - - - - - - + - + + - + + + - + - - + - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + @@ -31822,16 +31704,16 @@ - - + + - + - + @@ -31859,16 +31741,16 @@ - - + + - + - + @@ -31879,15 +31761,15 @@ - + - + - + - + @@ -31907,7 +31789,7 @@ - + @@ -31915,7 +31797,7 @@ - + @@ -31931,15 +31813,15 @@ - + - + - + @@ -31971,45 +31853,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -32024,49 +31906,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -32075,14 +31957,14 @@ - + - + - + - + @@ -32100,41 +31982,41 @@ - + - + - + - - + + - + - + - + - + - + @@ -32143,36 +32025,36 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -32181,7 +32063,7 @@ - + @@ -32192,19 +32074,19 @@ - + - + - + - + @@ -32212,29 +32094,29 @@ - + - + - + - + - + - + - + - + - + @@ -32246,15 +32128,15 @@ - + - + - + - + @@ -32266,7 +32148,7 @@ - + @@ -32274,24 +32156,24 @@ - + - + - + - + - + - + - + @@ -32305,156 +32187,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - - + + - - - - - - - - - - - - - + + - - - + - - + + + + - - - - - + + + + + + - + + + + + + + + + + + - - + + - + - + - - - - - - - - - - - - + + - - - + + + + - + - + + - + + + + + + + + + - + - + - + @@ -32468,7 +32350,7 @@ - + @@ -32480,7 +32362,7 @@ - + @@ -32494,7 +32376,7 @@ - + @@ -32540,18 +32422,18 @@ - + - + - + @@ -32571,158 +32453,147 @@ - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + - + - - - - - - - - - - - - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -32731,17 +32602,17 @@ - - - + + + - - + + @@ -32750,7 +32621,7 @@ - + @@ -32764,35 +32635,35 @@ - + - + - + - + - + - - + + - + @@ -32812,13 +32683,13 @@ - + - + - + @@ -32830,7 +32701,7 @@ - + @@ -32838,59 +32709,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -32902,16 +32773,16 @@ - - + + - + - + - + @@ -32931,190 +32802,190 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - - - - - - + + - - + + - - + + - + + + + + + + + + + + + + + + - + + + + - - - - - - - - - - - - - - + + - - - - - - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -33138,80 +33009,80 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - - + + + + + - - + + - + - + - + @@ -33220,7 +33091,7 @@ - + @@ -33271,7 +33142,7 @@ - + @@ -33280,7 +33151,7 @@ - + @@ -33340,7 +33211,7 @@ - + @@ -33349,7 +33220,7 @@ - + @@ -33361,7 +33232,7 @@ - + @@ -33475,13 +33346,13 @@ - + - + @@ -33493,16 +33364,16 @@ - + - + - + @@ -33517,12 +33388,12 @@ - + - + @@ -33531,13 +33402,13 @@ - + - + @@ -33546,10 +33417,10 @@ - + - + @@ -33579,7 +33450,7 @@ - + @@ -33597,33 +33468,33 @@ - + - + - + - + - + - + - - + + - + - + @@ -33632,7 +33503,7 @@ - + @@ -33640,34 +33511,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -33676,10 +33547,10 @@ - + - + @@ -33699,37 +33570,37 @@ - + - + - + - + - + - + - + - + - - + + - + @@ -33737,99 +33608,99 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - - + + - - + + + + + + + + + + + - - - - - - - - - - + - - + + + + + + + + + + + - - + + - - - + + - - - - - - - - - + @@ -33844,102 +33715,102 @@ - + - + - + - + - + - + - + - + - + - + - - + + + + - - - - + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + @@ -33954,81 +33825,81 @@ - - + + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -34052,12 +33923,12 @@ - - + + - + @@ -34083,22 +33954,22 @@ - + - + - + - + @@ -34106,20 +33977,20 @@ - + - + - + - + - + @@ -34140,13 +34011,13 @@ - + - + - + @@ -34161,16 +34032,16 @@ - + - + - + @@ -34182,7 +34053,7 @@ - + @@ -34194,7 +34065,7 @@ - + @@ -34208,7 +34079,7 @@ - + @@ -34223,13 +34094,13 @@ - + - + @@ -34253,19 +34124,19 @@ - + - + - + - + @@ -34358,50 +34229,50 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -34442,16 +34313,16 @@ - + - + - + - + @@ -34496,7 +34367,7 @@ - + @@ -34516,8 +34387,8 @@ - - + + @@ -34525,113 +34396,113 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -34645,12 +34516,12 @@ - + - + - + @@ -34659,26 +34530,26 @@ - + - + - + - + - + - + @@ -34687,193 +34558,193 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + - - - + + + - - + - - - - - - - - - - - + - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + - - + + - - + + - - + + - + - + - + - + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + - - - - - + - + - + @@ -34885,7 +34756,7 @@ - + @@ -34893,7 +34764,7 @@ - + @@ -34902,10 +34773,10 @@ - + - + @@ -34926,7 +34797,7 @@ - + @@ -34934,7 +34805,7 @@ - + @@ -34945,13 +34816,13 @@ - + - + - + @@ -34987,24 +34858,24 @@ - + - + - + - + - + - + @@ -35016,7 +34887,7 @@ - + @@ -35024,109 +34895,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -35134,7 +35005,7 @@ - + @@ -35143,14 +35014,14 @@ - + - + @@ -35173,21 +35044,21 @@ - + - + - + - + - + @@ -35223,16 +35094,16 @@ - + - + - + - + @@ -35277,10 +35148,10 @@ - - + + - + @@ -35289,16 +35160,16 @@ - + - + - + @@ -35319,7 +35190,7 @@ - + @@ -35330,18 +35201,18 @@ - + - + - + - + @@ -35350,43 +35221,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -35401,63 +35272,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -35475,10 +35346,10 @@ - + - + @@ -35487,278 +35358,278 @@ - + - + - + - + - + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + - - - + + + - + + + - - + + - - - + + - - - - - - - - - - - - + - - + + + + + + + + + + + + + - - + + + - - - - - - - - - - - - - + - - + + - - + + - - + + + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + - - + + + + + + + + + + + + + + + + + + + - + @@ -35771,21 +35642,21 @@ - - + + - - + + - + - + @@ -35793,37 +35664,37 @@ - + - + - - - - + + + + - + - + - + - + @@ -35832,13 +35703,13 @@ - + - + - + @@ -35856,10 +35727,10 @@ - + - + @@ -35898,7 +35769,7 @@ - + @@ -35922,112 +35793,112 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36036,9 +35907,9 @@ - + - + @@ -36050,7 +35921,7 @@ - + @@ -36064,10 +35935,10 @@ - + - + @@ -36075,12 +35946,12 @@ - + - + - + @@ -36092,110 +35963,110 @@ - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + + + + + + + + + + - + + - - - - - - - - - - - + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + @@ -36204,13 +36075,13 @@ - + - + - + @@ -36237,9 +36108,9 @@ - + - + @@ -36254,44 +36125,44 @@ - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + @@ -36301,65 +36172,65 @@ - + - - - + + + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36383,7 +36254,7 @@ - + @@ -36392,7 +36263,7 @@ - + @@ -36404,21 +36275,21 @@ - + - + - + - + - + - + @@ -36472,9 +36343,9 @@ - + - + @@ -36486,10 +36357,10 @@ - + - + @@ -36498,12 +36369,12 @@ - + - + - + @@ -36524,15 +36395,15 @@ - + - + - + - + @@ -36543,19 +36414,19 @@ - + - + - + - + @@ -36579,13 +36450,13 @@ - + - + - + @@ -36603,7 +36474,7 @@ - + @@ -36633,7 +36504,7 @@ - + @@ -36672,10 +36543,10 @@ - + - + @@ -36683,10 +36554,10 @@ - + - + @@ -36713,7 +36584,7 @@ - + @@ -36722,161 +36593,161 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36890,7 +36761,7 @@ - + @@ -36898,13 +36769,13 @@ - + - + @@ -36942,7 +36813,7 @@ - + @@ -36974,7 +36845,7 @@ - + @@ -36998,7 +36869,7 @@ - + @@ -37015,15 +36886,15 @@ - + - + - + - + @@ -37037,410 +36908,410 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + - + - - + + - - + + + + + + + + + + + + + - - - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + - - + + - - + + - - + + - - + + + + + + + + + + + + - - + + - - - - - - - - - - - + - - + + - - + + - - - + + + - + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + + + + + + + + + + - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - + - - + + - + - + - + - + @@ -37494,7 +37365,7 @@ - + @@ -37503,19 +37374,19 @@ - + - + - + - + - + @@ -37524,7 +37395,7 @@ - + @@ -37535,55 +37406,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37616,13 +37487,13 @@ - + - + - + @@ -37631,10 +37502,10 @@ - + - + @@ -37649,7 +37520,7 @@ - + @@ -37676,28 +37547,28 @@ - + - + - + - + - + @@ -37708,10 +37579,10 @@ - + - + @@ -37728,18 +37599,18 @@ - + - + - + - + - + @@ -37748,16 +37619,16 @@ - + - + - + @@ -37768,7 +37639,7 @@ - + @@ -37803,27 +37674,27 @@ - + - + - + - + - + - + @@ -37838,91 +37709,91 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37931,16 +37802,16 @@ - + - + - + - + @@ -37955,10 +37826,10 @@ - + - + @@ -37979,27 +37850,27 @@ - + - + - + - + - + - + @@ -38008,7 +37879,7 @@ - + @@ -38017,7 +37888,7 @@ - + @@ -38031,10 +37902,10 @@ - + - + @@ -38043,16 +37914,16 @@ - + - + - + - + @@ -38076,85 +37947,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -38165,13 +38036,13 @@ - - + + - + @@ -38181,46 +38052,46 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -38231,24 +38102,24 @@ - - - + + + - + - + - + @@ -38271,15 +38142,15 @@ - + - + - + @@ -38287,7 +38158,7 @@ - + @@ -38295,7 +38166,7 @@ - + @@ -38316,10 +38187,10 @@ - + - + @@ -38333,9 +38204,9 @@ - + - + @@ -38344,10 +38215,10 @@ - + - + @@ -38368,7 +38239,7 @@ - + @@ -38380,27 +38251,27 @@ - + - + - + - + - + - + @@ -38409,10 +38280,10 @@ - + - + @@ -38420,23 +38291,23 @@ - + - + - + - + - + - + @@ -38447,89 +38318,89 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - + + + + + + + - + - - - + - + @@ -38540,297 +38411,297 @@ - + - - + + - - + + - + - + + + + + + + + + + + + + + + + + + + + - - - - - - + + - + - - - - - - - - - - - - - - - - + - + - + - - + + - + - - + + - + - - + + - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + - + - - + + - + + + + + + + + + + + + - - - - + + + + + - + + - - - - + - - - + - + + - + - - + - + + - + + - - + + - - - - - - - - - - - + - - + + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - + + + + + + + + + - + + - + - - - - - - - - - - + - - + + + + + + + + + + + + + - - - + + + - - + + - - - + + + - + + + - - - - - - - - - - - - - - + - + - - + + @@ -38853,28 +38724,28 @@ - + - + - + - + - + - + - - + + @@ -38891,7 +38762,7 @@ - + @@ -38906,10 +38777,10 @@ - + - + @@ -38920,13 +38791,13 @@ - + - + - + @@ -38935,32 +38806,32 @@ - + - + - + - + - + - + - + @@ -38977,121 +38848,121 @@ - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - + @@ -39103,7 +38974,7 @@ - + @@ -39132,35 +39003,35 @@ - + - + - + - + - + - + - + - + - + @@ -39178,159 +39049,159 @@ - - + + + + - - - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + - + @@ -39360,73 +39231,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39435,7 +39306,7 @@ - + @@ -39498,49 +39369,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39554,22 +39425,22 @@ - + - + - + - + @@ -39617,7 +39488,7 @@ - + @@ -39635,16 +39506,16 @@ - + - + - + @@ -39653,27 +39524,27 @@ - + - + - + - + - + - + - + @@ -39700,13 +39571,13 @@ - + - + @@ -39748,7 +39619,7 @@ - + @@ -39772,169 +39643,169 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39961,7 +39832,7 @@ - + @@ -39970,26 +39841,26 @@ - + - + - + - + - + - + - + @@ -40001,59 +39872,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40077,10 +39948,10 @@ - + - + @@ -40088,32 +39959,32 @@ - + - + - + - + - + - + - + @@ -40125,16 +39996,16 @@ - + - + - + @@ -40145,7 +40016,7 @@ - + @@ -40166,7 +40037,7 @@ - + @@ -40174,18 +40045,18 @@ - + - + - + - + - + @@ -40199,7 +40070,7 @@ - + @@ -40216,19 +40087,19 @@ - + - + - + - + - + @@ -40271,7 +40142,7 @@ - + @@ -40279,7 +40150,7 @@ - + @@ -40381,13 +40252,13 @@ - + - + @@ -40396,42 +40267,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -40458,9 +40329,9 @@ - + - + @@ -40469,41 +40340,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -40512,18 +40383,18 @@ - + - + - + - + @@ -40532,16 +40403,16 @@ - + - + - + - + @@ -40556,10 +40427,10 @@ - + - + @@ -40568,22 +40439,22 @@ - + - + - + - + - + @@ -40595,7 +40466,7 @@ - + @@ -40610,12 +40481,12 @@ - + - + - + @@ -40624,16 +40495,16 @@ - + - + - + @@ -40642,110 +40513,110 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40775,7 +40646,7 @@ - + @@ -40787,50 +40658,50 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -40845,7 +40716,7 @@ - + @@ -40859,12 +40730,12 @@ - + - + - + @@ -40873,17 +40744,17 @@ - + - + - - - + + + @@ -40900,109 +40771,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41041,22 +40912,22 @@ - + - + - + - + - + - + @@ -41071,68 +40942,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41146,7 +41017,7 @@ - + @@ -41161,7 +41032,7 @@ - + @@ -41169,12 +41040,12 @@ - + - + - + @@ -41183,21 +41054,21 @@ - + - + - + - + - + @@ -41217,7 +41088,7 @@ - + @@ -41237,34 +41108,34 @@ - + - + - + - + - + - + - + - + @@ -41276,7 +41147,7 @@ - + @@ -41294,13 +41165,13 @@ - + - + @@ -41326,16 +41197,16 @@ - + - + - + - + @@ -41386,10 +41257,10 @@ - + - + @@ -41400,7 +41271,7 @@ - + @@ -41444,27 +41315,27 @@ - + - + - + - + - + - + - + - + @@ -41530,7 +41401,7 @@ - + @@ -41556,7 +41427,7 @@ - + @@ -41600,7 +41471,7 @@ - + @@ -41629,13 +41500,13 @@ - + - + - + @@ -41643,90 +41514,90 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41746,7 +41617,7 @@ - + @@ -41766,7 +41637,7 @@ - + @@ -41792,10 +41663,10 @@ - + - + @@ -41809,13 +41680,13 @@ - + - + - + @@ -41823,7 +41694,7 @@ - + @@ -41837,7 +41708,7 @@ - + @@ -41845,15 +41716,15 @@ - + - + - + @@ -41861,19 +41732,19 @@ - + - + - + @@ -41884,7 +41755,7 @@ - + @@ -41920,13 +41791,13 @@ - + - + @@ -41935,9 +41806,9 @@ - + - + @@ -41952,7 +41823,7 @@ - + @@ -41960,10 +41831,10 @@ - + - + @@ -41971,77 +41842,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -42059,7 +41930,7 @@ - + @@ -42068,18 +41939,18 @@ - + - + - + - + @@ -42097,45 +41968,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -42149,116 +42020,116 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -42282,7 +42153,7 @@ - + @@ -42293,7 +42164,7 @@ - + @@ -42307,37 +42178,37 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -42375,43 +42246,43 @@ - + - + - + - + - + - + - + - + - + @@ -42441,33 +42312,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -42478,10 +42349,10 @@ - + - + @@ -42489,21 +42360,21 @@ - + - + - + - + - + - + @@ -42514,39 +42385,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -42566,12 +42437,12 @@ - + - + @@ -42580,20 +42451,20 @@ - + - + - + - + - + @@ -42610,925 +42481,925 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - - - + + + + + + + - - + + + + + + - - + + - - + + - - - - - - + + + - - + + + - - - - - + + + - - - + + + + + + + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - - + + + - - - - + + + - + - + + + + - + + - - - - + + + + - - + + + - - - + + - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + + + + + + + + + + + + + - - - - + + + + - - + + + + + + - - - - + + + + + - - - - - - + + + + + + + - - - - + + + + - - + + + - - - + - - - - - + + + + + - - - - - - + + + - - + - - - - + + + + - - - + + + + + + - - - - + + - - - - - + - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + - - + + + + - + + + + + + + + + + + + - - - - + + - - - - - - - - - - - - + + - - + + + + - - + + + - - - - + + - - - + + - - + - - + + - - - - - - - - - - + - - + + - - + + + + + + + + + + + - - - - - - - - - - - + + - - + + - + + + + + + + + + + + - + + + + + - - - + + + + - - - - - - - + + + + - - - + + + - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + + + + + + + + + - + + + - + + - - - + - - + - + + - + - - + + - - - - - - - - - - + + + + + + + + + - + + + + - - + + + - - - - - - - - - - - - - + + + + + + + + + - + + - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - - + + - - + - - + + - - - - - + - - + + + + + + + + - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - - + + + - + - - + + - + - + - + - - + + - - + + @@ -43539,7 +43410,7 @@ - + @@ -43551,9 +43422,9 @@ - + - + @@ -43592,18 +43463,18 @@ - + - + - + @@ -43618,50 +43489,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43670,24 +43541,24 @@ - + - + - + - + - + - + @@ -43696,7 +43567,7 @@ - + @@ -43704,36 +43575,36 @@ - + - + - + - + - + - + - + - + - + - + @@ -43744,7 +43615,7 @@ - + @@ -43767,19 +43638,19 @@ - + - + - + @@ -43824,11 +43695,11 @@ - + - - + + @@ -43839,9 +43710,9 @@ - + - + @@ -43859,9 +43730,9 @@ - + - + @@ -43873,9 +43744,9 @@ - + - + @@ -43893,27 +43764,27 @@ - + - + - + - + - + - + - + @@ -43922,26 +43793,26 @@ - + - + - + - + - + - + - + @@ -43953,24 +43824,24 @@ - + - + - + - + - + - + @@ -43991,120 +43862,120 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + - - - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - - + + + @@ -44113,102 +43984,102 @@ - + - - + + - - + + - + - - - + + + - + - - + + - - - + + + - - + + - - + + - + - - + + - - + + - - - + + + - + - + - + - + - - - + + + - + - + - + - + @@ -44223,7 +44094,7 @@ - + @@ -44234,7 +44105,7 @@ - + @@ -44264,7 +44135,7 @@ - + @@ -44272,13 +44143,13 @@ - + - + @@ -44287,27 +44158,27 @@ - + - + - + - + - + - + - + @@ -44316,7 +44187,7 @@ - + @@ -44327,7 +44198,7 @@ - + @@ -44345,7 +44216,7 @@ - + @@ -44354,71 +44225,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44439,21 +44310,21 @@ - + - + - + - + - + @@ -44464,12 +44335,12 @@ - + - + - + @@ -44478,269 +44349,269 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - + + + + + + + + + + + - - + + + + - - - - - - - - - - - - - + - - + + + + + + + + + + + - - - - - - - - - - + - - + + - - + + + + + + + + + + + - - - - - - - - - - + - - + + - - + + + + + + + + + + + - - + + - - - - - - - - - - + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - + @@ -44777,127 +44648,127 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44924,7 +44795,7 @@ - + @@ -44936,25 +44807,25 @@ - + - + - + - + - + - + @@ -44962,7 +44833,7 @@ - + @@ -44985,21 +44856,21 @@ - + - + - + - + @@ -45007,82 +44878,82 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - - + + - + - - - - + + + + - - - + + + - + - - + + - + - + @@ -45092,161 +44963,161 @@ + + + + + + + + + - + + + + - - + + + - - - - + + + + + - - - + + - - - - - - - - - - - - - - + - - + + - - + + - - + + - + + + + + + + + + + + + + - - - + + + + - - - - - - - - - - - - - - + - - + + - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + - + - + - + - + - + - - + + - - + + @@ -45259,12 +45130,12 @@ - + - + @@ -45279,7 +45150,7 @@ - + @@ -45297,46 +45168,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -45351,7 +45222,7 @@ - + @@ -45361,68 +45232,68 @@ - - - - - + + + + + - - + + - + - + - + - + - - + + - - - - - + + + + + + + - - - - - - - + + + + + - + - + @@ -45436,50 +45307,50 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -45542,13 +45413,13 @@ - + - + - + @@ -45557,7 +45428,7 @@ - + @@ -45568,7 +45439,7 @@ - + @@ -45576,24 +45447,24 @@ - + - + - + - - + + - + - + - + @@ -45643,7 +45514,7 @@ - + @@ -45654,32 +45525,32 @@ - + - + - + - + - + - + - + - + - + - + @@ -45699,18 +45570,18 @@ - + - + - + - + - + @@ -45721,7 +45592,7 @@ - + @@ -45730,7 +45601,7 @@ - + @@ -45753,7 +45624,7 @@ - + @@ -45767,37 +45638,37 @@ - + - - + + - - + + - - + + - + - + - + - + @@ -45806,7 +45677,7 @@ - + @@ -45964,12 +45835,12 @@ - + - + - + @@ -45982,7 +45853,7 @@ - + @@ -45993,7 +45864,7 @@ - + @@ -46004,7 +45875,7 @@ - + @@ -46012,13 +45883,13 @@ - + - + @@ -46032,15 +45903,15 @@ - + - + - + @@ -46051,7 +45922,7 @@ - + @@ -46060,22 +45931,22 @@ - - + + - + - - + + - + @@ -46087,29 +45958,29 @@ - - - + + + - - - + + + - + - + @@ -46117,7 +45988,7 @@ - + @@ -46125,7 +45996,7 @@ - + @@ -46136,36 +46007,36 @@ - + + + - - - - + + - - + + - - + + - + - - + + - + @@ -46183,20 +46054,20 @@ - + - + - + - + - - + + @@ -46221,7 +46092,7 @@ - + @@ -46231,7 +46102,7 @@ - + @@ -46240,11 +46111,11 @@ - - - + + + - + @@ -46262,8 +46133,8 @@ - - + + @@ -46285,7 +46156,7 @@ - + @@ -46378,15 +46249,15 @@ - - + + - + @@ -46394,76 +46265,76 @@ - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - - + + @@ -46480,22 +46351,22 @@ - + - + - - - + + + - - + + - + @@ -46515,11 +46386,11 @@ - + - + @@ -46533,13 +46404,13 @@ - + - + @@ -46563,7 +46434,7 @@ - + @@ -46571,7 +46442,7 @@ - + @@ -46579,15 +46450,15 @@ - + - - - - + + + + @@ -46607,7 +46478,7 @@ - + @@ -46662,15 +46533,15 @@ - + - + - + @@ -46683,7 +46554,7 @@ - + @@ -46692,8 +46563,8 @@ - - + + @@ -46704,33 +46575,33 @@ - + - - - + + + - + - + - + - + - + @@ -46741,10 +46612,10 @@ - + - + @@ -46753,7 +46624,7 @@ - + @@ -46762,37 +46633,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -46885,22 +46756,22 @@ - + - + - + - + - + @@ -46909,7 +46780,7 @@ - + @@ -46921,7 +46792,7 @@ - + @@ -46931,9 +46802,9 @@ - + - + @@ -46954,7 +46825,7 @@ - + @@ -46995,13 +46866,13 @@ - + - + - + @@ -47016,20 +46887,20 @@ - + - + - + - + - + @@ -47038,7 +46909,7 @@ - + @@ -47053,7 +46924,7 @@ - + @@ -47067,7 +46938,7 @@ - + @@ -47079,7 +46950,7 @@ - + @@ -47093,10 +46964,10 @@ - + - + @@ -47104,13 +46975,13 @@ - + - + @@ -47118,7 +46989,7 @@ - + @@ -47133,13 +47004,13 @@ - + - + - + @@ -47154,27 +47025,27 @@ - + - + - + - + - + - + - + - + @@ -47182,13 +47053,13 @@ - + - + @@ -47202,7 +47073,7 @@ - + @@ -47216,7 +47087,7 @@ - + @@ -47225,10 +47096,10 @@ - + - + @@ -47245,16 +47116,16 @@ - + - + - + - + @@ -47271,7 +47142,7 @@ - + @@ -47282,21 +47153,21 @@ - + - + - + - + - + @@ -47305,7 +47176,7 @@ - + @@ -47313,7 +47184,7 @@ - + @@ -47331,7 +47202,7 @@ - + @@ -47357,24 +47228,24 @@ - + - + - + - + - + @@ -47410,9 +47281,9 @@ - + - + @@ -47421,13 +47292,13 @@ - + - + @@ -47456,14 +47327,14 @@ - + - + @@ -47471,16 +47342,16 @@ - + - + - + @@ -47488,7 +47359,7 @@ - + @@ -47502,54 +47373,54 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + + + + - - + + - + - - - - - - + + + + + + - + - + - + @@ -47561,13 +47432,13 @@ - + - + @@ -47576,19 +47447,19 @@ - + - + - + - + @@ -47642,37 +47513,37 @@ - + - + - + - + - + - + - + - + - + @@ -47695,13 +47566,13 @@ - + - + - + @@ -47758,13 +47629,13 @@ - + - + - + @@ -47781,8 +47652,8 @@ - - + + @@ -47796,7 +47667,7 @@ - + @@ -47807,140 +47678,140 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47951,52 +47822,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48008,40 +47879,40 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -48049,42 +47920,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -48092,7 +47963,7 @@ - + @@ -48104,48 +47975,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48166,12 +48037,12 @@ - + - + - + @@ -48248,15 +48119,15 @@ - + - + - + @@ -48273,15 +48144,15 @@ - + - + - + - + @@ -48289,13 +48160,13 @@ - + - + @@ -48321,7 +48192,7 @@ - + @@ -48329,13 +48200,13 @@ - + - + @@ -48346,15 +48217,15 @@ - + - + - + - + @@ -48363,13 +48234,13 @@ - + - + @@ -48380,7 +48251,7 @@ - + @@ -48389,185 +48260,185 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - - + + - + - + - + - - + + - + - + - + - + - + + + + + + + + + - - + + + + - + + + + - - - + + - - - - + - - + + - + + - - + + + - - + + - - - - - - - - - - - - + @@ -48575,186 +48446,186 @@ - - + + - - - + + + - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - + + + + + + - - - - + + + - - - - - - + - - - - + + - + + - - + + - - + - - + + - - - - - - - - - - + - - + + + + + + + + + + + + + - - - - - - - - - - - - + - - - + + + - + - + + + + + - - - - - + - + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - + - - + + @@ -48762,13 +48633,13 @@ - + - + @@ -48795,48 +48666,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48871,7 +48742,7 @@ - + @@ -48889,7 +48760,7 @@ - + @@ -48909,12 +48780,12 @@ - + - + - + @@ -48926,33 +48797,33 @@ - + - + - + - + - + - + - + - + - + @@ -48967,7 +48838,7 @@ - + @@ -48975,59 +48846,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -49036,191 +48907,191 @@ - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - + + - - + + - + - + + + + + + + + + + - + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - + - - + + - - + + - - - + + + - - - - - + + + + + - - + + - + + + + + + + + + + - + - - + + - - - - - - - - - - - + + - - + + - + - + - + - + - + - + - + - + @@ -49231,7 +49102,7 @@ - + @@ -49276,16 +49147,16 @@ - + - + - + - + @@ -49297,10 +49168,10 @@ - + - + @@ -49315,19 +49186,19 @@ - + - + - + - + - + @@ -49357,16 +49228,16 @@ - + - + - + @@ -49380,7 +49251,7 @@ - + @@ -49397,24 +49268,24 @@ - + - + - + - + - + - + - + @@ -49429,13 +49300,13 @@ - + - + - + @@ -49446,16 +49317,16 @@ - + - + - + - + @@ -49463,7 +49334,7 @@ - + @@ -49471,32 +49342,32 @@ - + - + - + - + - + - + - + - + - + @@ -49510,7 +49381,7 @@ - + @@ -49518,10 +49389,10 @@ - + - + @@ -49538,16 +49409,16 @@ - + - + - + @@ -49567,7 +49438,7 @@ - + @@ -49575,7 +49446,7 @@ - + @@ -49595,12 +49466,12 @@ - + - + - + @@ -49609,7 +49480,7 @@ - + @@ -49629,7 +49500,7 @@ - + @@ -49640,10 +49511,10 @@ - + - + @@ -49652,30 +49523,30 @@ - + - + - + - + - + - + - + - + @@ -49687,7 +49558,7 @@ - + @@ -49696,7 +49567,7 @@ - + @@ -49707,9 +49578,9 @@ - + - + @@ -49724,89 +49595,89 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -49815,104 +49686,104 @@ - + - + - + - - + + - - - + + + - - - - + + + + - - + + + + + + + + + + + + - - + + + - + + + - - - + + + - + - + - - - - + + + - - - - - + + - - - + + - - - - - - - - - + - - + + - - - + + + - - + + @@ -49921,14 +49792,14 @@ - + - + @@ -49957,19 +49828,19 @@ - + - + - + - + @@ -49980,13 +49851,13 @@ - + - + @@ -50013,10 +49884,10 @@ - + - + @@ -50046,7 +49917,7 @@ - + @@ -50058,36 +49929,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -50095,10 +49966,10 @@ - + - + @@ -50106,90 +49977,90 @@ - + - + - - - - - + + + + + + + - - - - - - - + + + + + - + - + - + + + + + + + + + + + - + - + - - - - - - - - - - - + - - + + - + - - + + @@ -50200,64 +50071,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -50266,7 +50137,7 @@ - + @@ -50283,10 +50154,10 @@ - + - + @@ -50310,7 +50181,7 @@ - + @@ -50322,19 +50193,19 @@ - + - + - + - + - + @@ -50379,22 +50250,22 @@ - + - + - + - + - + @@ -50405,30 +50276,30 @@ - + - + - + - + - + - + - + - + @@ -50440,37 +50311,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -50481,13 +50322,13 @@ - + - + @@ -50495,18 +50336,18 @@ - + - + - + @@ -50515,7 +50356,7 @@ - + @@ -50530,32 +50371,32 @@ - + - + - + - + - + - + - + - + - + @@ -50564,13 +50405,13 @@ - + - + - + @@ -50612,13 +50453,13 @@ - + - + - + @@ -50627,7 +50468,7 @@ - + @@ -50639,77 +50480,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -50717,9 +50558,9 @@ - + - + @@ -50728,7 +50569,7 @@ - + @@ -50755,9 +50596,9 @@ - + - + @@ -50769,27 +50610,27 @@ - + - + - + - + - + - + - + @@ -50800,220 +50641,219 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - + - - + + - - + + - - + + - - + + - + - + - + - + @@ -51022,22 +50862,22 @@ - + - + - + - + - + - + @@ -51067,7 +50907,7 @@ - + @@ -51079,7 +50919,7 @@ - + @@ -51094,14 +50934,14 @@ - + - + @@ -51109,15 +50949,15 @@ - + - + - + @@ -51132,7 +50972,7 @@ - + @@ -51146,96 +50986,96 @@ - - - - - - - - - - - + + + + + + + + + + + - - + + - + - - - + + + - - + + - - - + + + - - - + + + - - + + - - + + - - - + + + - + - - + + - + - + - + - + - + - + @@ -51246,20 +51086,20 @@ - + - + - - + + @@ -51270,7 +51110,7 @@ - + @@ -51281,7 +51121,7 @@ - + @@ -51293,7 +51133,7 @@ - + @@ -51307,10 +51147,10 @@ - + - + @@ -51318,34 +51158,34 @@ - + - + - + - + - + - - + + - + - + @@ -51353,21 +51193,21 @@ - + - + - + - + - + - + @@ -51387,7 +51227,7 @@ - + @@ -51407,7 +51247,7 @@ - + @@ -51424,9 +51264,9 @@ - + - + @@ -51438,32 +51278,35 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + - - - - - - + + + + @@ -51473,164 +51316,161 @@ - - - - + - + - + - - + + - + - + - + - + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - + + - + - + - - + + - + - - + + - - + + - - - + + + - - + + - - + + - + - + @@ -51638,7 +51478,7 @@ - + @@ -51646,61 +51486,61 @@ - + - + - - - + + + - + - + - + - + - + - + - - + + - + - + - + @@ -51708,7 +51548,7 @@ - + @@ -51719,26 +51559,26 @@ - + - + - + - + - + - + @@ -51746,7 +51586,7 @@ - + @@ -51754,10 +51594,10 @@ - + - + @@ -51765,7 +51605,7 @@ - + @@ -51800,22 +51640,22 @@ - + - + - + - + - + - + @@ -51836,10 +51676,10 @@ - + - + @@ -51848,7 +51688,7 @@ - + @@ -51856,12 +51696,12 @@ - + - + - + @@ -51894,8 +51734,8 @@ - - + + @@ -51906,7 +51746,7 @@ - + @@ -51932,7 +51772,7 @@ - + @@ -51946,7 +51786,7 @@ - + @@ -51954,7 +51794,7 @@ - + @@ -51965,7 +51805,7 @@ - + @@ -51982,12 +51822,12 @@ - + - + - + @@ -52017,9 +51857,9 @@ - + - + @@ -52028,12 +51868,12 @@ - + - + @@ -52048,13 +51888,13 @@ - + - + - + @@ -52066,55 +51906,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52129,16 +51969,16 @@ - + - + - + @@ -52150,28 +51990,28 @@ - + - + - + - + - + - + - + @@ -52188,15 +52028,15 @@ - + - + - + - + @@ -52208,7 +52048,7 @@ - + @@ -52234,7 +52074,7 @@ - + @@ -52246,10 +52086,10 @@ - + - + @@ -52263,7 +52103,7 @@ - + @@ -52274,7 +52114,7 @@ - + @@ -52288,7 +52128,7 @@ - + @@ -52299,10 +52139,10 @@ - + - + @@ -52313,7 +52153,7 @@ - + @@ -52336,24 +52176,24 @@ - + - + - + - + - + - + - + @@ -52364,7 +52204,7 @@ - + @@ -52378,7 +52218,7 @@ - + @@ -52392,25 +52232,25 @@ - + - + - + - + - + - + - + @@ -52421,7 +52261,7 @@ - + @@ -52432,16 +52272,16 @@ - + - + - + - + @@ -52450,7 +52290,7 @@ - + @@ -52461,7 +52301,7 @@ - + @@ -52502,15 +52342,15 @@ - + - + - + - + @@ -52531,7 +52371,7 @@ - + @@ -52539,15 +52379,15 @@ - + - + - + @@ -52555,21 +52395,21 @@ - + - + - + - + - + @@ -52589,10 +52429,10 @@ - + - + @@ -52601,16 +52441,16 @@ - + - + - + - + @@ -52618,9 +52458,9 @@ - + - + @@ -52644,7 +52484,7 @@ - + @@ -52656,10 +52496,10 @@ - + - + @@ -52667,14 +52507,14 @@ - + - + - + - + @@ -52695,10 +52535,10 @@ - + - + @@ -52707,24 +52547,24 @@ - + - + - + - + - + @@ -52733,13 +52573,13 @@ - + - + @@ -52747,10 +52587,10 @@ - + - + @@ -52789,7 +52629,7 @@ - + @@ -52816,13 +52656,13 @@ - + - + @@ -52840,21 +52680,21 @@ - + - + - + - + - + @@ -52887,9 +52727,9 @@ - + - + @@ -52907,7 +52747,7 @@ - + @@ -52915,7 +52755,7 @@ - + @@ -52936,7 +52776,7 @@ - + @@ -52947,10 +52787,10 @@ - + - + @@ -52968,21 +52808,21 @@ - + - + - + - + - + @@ -53036,10 +52876,10 @@ - + - + @@ -53051,10 +52891,10 @@ - + - + @@ -53068,31 +52908,31 @@ - + - + - + - + - + - + - + @@ -53137,18 +52977,18 @@ - + - + - + - + - + @@ -53163,10 +53003,10 @@ - + - + @@ -53204,38 +53044,38 @@ - + - + - + - + - + - + - + - + - + @@ -53243,23 +53083,23 @@ - + - + - + - + - + - + @@ -53267,108 +53107,108 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - + - + @@ -53376,11 +53216,11 @@ - + - + @@ -53388,59 +53228,59 @@ - + - - + + - - + + - - + + - - + + - - + + - + - + - + - + @@ -53448,7 +53288,7 @@ - + @@ -53457,12 +53297,12 @@ - + - + @@ -53470,164 +53310,164 @@ - - + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - + - + - + - - + + - + - - + + - + - - + + - - + + - - + + + + + + + + + + + + + + + + + - - + + - - + + + - - - - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - + @@ -53637,43 +53477,43 @@ - - + + - + - + - - + + - + - + - + - + - + @@ -53682,15 +53522,15 @@ - + - + - + @@ -53698,27 +53538,27 @@ - - - - + + + + - + - + - + - + - + @@ -53726,65 +53566,65 @@ - - + + - - - + + + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + @@ -53792,24 +53632,24 @@ - + - + - + - + - + - + - + @@ -53841,21 +53681,21 @@ - + - + - - + + - + @@ -53864,7 +53704,7 @@ - + @@ -53873,19 +53713,19 @@ - - + + - + - + - + @@ -53924,13 +53764,13 @@ - + - + @@ -53972,7 +53812,7 @@ - + @@ -53984,18 +53824,18 @@ - + - + - + @@ -54004,10 +53844,10 @@ - + - + @@ -54016,10 +53856,10 @@ - + - + @@ -54028,7 +53868,7 @@ - + @@ -54036,19 +53876,19 @@ - + - + - + - + @@ -54057,13 +53897,13 @@ - + - + @@ -54072,25 +53912,25 @@ - + - + - + - + - + @@ -54102,7 +53942,7 @@ - + @@ -54111,109 +53951,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54221,15 +54061,15 @@ - + - + - + @@ -54238,8 +54078,8 @@ - - + + @@ -54267,7 +54107,7 @@ - + @@ -54278,24 +54118,24 @@ - + - + - + - + - + - + @@ -54304,9 +54144,9 @@ - + - + @@ -54315,7 +54155,7 @@ - + @@ -54330,59 +54170,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54391,148 +54231,148 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -54541,53 +54381,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -54601,67 +54441,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54669,9 +54509,9 @@ - + - + @@ -54680,7 +54520,7 @@ - + @@ -54688,19 +54528,19 @@ - + - + - + - + - + @@ -54715,108 +54555,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -54825,147 +54665,147 @@ - + - - + + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + + + + + + - - - - - - + - + - + - + - + - + - + - - + + - + - - - + + + @@ -54975,67 +54815,67 @@ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - + - + - - + + @@ -55043,48 +54883,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -55093,13 +54933,13 @@ - + - + - + @@ -55110,7 +54950,7 @@ - + @@ -55124,7 +54964,7 @@ - + @@ -55138,7 +54978,7 @@ - + @@ -55152,7 +54992,7 @@ - + @@ -55166,21 +55006,21 @@ - + - + - + - + - + @@ -55197,33 +55037,33 @@ - + - + - + - + - + - + - + - - + + @@ -55234,13 +55074,13 @@ - + - + - + @@ -55249,7 +55089,7 @@ - + @@ -55282,7 +55122,7 @@ - + @@ -55291,15 +55131,15 @@ - + - + - + @@ -55344,9 +55184,9 @@ - + - + @@ -55355,7 +55195,7 @@ - + @@ -55363,10 +55203,10 @@ - + - + @@ -55374,7 +55214,7 @@ - + @@ -55382,7 +55222,7 @@ - + @@ -55393,13 +55233,13 @@ - + - + - + @@ -55408,21 +55248,21 @@ - + - + - + - + - + @@ -55433,7 +55273,7 @@ - + @@ -55441,21 +55281,21 @@ - + - + - + - + - - + + @@ -55464,26 +55304,26 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -55500,8 +55340,8 @@ - - + + @@ -55525,11 +55365,11 @@ - + - + @@ -55584,7 +55424,7 @@ - + @@ -55599,7 +55439,7 @@ - + @@ -55649,33 +55489,33 @@ - + - + - + - + - + - + - + - + @@ -55754,44 +55594,41 @@ - + - - + + - + - + - + - + - - - + + + - + - + - - - - - - - + + + + @@ -55814,7 +55651,7 @@ - + @@ -55831,87 +55668,87 @@ - + - - - - + + + + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - + - + - + - + - + @@ -55947,7 +55784,7 @@ - + @@ -55955,7 +55792,7 @@ - + @@ -55963,9 +55800,9 @@ - + - + @@ -55974,7 +55811,7 @@ - + @@ -55982,10 +55819,10 @@ - + - + @@ -56003,125 +55840,125 @@ - + - + - + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + @@ -56148,13 +55985,13 @@ - + - + @@ -56220,10 +56057,10 @@ - + - + @@ -56250,7 +56087,7 @@ - + @@ -56259,13 +56096,13 @@ - + - + - + @@ -56277,10 +56114,10 @@ - + - + @@ -56289,13 +56126,13 @@ - + - + - + @@ -56334,18 +56171,18 @@ - + - + - + - + @@ -56353,9 +56190,9 @@ - + - + @@ -56379,7 +56216,7 @@ - + @@ -56387,13 +56224,13 @@ - + - + @@ -56413,12 +56250,12 @@ - + - + - + @@ -56433,7 +56270,7 @@ - + @@ -56444,7 +56281,7 @@ - + @@ -56467,19 +56304,19 @@ - + - + - + - + @@ -56493,9 +56330,9 @@ - + - + @@ -56510,7 +56347,7 @@ - + @@ -56519,7 +56356,7 @@ - + @@ -56537,10 +56374,10 @@ - + - + @@ -56551,7 +56388,7 @@ - + @@ -56562,12 +56399,12 @@ - + - + @@ -56576,7 +56413,7 @@ - + @@ -56588,7 +56425,7 @@ - + @@ -56600,16 +56437,16 @@ - + - + - + @@ -56618,10 +56455,10 @@ - + - + @@ -56645,38 +56482,38 @@ - + - + - + - + - + - + - + - + - + @@ -56684,15 +56521,15 @@ - + - + - + @@ -56700,12 +56537,12 @@ - + - + - + @@ -56732,10 +56569,10 @@ - + - + @@ -56747,13 +56584,13 @@ - + - + - + @@ -56762,7 +56599,7 @@ - + @@ -56771,13 +56608,13 @@ - + - + - + @@ -56813,7 +56650,7 @@ - + @@ -56825,7 +56662,7 @@ - + @@ -56843,18 +56680,18 @@ - + - + - + - + @@ -56871,16 +56708,16 @@ - + - + - + @@ -56888,7 +56725,7 @@ - + @@ -56914,33 +56751,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -56955,13 +56792,13 @@ - + - + @@ -56970,12 +56807,12 @@ - + - + - + @@ -57008,7 +56845,7 @@ - + @@ -57017,13 +56854,13 @@ - + - + @@ -57037,15 +56874,15 @@ - + - + - + - + @@ -57054,10 +56891,10 @@ - + - + @@ -57068,15 +56905,15 @@ - + - + - + @@ -57091,7 +56928,7 @@ - + @@ -57102,12 +56939,12 @@ - + - + - + @@ -57119,15 +56956,15 @@ - + - + - + - + @@ -57136,22 +56973,22 @@ - + - + - + - + - + @@ -57165,7 +57002,7 @@ - + @@ -57179,15 +57016,15 @@ - + - + - + - + @@ -57196,7 +57033,7 @@ - + @@ -57204,74 +57041,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -57279,16 +57116,16 @@ - + - + - + - + @@ -57297,39 +57134,39 @@ - + - + - + - + - + - + @@ -57337,24 +57174,24 @@ - + - + - + - + - + - + - + @@ -57366,7 +57203,7 @@ - + @@ -57377,7 +57214,7 @@ - + @@ -57385,15 +57222,15 @@ - + - + - + - + @@ -57407,18 +57244,18 @@ - + - + - + - + @@ -57427,15 +57264,15 @@ - + - + - + @@ -57455,18 +57292,18 @@ - + - + - + - + @@ -57475,7 +57312,7 @@ - + @@ -57483,9 +57320,9 @@ - + - + @@ -57494,7 +57331,7 @@ - + @@ -57502,10 +57339,10 @@ - + - + @@ -57513,7 +57350,7 @@ - + @@ -57524,10 +57361,10 @@ - + - + @@ -57556,333 +57393,333 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -57890,7 +57727,7 @@ - + @@ -57899,12 +57736,12 @@ - + - + - + @@ -57919,19 +57756,19 @@ - + - + - + - + @@ -57943,22 +57780,22 @@ - + - + - + - + - + @@ -57973,10 +57810,10 @@ - + - + @@ -58029,13 +57866,13 @@ - + - + @@ -58052,7 +57889,7 @@ - + @@ -58067,7 +57904,7 @@ - + @@ -58082,7 +57919,7 @@ - + @@ -58096,7 +57933,7 @@ - + @@ -58104,48 +57941,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -58156,7 +57993,7 @@ - + @@ -58191,10 +58028,10 @@ - + - + @@ -58203,7 +58040,7 @@ - + @@ -58236,7 +58073,7 @@ - + @@ -58245,10 +58082,10 @@ - + - + @@ -58257,21 +58094,21 @@ - + - + - + - + @@ -58282,7 +58119,7 @@ - + @@ -58320,16 +58157,16 @@ - + - + - + - + @@ -58347,10 +58184,10 @@ - + - + @@ -58368,13 +58205,13 @@ - + - + - + @@ -58395,7 +58232,7 @@ - + @@ -58416,7 +58253,7 @@ - + @@ -58445,7 +58282,7 @@ - + @@ -58456,7 +58293,7 @@ - + @@ -58464,7 +58301,7 @@ - + @@ -58481,10 +58318,10 @@ - + - + @@ -58522,7 +58359,7 @@ - + @@ -58557,7 +58394,7 @@ - + @@ -58637,7 +58474,7 @@ - + @@ -58646,9 +58483,9 @@ - + - + @@ -58696,7 +58533,7 @@ - + @@ -58705,12 +58542,12 @@ - + - + - + @@ -58739,9 +58576,9 @@ - + - + @@ -58756,7 +58593,7 @@ - + @@ -58764,9 +58601,9 @@ - + - + @@ -58775,7 +58612,7 @@ - + @@ -58793,28 +58630,28 @@ - + - + - + - + - + - + - + @@ -58823,23 +58660,23 @@ - + - + - + - + - + @@ -58848,7 +58685,7 @@ - + @@ -58866,9 +58703,9 @@ - + - + @@ -58880,7 +58717,7 @@ - + @@ -58889,16 +58726,16 @@ - + - + - + - + @@ -58910,7 +58747,7 @@ - + @@ -58927,9 +58764,9 @@ - + - + @@ -58944,12 +58781,12 @@ - + - + - + @@ -58964,7 +58801,7 @@ - + @@ -58976,10 +58813,10 @@ - + - + @@ -58997,22 +58834,22 @@ - + - + - + - + - + @@ -59042,24 +58879,24 @@ - + - + - + - + - + - + @@ -59068,15 +58905,15 @@ - + - + - + - + @@ -59084,7 +58921,7 @@ - + @@ -59120,21 +58957,21 @@ - + - + - + - + - + @@ -59164,7 +59001,7 @@ - + @@ -59187,9 +59024,9 @@ - + - + @@ -59213,10 +59050,10 @@ - + - + @@ -59227,7 +59064,7 @@ - + @@ -59235,7 +59072,7 @@ - + @@ -59246,7 +59083,7 @@ - + @@ -59254,45 +59091,45 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -59301,7 +59138,7 @@ - + @@ -59313,18 +59150,18 @@ - + - + - + - + @@ -59332,7 +59169,7 @@ - + @@ -59340,7 +59177,7 @@ - + @@ -59348,12 +59185,12 @@ - + - + - + @@ -59374,7 +59211,7 @@ - + @@ -59398,16 +59235,16 @@ - + - + - + @@ -59422,7 +59259,7 @@ - + @@ -59430,7 +59267,7 @@ - + @@ -59438,7 +59275,7 @@ - + @@ -59452,15 +59289,15 @@ - + - + - + - + @@ -59472,12 +59309,12 @@ - + - + @@ -59509,7 +59346,7 @@ - + @@ -59526,35 +59363,35 @@ - + - + - + - + - + - + - + - + - + @@ -59584,16 +59421,16 @@ - + - + - + @@ -59605,473 +59442,473 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - + + - - + + - - + + - - + + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + - - + + - + - - - - - - - - + + - - + + - + - - + + - + - - + + - + - - - - - - - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + @@ -60083,143 +59920,143 @@ - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + @@ -60227,230 +60064,230 @@ - - + + - - + + - + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - - + + + - + - + - + @@ -60462,32 +60299,32 @@ - + - + - + - - + + - - + + - - - + + + @@ -60495,16 +60332,16 @@ - + - - + + - + @@ -60519,7 +60356,7 @@ - + @@ -60528,12 +60365,12 @@ - + - + @@ -60547,7 +60384,7 @@ - + @@ -60555,7 +60392,7 @@ - + @@ -60570,13 +60407,13 @@ - + - + - + @@ -60599,17 +60436,17 @@ - + - + - + @@ -60632,40 +60469,40 @@ - + - + - + - + - + - + - + @@ -60688,9 +60525,9 @@ - + - + @@ -60698,7 +60535,7 @@ - + @@ -60730,85 +60567,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/abi_gki_aarch64_fde6e0c654.xml b/abi_gki_aarch64_4bbb960644.xml similarity index 95% rename from abi_gki_aarch64_fde6e0c654.xml rename to abi_gki_aarch64_4bbb960644.xml index 0143eba7ed73..6e9f216493ba 100644 --- a/abi_gki_aarch64_fde6e0c654.xml +++ b/abi_gki_aarch64_4bbb960644.xml @@ -973,6 +973,7 @@ + @@ -11736,43 +11737,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -71282,6 +71283,14 @@ + + + + + + + + @@ -84178,132 +84187,132 @@ - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - + + - + - + - - - - - - - - - + + + + + + + + + + + + + + - - + + - - - - + + + + - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - - + + + + @@ -88607,37 +88616,37 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - + + + @@ -89441,17 +89450,17 @@ - - + + - - + + - - - + + + @@ -112903,68 +112912,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -112990,7 +112938,7 @@ - + @@ -113009,21 +112957,21 @@ - + - + - - + + - + @@ -113041,56 +112989,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -113099,7 +113047,7 @@ - + @@ -113125,137 +113073,137 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - + - + - + @@ -113264,12 +113212,12 @@ - - - + + + - + @@ -113292,7 +113240,7 @@ - + @@ -113300,100 +113248,100 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -113428,7 +113376,7 @@ - + @@ -113481,20 +113429,20 @@ - - - + + + - + - + - + @@ -113503,76 +113451,76 @@ - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -113608,9 +113556,9 @@ - + - + @@ -113619,13 +113567,13 @@ - + - + @@ -113654,15 +113602,15 @@ - + - + - + - + @@ -113671,7 +113619,7 @@ - + @@ -113686,7 +113634,7 @@ - + @@ -113712,7 +113660,7 @@ - + @@ -113729,7 +113677,7 @@ - + @@ -113743,7 +113691,7 @@ - + @@ -113769,14 +113717,14 @@ - + - + @@ -113817,15 +113765,15 @@ - + - + - + - + @@ -113864,7 +113812,7 @@ - + @@ -113882,7 +113830,7 @@ - + @@ -113909,7 +113857,7 @@ - + @@ -113918,7 +113866,7 @@ - + @@ -113933,7 +113881,7 @@ - + @@ -113944,10 +113892,10 @@ - + - + @@ -113956,7 +113904,7 @@ - + @@ -113965,34 +113913,34 @@ - + - + - + - + - + - + - + - + - + @@ -114088,22 +114036,22 @@ - + - + - + - + - + @@ -114112,7 +114060,7 @@ - + @@ -114124,7 +114072,7 @@ - + @@ -114134,7 +114082,7 @@ - + @@ -114175,13 +114123,13 @@ - + - + - + @@ -114196,12 +114144,12 @@ - + - + @@ -114245,27 +114193,27 @@ - + - + - + - + - + - + - + - + @@ -114279,7 +114227,7 @@ - + @@ -114293,7 +114241,7 @@ - + @@ -114319,7 +114267,7 @@ - + @@ -114342,10 +114290,10 @@ - + - + @@ -114362,7 +114310,7 @@ - + @@ -114373,21 +114321,21 @@ - + - + - + - + - + @@ -114396,7 +114344,7 @@ - + @@ -114422,7 +114370,7 @@ - + @@ -114430,16 +114378,16 @@ - + - + - + @@ -114447,7 +114395,7 @@ - + @@ -114461,7 +114409,7 @@ - + @@ -114469,46 +114417,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -114520,7 +114468,7 @@ - + @@ -114543,13 +114491,13 @@ - + - + - + @@ -114606,13 +114554,13 @@ - + - + - + @@ -114629,8 +114577,8 @@ - - + + @@ -114644,72 +114592,72 @@ - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - + - + - + @@ -114718,24 +114666,24 @@ - + - + - + - + - + @@ -114793,35 +114741,35 @@ - + - + - + - + - + - + - + @@ -114831,7 +114779,7 @@ - + @@ -114841,7 +114789,7 @@ - + @@ -114851,7 +114799,7 @@ - + @@ -114861,7 +114809,7 @@ - + @@ -114870,68 +114818,68 @@ - - + + - - + + - - + + - - - + + + - - + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - - + - + - + - + - + @@ -114940,10 +114888,10 @@ - + - + @@ -114955,22 +114903,22 @@ - + - + - + - + - + - + @@ -114990,7 +114938,7 @@ - + @@ -115002,7 +114950,7 @@ - + @@ -115022,18 +114970,18 @@ - + - + - + - + @@ -115047,64 +114995,64 @@ - + - + - + - - - - - - + + + + + + + + + - - - - + - + - + - - + + - - + + - - + + - + - + - + @@ -115121,14 +115069,14 @@ - + - + @@ -115142,13 +115090,13 @@ - + - + - + @@ -115157,21 +115105,21 @@ - + - + - + - + @@ -115179,7 +115127,7 @@ - + @@ -115200,45 +115148,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -115253,7 +115201,7 @@ - + @@ -115261,7 +115209,7 @@ - + @@ -115269,93 +115217,93 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + @@ -115367,140 +115315,140 @@ - + - + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - - - - + + + + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - + - + @@ -115518,7 +115466,7 @@ - + @@ -115527,19 +115475,19 @@ - + - + - + - + @@ -115593,10 +115541,10 @@ - + - + @@ -115605,13 +115553,13 @@ - + - + - + @@ -115623,7 +115571,7 @@ - + @@ -115634,140 +115582,140 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -115778,28 +115726,28 @@ - + - + - + - + - + - + @@ -115811,13 +115759,13 @@ - + - + - + @@ -115835,40 +115783,40 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -115876,7 +115824,7 @@ - + @@ -115884,42 +115832,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -115927,13 +115875,13 @@ - + - + @@ -115959,13 +115907,13 @@ - + - + @@ -115979,94 +115927,94 @@ - + - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - - + + - + - - + + - + - - + + - - + + - + - + @@ -116078,51 +116026,51 @@ - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -116132,38 +116080,38 @@ - + - + - - + + - + - + - - + + - + - + - + @@ -116171,43 +116119,43 @@ - + + + + + + + + + + + + + + - - + + + - + + + - - + + - - - - - - - - - - - - - - - - - + @@ -116215,263 +116163,263 @@ - - + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + - - + + + - - - + + + + + - - - + + + + + + - - - + + + + - - - - - + - - - - - - + + - - - - + + - + + - - + - - + + - - + + - - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + - - + + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -116482,7 +116430,7 @@ - + @@ -116491,7 +116439,7 @@ - + @@ -116500,54 +116448,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -116564,7 +116512,7 @@ - + @@ -116578,7 +116526,7 @@ - + @@ -116595,7 +116543,7 @@ - + @@ -116609,7 +116557,7 @@ - + @@ -116626,7 +116574,7 @@ - + @@ -116649,7 +116597,7 @@ - + @@ -116675,7 +116623,7 @@ - + @@ -116692,7 +116640,7 @@ - + @@ -116709,7 +116657,7 @@ - + @@ -116726,7 +116674,7 @@ - + @@ -116740,7 +116688,7 @@ - + @@ -116757,7 +116705,7 @@ - + @@ -116786,7 +116734,7 @@ - + @@ -116806,25 +116754,25 @@ - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + - + @@ -116836,7 +116784,7 @@ - + @@ -116845,7 +116793,7 @@ - + @@ -116854,8 +116802,8 @@ - - + + @@ -116865,15 +116813,15 @@ - + - + - + @@ -116881,14 +116829,14 @@ - + - + @@ -116896,176 +116844,176 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - - - - + + + + + - - + + - + - - + + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + @@ -117079,7 +117027,7 @@ - + @@ -117087,15 +117035,15 @@ - + - - + + - - + + @@ -117111,63 +117059,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -117190,7 +117138,7 @@ - + @@ -117201,7 +117149,7 @@ - + @@ -117261,15 +117209,15 @@ - + - + - + @@ -117277,23 +117225,23 @@ - - - + + + - + - - + + - + @@ -117301,72 +117249,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -117375,27 +117323,27 @@ - + - + - + - + - + - + @@ -117410,7 +117358,7 @@ - + @@ -117434,10 +117382,10 @@ - + - + @@ -117454,18 +117402,18 @@ - + - + - + - + - + @@ -117474,7 +117422,7 @@ - + @@ -117483,7 +117431,7 @@ - + @@ -117492,7 +117440,7 @@ - + @@ -117516,30 +117464,30 @@ - + - + - + - + - + - + - + @@ -117560,7 +117508,7 @@ - + @@ -117614,45 +117562,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -117666,33 +117614,33 @@ - + - + - + - + - + - + - + - + - + @@ -117707,7 +117655,7 @@ - + @@ -117715,13 +117663,13 @@ - + - + @@ -117748,48 +117696,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -117824,7 +117772,7 @@ - + @@ -117842,7 +117790,7 @@ - + @@ -117862,50 +117810,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -117928,7 +117876,7 @@ - + @@ -117936,19 +117884,19 @@ - + - + - + - + - + @@ -117959,314 +117907,314 @@ - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - - - - - + + + + + - + - - + + - - + + + + + + + + + + + + + + + + - + - - + + - - + + - + + - - - - - - - - - - - - - - - - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + + + + - + + + + + + + - - - + + + + + + + - + - + + - - + - + - - + - + + - - - - - - - - - - - - - - - + + - - - - + + + + - - - + + + - + - + - + @@ -118286,118 +118234,118 @@ - - + + - - - + + + - - + + - + - - + + - + - - + + - - + + - - - + + + - + - - + + - - + + - + - + - + - + - + - - + + - - + + - + - - + + - + - + - + - + - + @@ -118405,7 +118353,7 @@ - + @@ -118417,170 +118365,170 @@ - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - + - + - - - - + + + + - - + + - + - - + + - + @@ -118589,52 +118537,52 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -118646,21 +118594,21 @@ - + - + - + - + - + - + @@ -118669,7 +118617,7 @@ - + @@ -118681,13 +118629,13 @@ - + - + - + @@ -118696,7 +118644,7 @@ - + @@ -118747,7 +118695,7 @@ - + @@ -118765,13 +118713,13 @@ - + - + @@ -118786,10 +118734,10 @@ - + - + @@ -118797,13 +118745,13 @@ - + - + @@ -118814,44 +118762,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -118860,7 +118808,7 @@ - + @@ -118868,7 +118816,7 @@ - + @@ -118879,24 +118827,24 @@ - + - + - + - + - + @@ -118908,7 +118856,7 @@ - + @@ -118919,12 +118867,12 @@ - + - + - + @@ -118933,49 +118881,49 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - + + - - + + - - + + - - + + - - + + @@ -118983,7 +118931,7 @@ - + @@ -119000,28 +118948,28 @@ - + - + - + - + - + - + - + @@ -119033,7 +118981,7 @@ - + @@ -119048,7 +118996,7 @@ - + @@ -119062,126 +119010,126 @@ - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - + - - + + - + - + - - + + - - - + + + - - + + - - + + - - + + - + - + @@ -119202,103 +119150,103 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -119309,7 +119257,7 @@ - + @@ -119354,16 +119302,16 @@ - + - + - + - + @@ -119375,10 +119323,10 @@ - + - + @@ -119393,19 +119341,19 @@ - + - + - + - + - + @@ -119435,64 +119383,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -119507,153 +119455,153 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -119673,12 +119621,12 @@ - + - + - + @@ -119687,27 +119635,27 @@ - + - + - + - + - + - + - + - + @@ -119718,10 +119666,10 @@ - + - + @@ -119730,30 +119678,30 @@ - + - + - + - + - + - + - + - + @@ -119765,7 +119713,7 @@ - + @@ -119774,7 +119722,7 @@ - + @@ -119785,7 +119733,7 @@ - + @@ -119802,100 +119750,100 @@ - + - + - + - + - + - + - + - + - + - + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -119904,211 +119852,211 @@ - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - - - + + + + - - + + - - + + - - - + + + - - - - + + + + - - + + + + + + + + + + + + + + + + + + - - + + + + - - - - - - - - - - - - - - - - - - - + - - - - + + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - + + @@ -120116,45 +120064,45 @@ - + - + - + - + - + - - - + + + - + - + - + - + @@ -120162,110 +120110,110 @@ - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + @@ -120285,17 +120233,17 @@ - + - + - + - - + + - + @@ -120403,7 +120351,7 @@ - + @@ -120417,13 +120365,13 @@ - + - + @@ -120435,10 +120383,10 @@ - + - + @@ -120459,7 +120407,7 @@ - + @@ -120476,25 +120424,25 @@ - + - - - - - - + + + + + + - + - + @@ -120520,7 +120468,7 @@ - + @@ -120528,7 +120476,7 @@ - + @@ -120548,39 +120496,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -120589,12 +120537,12 @@ - + - + @@ -120605,238 +120553,238 @@ - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + - + - - - + + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - - + + - - - + + + - - - - + + + + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -120850,54 +120798,54 @@ - + - + - + - + - + - + - + - + - + @@ -120914,7 +120862,7 @@ - + @@ -120922,7 +120870,7 @@ - + @@ -120930,7 +120878,7 @@ - + @@ -120964,20 +120912,20 @@ - + - - + + - + - + @@ -121025,19 +120973,19 @@ - + - + - + - + @@ -121046,12 +120994,12 @@ - + - + - + @@ -121069,10 +121017,10 @@ - + - + @@ -121098,34 +121046,34 @@ - + - + - + - + - + - + - + - + @@ -121146,13 +121094,13 @@ - + - + @@ -121161,15 +121109,15 @@ - + - + - + - + @@ -121178,73 +121126,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -121253,20 +121201,20 @@ - + - + - + - + - + - + @@ -121278,15 +121226,15 @@ - + - + - + @@ -121294,7 +121242,7 @@ - + @@ -121302,35 +121250,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -121351,7 +121299,7 @@ - + @@ -121361,7 +121309,7 @@ - + @@ -121369,159 +121317,159 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - - + + - - + + - + - + - - + + - + - - - - + + + + - - - + + + - - + + - - + + - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + + - + - + - + - + - + - + - + - + @@ -121530,166 +121478,166 @@ - - - - - + + + + + - + - + - + - + - - + + - + - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -121701,85 +121649,85 @@ - + - + - + - + - + - + - + + + + - - - - + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - - + + - + - + - + @@ -121787,104 +121735,104 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + @@ -121896,28 +121844,28 @@ - + - + - + - + - + - + @@ -121941,13 +121889,13 @@ - + - + - + @@ -121956,7 +121904,7 @@ - + @@ -121988,12 +121936,12 @@ - + - + @@ -122002,27 +121950,27 @@ - + - + - + - + - + - + - + @@ -122037,16 +121985,16 @@ - + - + - + - + @@ -122061,7 +122009,7 @@ - + @@ -122073,83 +122021,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122166,18 +122114,18 @@ - + - + - + - + @@ -122198,7 +122146,7 @@ - + @@ -122206,7 +122154,7 @@ - + @@ -122220,42 +122168,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122269,7 +122217,7 @@ - + @@ -122292,10 +122240,10 @@ - + - + @@ -122330,7 +122278,7 @@ - + @@ -122356,7 +122304,7 @@ - + @@ -122364,84 +122312,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -122449,34 +122397,34 @@ - + - + - + - + - + - + - + - + - + @@ -122526,7 +122474,7 @@ - + @@ -122535,18 +122483,18 @@ - + - + - + - + @@ -122556,30 +122504,30 @@ - + - + - + - + - + - + - + - + - + @@ -122593,7 +122541,7 @@ - + @@ -122607,15 +122555,15 @@ - + - + - + @@ -122624,7 +122572,7 @@ - + @@ -122638,7 +122586,7 @@ - + @@ -122650,12 +122598,12 @@ - + - + @@ -122664,32 +122612,32 @@ - + - + - + - + - + - + - + - + - + @@ -122731,77 +122679,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122827,10 +122775,10 @@ - + - + @@ -122844,7 +122792,7 @@ - + @@ -122861,7 +122809,7 @@ - + @@ -122890,7 +122838,7 @@ - + @@ -122907,7 +122855,7 @@ - + @@ -122916,7 +122864,7 @@ - + @@ -122924,13 +122872,13 @@ - + - + @@ -122944,13 +122892,13 @@ - + - + @@ -122967,7 +122915,7 @@ - + @@ -122978,18 +122926,18 @@ - + - + - + - + - + @@ -123015,10 +122963,10 @@ - + - + @@ -123029,20 +122977,20 @@ - + - + - + - + - + @@ -123051,42 +122999,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -123095,14 +123043,14 @@ - + - + @@ -123110,13 +123058,13 @@ - + - + - + @@ -123124,26 +123072,26 @@ - + - + - + - + - + - + - + @@ -123158,20 +123106,20 @@ - + - + - + - + - + - + @@ -123180,12 +123128,12 @@ - + - + - + @@ -123195,372 +123143,372 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -123583,7 +123531,7 @@ - + @@ -123603,41 +123551,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -123666,7 +123614,7 @@ - + @@ -123675,7 +123623,7 @@ - + @@ -123683,7 +123631,7 @@ - + @@ -123700,7 +123648,7 @@ - + @@ -123709,7 +123657,7 @@ - + @@ -123718,10 +123666,10 @@ - + - + @@ -123729,10 +123677,10 @@ - + - + @@ -123740,9 +123688,9 @@ - + - + @@ -123751,7 +123699,7 @@ - + @@ -123763,15 +123711,15 @@ - + - + - + - + @@ -123779,10 +123727,10 @@ - + - + @@ -123790,7 +123738,7 @@ - + @@ -123804,10 +123752,10 @@ - + - + @@ -123827,7 +123775,7 @@ - + @@ -123836,7 +123784,7 @@ - + @@ -123845,10 +123793,10 @@ - + - + @@ -123871,7 +123819,7 @@ - + @@ -123879,13 +123827,13 @@ - + - + @@ -123893,16 +123841,16 @@ - + - + - + @@ -123913,7 +123861,7 @@ - + @@ -123921,7 +123869,7 @@ - + @@ -123938,10 +123886,10 @@ - + - + @@ -123952,7 +123900,7 @@ - + @@ -123961,7 +123909,7 @@ - + @@ -123972,10 +123920,10 @@ - + - + @@ -124001,7 +123949,7 @@ - + @@ -124019,7 +123967,7 @@ - + @@ -124036,7 +123984,7 @@ - + @@ -124048,7 +123996,7 @@ - + @@ -124065,7 +124013,7 @@ - + @@ -124074,7 +124022,7 @@ - + @@ -124103,7 +124051,7 @@ - + @@ -124141,10 +124089,10 @@ - + - + @@ -124152,9 +124100,9 @@ - + - + @@ -124166,18 +124114,18 @@ - + - + - + - + @@ -124185,13 +124133,13 @@ - + - + - + @@ -124214,7 +124162,7 @@ - + @@ -124222,13 +124170,13 @@ - + - + @@ -124236,7 +124184,7 @@ - + @@ -124253,7 +124201,7 @@ - + @@ -124270,7 +124218,7 @@ - + @@ -124281,13 +124229,13 @@ - + - + - + @@ -124298,19 +124246,19 @@ - + - + - + @@ -124321,10 +124269,10 @@ - + - + @@ -124341,7 +124289,7 @@ - + @@ -124349,20 +124297,20 @@ - + - + - + - + - + @@ -124370,26 +124318,26 @@ - + - + - + - + - + - + - + @@ -124397,31 +124345,31 @@ - + - + - + - + - + - + - + - + - + @@ -124429,7 +124377,7 @@ - + @@ -124441,7 +124389,7 @@ - + @@ -124449,7 +124397,7 @@ - + @@ -124461,7 +124409,7 @@ - + @@ -124487,7 +124435,7 @@ - + @@ -124498,21 +124446,21 @@ - + - + - + - + - + @@ -124520,7 +124468,7 @@ - + @@ -124540,7 +124488,7 @@ - + @@ -124557,396 +124505,414 @@ - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + + - + - + - - + - + - + - + @@ -124970,19 +124936,19 @@ - + - + - + @@ -125012,43 +124978,43 @@ - + - + - + - + - + - + - + @@ -125078,31 +125044,31 @@ - + - + - + - + - + @@ -125126,301 +125092,283 @@ - + - + - + - - - + - - - + + + - - - + + - + - - - + + - - + + - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - + - - - - - + + + + + - - - + + + - - + + - + - - + + - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + - - + + - + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - - - - - + + + + + + - - + + - - + + - - + + - - + + - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + - - + + - - - - - - - - - - - - - + + - + @@ -125428,69 +125376,69 @@ - - + + - - + + - + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - + + - + - + - + - + - + - + @@ -125499,20 +125447,20 @@ - - - + + + - + - + - + @@ -125530,37 +125478,37 @@ - + - + - + - + - + - + - + @@ -125570,28 +125518,28 @@ - + - + - - + + - + - + @@ -125605,13 +125553,13 @@ - + - + - + @@ -125632,21 +125580,21 @@ - + - + - + - + - + @@ -125655,21 +125603,21 @@ - + - + - + - + - + @@ -125680,10 +125628,10 @@ - + - + @@ -125725,10 +125673,10 @@ - + - + @@ -125737,7 +125685,7 @@ - + @@ -125761,7 +125709,7 @@ - + @@ -125773,46 +125721,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -125827,37 +125775,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -125871,16 +125819,16 @@ - + - + - + @@ -125900,12 +125848,12 @@ - + - + @@ -125938,7 +125886,7 @@ - + @@ -125964,7 +125912,7 @@ - + @@ -125993,7 +125941,7 @@ - + @@ -126031,7 +125979,7 @@ - + @@ -126049,7 +125997,7 @@ - + @@ -126084,15 +126032,15 @@ - + - + - + - + @@ -126136,7 +126084,7 @@ - + @@ -126181,7 +126129,7 @@ - + @@ -126189,26 +126137,26 @@ - + - + - + - + - + - + - + - + @@ -126226,7 +126174,7 @@ - + @@ -126246,21 +126194,21 @@ - + - + - + - + - + - + @@ -126314,12 +126262,12 @@ - + - + - + @@ -126331,12 +126279,12 @@ - + - + - + @@ -126351,7 +126299,7 @@ - + @@ -126374,9 +126322,9 @@ - + - + @@ -126385,13 +126333,13 @@ - + - + @@ -126405,7 +126353,7 @@ - + @@ -126421,7 +126369,7 @@ - + @@ -126429,120 +126377,120 @@ - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - + - + - + - + - + - + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - + @@ -126550,11 +126498,11 @@ - + - + @@ -126562,23 +126510,23 @@ - + - - - + + + - + - + @@ -126596,32 +126544,32 @@ - + - + - + - + - + - + - + - + @@ -126629,7 +126577,7 @@ - + @@ -126647,7 +126595,7 @@ - + @@ -126655,17 +126603,17 @@ - + - + - + @@ -126676,21 +126624,21 @@ - + - + - + - + - + - + @@ -126704,13 +126652,13 @@ - + - + @@ -126722,115 +126670,115 @@ - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + - - + + - + - - + + - + - + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - + + - + - + - + @@ -126839,7 +126787,7 @@ - + @@ -126869,16 +126817,16 @@ - + - - - - + + + + @@ -126886,16 +126834,16 @@ - + - + - + @@ -126903,216 +126851,216 @@ - - - + + + - + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - - + + + - + - + - - - - + + + + - - + + - + - + - - - - + + + + - - - - - + + + + + - - - + + + - + - + - + - - + + - - + + - - + + - + @@ -127120,13 +127068,13 @@ - - + + - - + + @@ -127135,14 +127083,14 @@ - - + + - - - + + + @@ -127150,50 +127098,50 @@ - - + + - + - - - - + + + + - + - - + + - + - - + + - - + + - + - + @@ -127214,158 +127162,158 @@ - + - + - + - + - + - - - - - - - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -127391,18 +127339,18 @@ - - - - - - + + + + + + - + - + @@ -127432,32 +127380,32 @@ - - - + + + - - - + + + - + - + - + @@ -127479,22 +127427,22 @@ - - - - + + + + - + - + - + @@ -127541,13 +127489,13 @@ - + - + - + @@ -127565,7 +127513,7 @@ - + @@ -127577,7 +127525,7 @@ - + @@ -127628,53 +127576,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -127692,13 +127640,13 @@ - + - + - + @@ -127710,7 +127658,7 @@ - + @@ -127719,7 +127667,7 @@ - + @@ -127729,7 +127677,7 @@ - + @@ -127749,13 +127697,13 @@ - + - + @@ -127766,18 +127714,18 @@ - + - + - + - + @@ -127789,7 +127737,7 @@ - + @@ -127810,155 +127758,155 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - + - + - + @@ -127968,22 +127916,22 @@ - + - + - + - + - + - + @@ -127991,64 +127939,64 @@ - - + + - + - + - + - + - - - + + + - + - - + + - + - - + + - - + + - + - + - + - + - + @@ -128064,7 +128012,7 @@ - + @@ -128075,13 +128023,13 @@ - + - + @@ -128092,60 +128040,60 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - + + - + - - + + - + - + - - + + - - + + @@ -128154,7 +128102,7 @@ - + @@ -128163,20 +128111,20 @@ - - + + - + - + @@ -128201,18 +128149,18 @@ - - + + - + - + @@ -128226,8 +128174,8 @@ - - + + @@ -128235,107 +128183,107 @@ - + - - + + - + - - + + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128344,22 +128292,22 @@ - + - + - + - + @@ -128367,7 +128315,7 @@ - + @@ -128375,14 +128323,14 @@ - - + + - + @@ -128393,72 +128341,72 @@ - - + + - + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + @@ -128466,55 +128414,55 @@ - + - + - + - + - + - + - + - + - + @@ -128551,34 +128499,34 @@ - + - + - + - + - + - + - + - + @@ -128623,75 +128571,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128700,7 +128648,7 @@ - + @@ -128715,7 +128663,7 @@ - + @@ -128728,7 +128676,7 @@ - + @@ -128802,7 +128750,7 @@ - + @@ -128810,7 +128758,7 @@ - + @@ -128824,13 +128772,13 @@ - + - + - + @@ -128872,13 +128820,13 @@ - + - + - + @@ -128899,10 +128847,10 @@ - + - + @@ -128910,54 +128858,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128977,7 +128925,7 @@ - + @@ -128992,39 +128940,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -129032,7 +128980,7 @@ - + @@ -129043,7 +128991,7 @@ - + @@ -129070,9 +129018,9 @@ - + - + @@ -129084,27 +129032,27 @@ - + - + - + - + - + - + @@ -129115,15 +129063,15 @@ - + - + - + @@ -129138,15 +129086,15 @@ - + - + - + @@ -129155,22 +129103,22 @@ - + - + - + - + - + - + @@ -129200,7 +129148,7 @@ - + @@ -129212,7 +129160,7 @@ - + @@ -129227,14 +129175,14 @@ - + - + @@ -129242,7 +129190,7 @@ - + @@ -129271,16 +129219,16 @@ - + - + - + - + @@ -129288,7 +129236,7 @@ - + @@ -129308,151 +129256,151 @@ - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - - - + + + - - - + + + - - + + - + - + @@ -129466,188 +129414,188 @@ - - - + + + - - - + + + - - - + + + - - - + + + - + - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + - - + + + - + + - + + - + - + - - + + - - - + + - - - + + - - - - - + + + - - - - + + + + - - - - + + + - - - - - - - - - - - - - - + - + @@ -129659,78 +129607,78 @@ - - + + - + - - + + - - + + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + @@ -129738,10 +129686,10 @@ - + - + @@ -129780,42 +129728,42 @@ - + - + - - + + - + - + - + - + - + - + - + @@ -129826,92 +129774,92 @@ - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - + - - + + - - + + - + - - + + - + - + - + - + - + - - + + @@ -129931,7 +129879,7 @@ - + @@ -129955,7 +129903,7 @@ - + @@ -129976,10 +129924,10 @@ - + - + @@ -130024,13 +129972,13 @@ - + - + @@ -130039,7 +129987,7 @@ - + @@ -130050,30 +129998,30 @@ - + - + - + - + - + - + - + - + @@ -130085,7 +130033,7 @@ - + @@ -130096,102 +130044,102 @@ - + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - + - - - - + + + + - - + + - + - + - + - + - + - + @@ -130199,18 +130147,18 @@ - - + + - + - + - + @@ -130255,7 +130203,7 @@ - + @@ -130269,102 +130217,102 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + @@ -130378,150 +130326,150 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - - - + + - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - + - - + + - - + + - - + + - - - + + + - + - + - - - + + + @@ -130541,7 +130489,7 @@ - + @@ -130556,10 +130504,10 @@ - + - + @@ -130619,13 +130567,13 @@ - + - + @@ -130637,7 +130585,7 @@ - + @@ -130645,7 +130593,7 @@ - + @@ -130653,7 +130601,7 @@ - + @@ -130661,7 +130609,7 @@ - + @@ -130670,11 +130618,11 @@ - - - - - + + + + + @@ -130686,30 +130634,30 @@ - + - + - + - - + + - + - + @@ -130719,7 +130667,7 @@ - + @@ -130727,60 +130675,60 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -130791,7 +130739,7 @@ - + @@ -130799,20 +130747,20 @@ - + - + - - - - - - + + + + + + @@ -130823,92 +130771,92 @@ - + - + - - + + - - + + - - + + - + - + - - + + - + - + - + - - + + - - + + - + - + - - + + - + - + - + @@ -130916,7 +130864,7 @@ - + @@ -130924,36 +130872,36 @@ - + - + - + - + - + - + - + - + - + @@ -130965,24 +130913,24 @@ - + - + - + - + - - + + @@ -130993,35 +130941,35 @@ - - - - - + + + + + - + - + - + - + - + - + - + @@ -131033,7 +130981,7 @@ - + @@ -131048,7 +130996,7 @@ - + @@ -131069,7 +131017,7 @@ - + @@ -131086,36 +131034,36 @@ - - - - + + + + - - + + - + - + - - + + - + - + - + - - + + @@ -131126,10 +131074,10 @@ - + - + @@ -131141,7 +131089,7 @@ - + @@ -131152,7 +131100,7 @@ - + @@ -131172,10 +131120,10 @@ - + - + @@ -131184,7 +131132,7 @@ - + @@ -131214,7 +131162,7 @@ - + @@ -131267,150 +131215,150 @@ - + - + - - - - - + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - + - + - + - + @@ -131443,10 +131391,10 @@ - + - + @@ -131458,7 +131406,7 @@ - + @@ -131467,13 +131415,13 @@ - + - + @@ -131491,7 +131439,7 @@ - + @@ -131502,12 +131450,12 @@ - + - + - + @@ -131525,7 +131473,7 @@ - + @@ -131533,128 +131481,128 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - + + - + - - + + - - - + + + - - + + - - - + + + - - + + @@ -131662,49 +131610,49 @@ - + - + - + - + - + - + - + - - + + - - + + - + - + - + @@ -131730,25 +131678,25 @@ - + - + - + - + - + - + @@ -131760,7 +131708,7 @@ - + @@ -131769,7 +131717,7 @@ - + @@ -131802,22 +131750,22 @@ - + - + - + - + @@ -131835,7 +131783,7 @@ - + @@ -131848,7 +131796,7 @@ - + @@ -131871,30 +131819,30 @@ - + - + - + - + - + - + @@ -131905,19 +131853,19 @@ - + - + - + - + @@ -131932,7 +131880,7 @@ - + @@ -131943,7 +131891,7 @@ - + @@ -131968,7 +131916,7 @@ - + @@ -131981,9 +131929,9 @@ - + - + @@ -131992,7 +131940,7 @@ - + @@ -132000,12 +131948,12 @@ - + - + @@ -132041,7 +131989,7 @@ - + @@ -132049,25 +131997,25 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + @@ -132078,12 +132026,12 @@ - + - + - + @@ -132091,38 +132039,38 @@ - + - + - + - + - + - - - + + + - - + + @@ -132134,32 +132082,32 @@ - - + + - - + + - - + + - - + + - - + + - + @@ -132185,7 +132133,7 @@ - + @@ -132197,7 +132145,7 @@ - + @@ -132227,47 +132175,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -132275,27 +132223,27 @@ - + - + - + - + - + @@ -132306,20 +132254,20 @@ - + - - - - - - - - + + + + + + + + @@ -132330,50 +132278,50 @@ - + - + - + - + - + - + - + - - + + - - + + - - + + @@ -132399,7 +132347,7 @@ - + @@ -132416,7 +132364,7 @@ - + @@ -132443,13 +132391,13 @@ - + - + @@ -132457,61 +132405,61 @@ - - + + - + - + - + - + - + - + - - + + - + - + - + - + @@ -132525,21 +132473,21 @@ - + - + - + - + - + @@ -132551,21 +132499,21 @@ - + - + - - - - - - - + + + + + + + @@ -132694,7 +132642,7 @@ - + @@ -132704,7 +132652,7 @@ - + @@ -132741,21 +132689,21 @@ - - + + - + - + - + @@ -132819,9 +132767,9 @@ - + - + @@ -132833,7 +132781,7 @@ - + @@ -132844,31 +132792,31 @@ - + - + - + - + - + - + - + - + - + @@ -132877,31 +132825,31 @@ - + - + - + - + - + - + - + - + - + @@ -132910,31 +132858,31 @@ - + - + - + - - - - - - - - + + + + + + + + - + @@ -132944,14 +132892,14 @@ - - + + - + @@ -132959,38 +132907,38 @@ - + - + - - + + - - + + - + - + - + - + @@ -132999,7 +132947,7 @@ - + @@ -133015,11 +132963,11 @@ - + - + @@ -133041,26 +132989,26 @@ - + - + - + - + - + @@ -133079,73 +133027,73 @@ - + - + - - + + - + - - + + - - + + - - + + - - - - + + + + - + - - + + - + - + - + - + @@ -133159,9 +133107,9 @@ - + - + @@ -133182,63 +133130,63 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -133267,7 +133215,7 @@ - + @@ -133297,11 +133245,11 @@ - + - + @@ -133315,71 +133263,71 @@ - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + @@ -133387,36 +133335,36 @@ - - + + - + - + - + - - + + - + - + @@ -133425,12 +133373,12 @@ - + - - + + @@ -133440,40 +133388,40 @@ - + - + - + - + - + - - + + - + - + @@ -133481,36 +133429,36 @@ - + - + - + - + - + - + - + - + - + @@ -133522,22 +133470,22 @@ - + - + - + - + - + - + @@ -133545,10 +133493,10 @@ - + - + @@ -133556,7 +133504,7 @@ - + @@ -133570,124 +133518,125 @@ - - - - + + + + + + + - - - + + + + - - - - - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -133698,13 +133647,13 @@ - - - + + + + + + - - - @@ -133737,7 +133686,7 @@ - + @@ -133862,11 +133811,11 @@ - + - + @@ -133874,7 +133823,7 @@ - + @@ -133981,7 +133930,7 @@ - + @@ -134081,7 +134030,7 @@ - + @@ -134089,19 +134038,19 @@ - + - + - + @@ -134109,7 +134058,7 @@ - + @@ -134120,7 +134069,7 @@ - + @@ -134144,45 +134093,45 @@ - + - + - + - + - + - + - + - + - + - + @@ -134193,30 +134142,30 @@ - + - + - + - + - + - + - + - + @@ -134234,7 +134183,7 @@ - + @@ -134257,59 +134206,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -134317,26 +134266,26 @@ - + - + - + - + - + - + - + @@ -134347,38 +134296,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -134398,222 +134347,222 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - - + + - - + + - + - - + + - + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + - - - - - + - + - + @@ -134673,61 +134622,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -134754,10 +134703,10 @@ - + - + @@ -134766,8 +134715,8 @@ - - + + @@ -134784,58 +134733,58 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + @@ -134870,8 +134819,8 @@ - - + + @@ -134882,13 +134831,13 @@ - - - - - - - + + + + + + + @@ -134908,18 +134857,18 @@ - - - - - - - - - - + + + + + + + + + + - + @@ -134931,12 +134880,12 @@ - - - - + + + + - + @@ -134945,19 +134894,19 @@ - + - + - + - + - + @@ -134987,7 +134936,7 @@ - + @@ -134996,13 +134945,13 @@ - + - + @@ -135017,7 +134966,7 @@ - + @@ -135050,7 +134999,7 @@ - + @@ -135071,9 +135020,9 @@ - - - + + + @@ -135096,196 +135045,196 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - + + - + - - - + + + - + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + + - + - - - - - - - - + + + + - - - - - - + + + + - - + - - + - + - - + - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - + - + - + - + - + - + @@ -135300,27 +135249,27 @@ - + - + - + - + - + - + @@ -135328,75 +135277,75 @@ - + - + - + - + - + - + - + - - - - - + + + + + + + - - - + - - + + - + - + - + - + - + - + - + @@ -135404,15 +135353,15 @@ - - + + - + - - + + @@ -135420,26 +135369,26 @@ - + - + - + - + @@ -135453,14 +135402,14 @@ - + - + - + @@ -135472,32 +135421,32 @@ - - + + - + - - - + + + - - + + - + - + @@ -135505,22 +135454,22 @@ - + - + - + - + @@ -135529,10 +135478,10 @@ - + - + @@ -135547,31 +135496,31 @@ - + - - + + - + - + - + - + - + @@ -135585,7 +135534,7 @@ - + @@ -135612,13 +135561,13 @@ - + - + @@ -135630,10 +135579,10 @@ - + - + @@ -135675,19 +135624,19 @@ - + - + - + - + - + @@ -135711,7 +135660,7 @@ - + @@ -135725,13 +135674,13 @@ - + - + @@ -135739,10 +135688,10 @@ - + - + @@ -135759,7 +135708,7 @@ - + @@ -135768,10 +135717,10 @@ - + - + @@ -135782,7 +135731,7 @@ - + @@ -135803,7 +135752,7 @@ - + @@ -135824,19 +135773,19 @@ - + - + - + @@ -135871,15 +135820,15 @@ - + - + - + @@ -135894,12 +135843,12 @@ - + - + @@ -135908,58 +135857,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -135976,12 +135925,12 @@ - + - + @@ -135992,288 +135941,288 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - + - + - - - - + + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - + + @@ -136281,87 +136230,87 @@ - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - + - - - + + + - - - - - + + + + + - - - + + + - - + + - - - + + + - - + + - + @@ -136375,19 +136324,19 @@ - + - + - + @@ -136397,57 +136346,57 @@ - + - + - - + + - + - + - + - + - + - - - + + + - + @@ -136458,13 +136407,13 @@ - + - + - + @@ -136476,11 +136425,11 @@ - - - - - + + + + + @@ -136616,7 +136565,7 @@ - + @@ -136630,7 +136579,7 @@ - + @@ -136638,7 +136587,7 @@ - + @@ -136696,7 +136645,7 @@ - + @@ -136750,7 +136699,7 @@ - + @@ -136764,8 +136713,8 @@ - - + + @@ -136791,13 +136740,13 @@ - + - + @@ -136911,9 +136860,9 @@ - + - + @@ -136962,20 +136911,20 @@ - + - + - + - + @@ -136984,7 +136933,7 @@ - + @@ -137001,14 +136950,14 @@ - - + + - + @@ -137017,34 +136966,34 @@ - + - + - - - + + + - + - + - + @@ -137052,7 +137001,7 @@ - + @@ -137100,7 +137049,7 @@ - + @@ -137187,7 +137136,7 @@ - + @@ -137198,7 +137147,7 @@ - + @@ -137210,19 +137159,19 @@ - + - + - + - + + + + - - - @@ -137235,26 +137184,26 @@ - + - - + + - - + + - + - + @@ -137284,15 +137233,15 @@ - + - + - + @@ -137343,7 +137292,7 @@ - + @@ -137353,18 +137302,18 @@ - + - + - + - + - + @@ -137372,12 +137321,12 @@ - - - + + + + - - + @@ -137385,78 +137334,78 @@ - + - + - + - - - + + + - - + + - - + + - + - + - - + + - - + + - - + + - + - + - + - + @@ -137471,7 +137420,7 @@ - + @@ -137480,15 +137429,15 @@ - + - + - + @@ -137503,7 +137452,7 @@ - + @@ -137512,27 +137461,27 @@ - + - + - + - + - + - + - + - + @@ -137546,139 +137495,139 @@ - + - + - + - - - + + + + + + + + + - - - - + - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + @@ -137687,25 +137636,25 @@ - + - + - + - + - + - + + + + - - - @@ -137736,26 +137685,26 @@ - + - + - + - + - - + + @@ -137789,19 +137738,19 @@ - + - + - - - + + + @@ -137869,11 +137818,11 @@ - + - + @@ -137928,36 +137877,36 @@ - + - + - + - + - + - + - + @@ -137992,7 +137941,7 @@ - + @@ -138004,9 +137953,9 @@ - + - + @@ -138021,19 +137970,19 @@ - + - + - + - + - + @@ -138048,179 +137997,179 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + @@ -138237,10 +138186,10 @@ - + - + @@ -138267,19 +138216,19 @@ - + - + - + - + @@ -138294,7 +138243,7 @@ - + @@ -138303,13 +138252,13 @@ - + - + @@ -138324,9 +138273,9 @@ - + - + @@ -138341,7 +138290,7 @@ - + @@ -138368,13 +138317,13 @@ - + - + @@ -138395,7 +138344,7 @@ - + @@ -138433,7 +138382,7 @@ - + @@ -138450,21 +138399,21 @@ - + - + - + - + - + @@ -138479,7 +138428,7 @@ - + @@ -138488,39 +138437,39 @@ - + - + - + - + - + - + - + - - + + @@ -138528,52 +138477,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138582,69 +138531,69 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -138653,46 +138602,46 @@ - + - + - - - + + + - - - + + + - - - + + + - - - + + + - + @@ -138710,7 +138659,7 @@ - + @@ -138722,202 +138671,202 @@ - + - + - + - + - + - + - + - + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + - - - - - + + + - - - - - - + + + + + - - - - + + + + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -138925,20 +138874,20 @@ - - - - + + + + - + - - + + @@ -138952,18 +138901,18 @@ - + - + - + - + @@ -138991,145 +138940,143 @@ - - - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + @@ -139155,18 +139102,18 @@ - + - + - + - + - + @@ -139184,10 +139131,10 @@ - + - + @@ -139195,10 +139142,10 @@ - + - + @@ -139209,10 +139156,10 @@ - + - + @@ -139221,82 +139168,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -139304,37 +139251,37 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -139342,18 +139289,18 @@ - + - + - + - + - + @@ -139365,7 +139312,7 @@ - + @@ -139373,102 +139320,102 @@ - + - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -139483,21 +139430,21 @@ - + - - + + - + - + @@ -139515,22 +139462,22 @@ - + - + - + - + - + - + @@ -139538,7 +139485,7 @@ - + @@ -139550,7 +139497,7 @@ - + @@ -139562,7 +139509,7 @@ - + @@ -139571,10 +139518,10 @@ - + - + @@ -139582,16 +139529,16 @@ - + - + - + @@ -139600,7 +139547,7 @@ - + @@ -139617,7 +139564,7 @@ - + @@ -139625,12 +139572,12 @@ - + - + @@ -139639,67 +139586,67 @@ - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -139708,65 +139655,65 @@ - + - + - + - + - - + + - - + + - + - + - - + + - - + + - - - + + + - - + + @@ -139775,18 +139722,18 @@ - - + + - - + + - - + + @@ -139797,7 +139744,7 @@ - + @@ -139826,7 +139773,7 @@ - + @@ -139838,16 +139785,16 @@ - + - + - + @@ -139867,18 +139814,18 @@ - + - + - + @@ -139887,7 +139834,7 @@ - + @@ -139904,13 +139851,13 @@ - - - - - - - + + + + + + + @@ -139920,78 +139867,78 @@ - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -140009,56 +139956,56 @@ - - + + - - + + - + - + - + - + - + - + - + - + @@ -140069,7 +140016,7 @@ - + @@ -140078,7 +140025,7 @@ - + @@ -140090,7 +140037,7 @@ - + @@ -140102,7 +140049,7 @@ - + @@ -140110,26 +140057,26 @@ - + - + - + - + - + - + - + @@ -140140,7 +140087,7 @@ - + @@ -140149,55 +140096,55 @@ - - - - - - + + + + + + - + - + - + - + - + - - + + - - + + - - + + - + - + @@ -140205,13 +140152,13 @@ - + - + @@ -140220,7 +140167,7 @@ - + @@ -140238,7 +140185,7 @@ - + @@ -140246,16 +140193,16 @@ - + - + - + - + @@ -140267,20 +140214,20 @@ - + - + - + - + @@ -140295,31 +140242,31 @@ - - - - - - - - + + + + + + + + - + - + - + - + @@ -140328,59 +140275,59 @@ - + - + - + - + - - + + - - + + - + - + - + - + - + - - - + + + - - + + @@ -140388,8 +140335,8 @@ - - + + @@ -140398,12 +140345,12 @@ - - + + - - + + @@ -140417,13 +140364,13 @@ - + - + @@ -140435,7 +140382,7 @@ - + @@ -140465,7 +140412,7 @@ - + @@ -140474,7 +140421,7 @@ - + @@ -140507,7 +140454,7 @@ - + @@ -140521,10 +140468,10 @@ - + - + @@ -140533,7 +140480,7 @@ - + @@ -140548,15 +140495,15 @@ - + - + - + - + @@ -140576,48 +140523,48 @@ - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -140631,7 +140578,7 @@ - + @@ -140642,51 +140589,51 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -140694,8 +140641,8 @@ - - + + @@ -140703,95 +140650,95 @@ - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -140813,64 +140760,64 @@ - + - + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + @@ -140879,34 +140826,34 @@ - + - - + + - + - + - + - + - + @@ -140915,19 +140862,19 @@ - + - + - - + + - + - + @@ -140939,31 +140886,31 @@ - + - + - + - - + + - + - + - + - + - + @@ -140974,7 +140921,7 @@ - + @@ -140985,7 +140932,7 @@ - + @@ -141002,119 +140949,119 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + @@ -141138,9 +141085,9 @@ - + - + @@ -141161,170 +141108,170 @@ - + - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - + - + - + - + - + - + - + - - + + - - + + - + - - - + + + - - + + - - - + + + - - - + + + - - + + - + @@ -141338,8 +141285,8 @@ - - + + @@ -141347,18 +141294,18 @@ - - + + - - + + - - + + @@ -141373,86 +141320,86 @@ - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - + - + - + - + - - + + - + - + - + - + @@ -141466,78 +141413,78 @@ - - + + - + - - + + - + - - + + - + - - + + - + - + - + - - + + - - - + + + - + - + - + - + @@ -141546,7 +141493,7 @@ - + @@ -141555,10 +141502,10 @@ - + - + @@ -141575,49 +141522,49 @@ - - - + + + - + - + - + - + - - + + - + - - + + - + - + @@ -141629,13 +141576,13 @@ - + - + @@ -141644,7 +141591,7 @@ - + @@ -141662,42 +141609,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -141717,12 +141664,12 @@ - + - + @@ -141734,89 +141681,89 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - + @@ -141833,12 +141780,12 @@ - + - + @@ -141853,7 +141800,7 @@ - + @@ -141868,10 +141815,10 @@ - + - + @@ -141901,7 +141848,7 @@ - + @@ -141918,30 +141865,30 @@ - + - + - + - + - + - + - + - + - + @@ -141953,16 +141900,16 @@ - + - + - + - + @@ -142004,68 +141951,68 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + - + - + - + @@ -142073,88 +142020,88 @@ - + - + - + - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - + @@ -142175,10 +142122,10 @@ - + - + @@ -142190,7 +142137,7 @@ - + @@ -142202,12 +142149,12 @@ - + - + @@ -142216,21 +142163,21 @@ - + - + - + - + - + @@ -142251,19 +142198,19 @@ - + - + - + - + @@ -142272,16 +142219,16 @@ - + - + - + @@ -142293,7 +142240,7 @@ - + @@ -142305,9 +142252,9 @@ - + - + @@ -142322,7 +142269,7 @@ - + @@ -142330,68 +142277,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -142412,18 +142359,18 @@ - + - + - + - + @@ -142443,8 +142390,8 @@ - - + + @@ -142452,7 +142399,7 @@ - + @@ -142466,9 +142413,9 @@ - + - + @@ -142480,13 +142427,13 @@ - + - + - + @@ -142495,19 +142442,19 @@ - + - + - + - + @@ -142516,16 +142463,16 @@ - + - + - + @@ -142555,37 +142502,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -142600,13 +142547,13 @@ - + - + - + @@ -142624,62 +142571,62 @@ - + - + - + - - - - + + + + - + - + - + - + - + - - + + - + - + - + @@ -142720,12 +142667,12 @@ - + - + - + @@ -142734,10 +142681,10 @@ - + - + @@ -142748,14 +142695,14 @@ - + - - + + @@ -142769,230 +142716,230 @@ - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -143006,9 +142953,9 @@ - - - + + + @@ -143019,34 +142966,34 @@ - + - + - + - + - + - + - + @@ -143060,18 +143007,18 @@ - + - + - + - + @@ -143083,252 +143030,252 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + - + - + - + - - + + - + - + - + - + - + - + - + - - - + + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - - + + - - + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -143352,11 +143299,11 @@ - + - + @@ -143364,7 +143311,7 @@ - + @@ -143372,26 +143319,26 @@ - + - + - + - + - + @@ -143401,46 +143348,46 @@ - + - + - + - - + + - + - + - + - + @@ -143466,38 +143413,38 @@ - - - - + + + + - + - - + + - - + + - + - - + + - - + + @@ -143505,38 +143452,38 @@ - + - + - + - + - - + + - - + + - + - + @@ -143551,19 +143498,19 @@ - + - + - + - + @@ -143575,21 +143522,21 @@ - + - + - + - + - + - + @@ -143600,7 +143547,7 @@ - + @@ -143626,27 +143573,27 @@ - + - + - + - + - + - + @@ -143682,7 +143629,7 @@ - + @@ -143691,35 +143638,35 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -143736,10 +143683,10 @@ - + - + @@ -143751,10 +143698,10 @@ - + - + @@ -143771,175 +143718,175 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + @@ -143947,13 +143894,13 @@ - + - + @@ -143965,65 +143912,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144035,15 +143982,15 @@ - + - + - + - + @@ -144070,23 +144017,23 @@ - + - + - + - + - + @@ -144094,7 +144041,7 @@ - + @@ -144129,59 +144076,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144198,7 +144145,7 @@ - + @@ -144209,7 +144156,7 @@ - + @@ -144217,15 +144164,15 @@ - + - + - + @@ -144233,7 +144180,7 @@ - + @@ -144250,7 +144197,7 @@ - + @@ -144288,7 +144235,7 @@ - + @@ -144320,7 +144267,7 @@ - + @@ -144343,7 +144290,7 @@ - + @@ -144354,17 +144301,17 @@ - + - + - + @@ -144372,7 +144319,7 @@ - + @@ -144389,7 +144336,7 @@ - + @@ -144409,13 +144356,13 @@ - + - + - + @@ -144423,21 +144370,21 @@ - + - + - + - + @@ -144458,172 +144405,172 @@ - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144656,7 +144603,7 @@ - + @@ -144671,13 +144618,13 @@ - + - + @@ -144689,47 +144636,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144750,24 +144697,24 @@ - + - + - + - + - + - + @@ -144791,27 +144738,27 @@ - + - + - + - + - + - + @@ -144819,7 +144766,7 @@ - + @@ -144842,12 +144789,12 @@ - + - + @@ -144862,10 +144809,10 @@ - + - + @@ -144885,113 +144832,113 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + @@ -144999,7 +144946,7 @@ - + @@ -145008,66 +144955,66 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -145079,13 +145026,13 @@ - + - + - + @@ -145136,10 +145083,10 @@ - + - + @@ -145163,7 +145110,7 @@ - + @@ -145175,21 +145122,21 @@ - + - + - + - + - + @@ -145198,24 +145145,24 @@ - + - + - + - + - + @@ -145284,13 +145231,13 @@ - + - + - + @@ -145299,10 +145246,10 @@ - + - + @@ -145367,7 +145314,7 @@ - + @@ -145379,7 +145326,7 @@ - + @@ -145390,9 +145337,9 @@ - + - + @@ -145407,25 +145354,25 @@ - + - + - + - + - + - + - + @@ -145521,18 +145468,18 @@ - + - + - + - + @@ -145541,21 +145488,21 @@ - + - + - + - + @@ -145566,70 +145513,70 @@ - + - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - + + - - - + + + - + - + - + - + @@ -145640,7 +145587,7 @@ - + @@ -145652,14 +145599,14 @@ - - - + + + - - + + - + @@ -145685,60 +145632,60 @@ - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -145749,7 +145696,7 @@ - + @@ -145758,7 +145705,7 @@ - + @@ -145773,7 +145720,7 @@ - + @@ -145785,43 +145732,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -145836,13 +145783,13 @@ - + - + @@ -145851,31 +145798,31 @@ - + - + - + - + - + @@ -145905,13 +145852,13 @@ - + - + - + @@ -145926,14 +145873,14 @@ - + - + - + @@ -145945,35 +145892,35 @@ - + - + - + - + - + - + - + @@ -145987,7 +145934,7 @@ - + @@ -146005,7 +145952,7 @@ - + @@ -146026,10 +145973,10 @@ - + - + @@ -146038,81 +145985,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146145,7 +146092,7 @@ - + @@ -146154,9 +146101,9 @@ - + - + @@ -146168,7 +146115,7 @@ - + @@ -146228,25 +146175,25 @@ - + - + - + - + - + @@ -146270,7 +146217,7 @@ - + @@ -146312,9 +146259,9 @@ - + - + @@ -146323,16 +146270,16 @@ - + - + - + @@ -146345,66 +146292,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146412,19 +146359,19 @@ - + - + - + - + @@ -146435,7 +146382,7 @@ - + @@ -146443,18 +146390,18 @@ - + - + - + - + @@ -146465,7 +146412,7 @@ - + @@ -146476,13 +146423,13 @@ - + - + - + @@ -146490,10 +146437,10 @@ - + - + @@ -146523,26 +146470,26 @@ - + - + - + - + - + - + @@ -146553,21 +146500,21 @@ - + - + - + - + - + - + @@ -146575,7 +146522,7 @@ - + @@ -146583,15 +146530,15 @@ - + - + - + @@ -146602,37 +146549,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -146653,7 +146600,7 @@ - + @@ -146664,7 +146611,7 @@ - + @@ -146679,10 +146626,10 @@ - + - + @@ -146700,7 +146647,7 @@ - + @@ -146712,42 +146659,42 @@ - + - + - + - + - + - + - + - + - + - + @@ -146777,7 +146724,7 @@ - + @@ -146785,19 +146732,19 @@ - + - + - + @@ -146806,7 +146753,7 @@ - + @@ -146815,19 +146762,19 @@ - + - + - + - + - + @@ -146884,10 +146831,10 @@ - + - + @@ -146898,7 +146845,7 @@ - + @@ -146927,47 +146874,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146978,28 +146925,28 @@ - + - + - + - + - + - + @@ -147012,109 +146959,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -147132,13 +147079,13 @@ - + - + @@ -147147,15 +147094,15 @@ - + - + - + @@ -147173,12 +147120,12 @@ - + - + @@ -147220,7 +147167,7 @@ - + @@ -147228,19 +147175,19 @@ - + - + - + - + @@ -147255,10 +147202,10 @@ - + - + @@ -147314,16 +147261,16 @@ - + - + - + @@ -147352,7 +147299,7 @@ - + @@ -147375,48 +147322,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -147425,20 +147372,20 @@ - + - + - + - + @@ -147453,12 +147400,12 @@ - + - + - + @@ -147469,15 +147416,15 @@ - + - + - + - + @@ -147488,9 +147435,9 @@ - + - + @@ -147514,138 +147461,138 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -147656,15 +147603,15 @@ - - + + - + - + @@ -147673,20 +147620,20 @@ - + - - + + - - + + - + @@ -147695,65 +147642,65 @@ - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - - - + + + - - + + @@ -147762,12 +147709,12 @@ - + - + @@ -147787,21 +147734,21 @@ - + - + - - + + @@ -147809,8 +147756,8 @@ - - + + @@ -147824,353 +147771,353 @@ - + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - + + + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - + - - + + - + - - - - - - - - + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + - - + + + - + + - - + + + + + - - - + + + + + - - - + + + - - - + + - - + - - - - - + + + - - - - - + + - - - - - + - - + - + + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + @@ -148196,220 +148143,220 @@ - + - - - - + + + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + @@ -148423,7 +148370,7 @@ - + @@ -148440,7 +148387,7 @@ - + @@ -148466,7 +148413,7 @@ - + @@ -148484,68 +148431,68 @@ - - - + + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -148557,7 +148504,7 @@ - + @@ -148568,26 +148515,26 @@ - + - + - + - + @@ -148595,17 +148542,17 @@ - + - + - + @@ -148613,7 +148560,7 @@ - + @@ -148621,7 +148568,7 @@ - + @@ -148629,12 +148576,12 @@ - + - + @@ -148642,7 +148589,7 @@ - + @@ -148650,7 +148597,7 @@ - + @@ -148658,149 +148605,149 @@ - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -148808,15 +148755,15 @@ - + - + - + - + @@ -148828,176 +148775,176 @@ - + - - - - + + + + - - + + - + - + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + @@ -149008,15 +148955,15 @@ - + - + - + @@ -149024,7 +148971,7 @@ - + @@ -149032,27 +148979,27 @@ - - + + - + - + - + - - + + @@ -149060,7 +149007,7 @@ - + @@ -149071,7 +149018,7 @@ - + @@ -149085,7 +149032,7 @@ - + @@ -149099,7 +149046,7 @@ - + @@ -149113,7 +149060,7 @@ - + @@ -149127,48 +149074,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -149177,27 +149124,27 @@ - + - + - + - + - + - + - + @@ -149214,47 +149161,47 @@ - + - + - + - + - + - + - + - - + + - + - - + + - + @@ -149272,51 +149219,51 @@ - - + + - + - + - - - - - + + + + + + + + + - - + - - + + + - - - - - - - + + + - + @@ -149403,15 +149350,15 @@ - + - + - + @@ -149422,7 +149369,7 @@ - + @@ -149435,7 +149382,7 @@ - + @@ -149443,11 +149390,11 @@ - + - + @@ -149467,7 +149414,7 @@ - + @@ -149522,88 +149469,88 @@ - + - + - + - + - + + - - + - + - + - + - + - - - + + + - + - + - + - + - - + + - + - + @@ -149611,7 +149558,7 @@ - + @@ -149619,10 +149566,10 @@ - + - + @@ -149630,7 +149577,7 @@ - + @@ -149638,12 +149585,12 @@ - + - + - + @@ -149676,8 +149623,8 @@ - - + + @@ -149688,7 +149635,7 @@ - + @@ -149714,7 +149661,7 @@ - + @@ -149728,7 +149675,7 @@ - + @@ -149736,7 +149683,7 @@ - + @@ -149747,7 +149694,7 @@ - + @@ -149764,12 +149711,12 @@ - + - + - + @@ -149799,9 +149746,9 @@ - + - + @@ -149810,12 +149757,12 @@ - + - + @@ -149830,13 +149777,13 @@ - + - + - + @@ -149848,55 +149795,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -149911,16 +149858,16 @@ - + - + - + @@ -149932,28 +149879,28 @@ - + - + - + - + - + - + - + @@ -149970,15 +149917,15 @@ - + - + - + - + @@ -149990,7 +149937,7 @@ - + @@ -150016,7 +149963,7 @@ - + @@ -150028,10 +149975,10 @@ - + - + @@ -150045,7 +149992,7 @@ - + @@ -150056,7 +150003,7 @@ - + @@ -150070,7 +150017,7 @@ - + @@ -150081,10 +150028,10 @@ - + - + @@ -150095,7 +150042,7 @@ - + @@ -150118,24 +150065,24 @@ - + - + - + - + - + - + - + @@ -150146,7 +150093,7 @@ - + @@ -150160,7 +150107,7 @@ - + @@ -150174,25 +150121,25 @@ - + - + - + - + - + - + - + @@ -150203,7 +150150,7 @@ - + @@ -150214,16 +150161,16 @@ - + - + - + - + @@ -150240,37 +150187,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -150279,7 +150226,7 @@ - + @@ -150288,7 +150235,7 @@ - + @@ -150299,7 +150246,7 @@ - + @@ -150340,18 +150287,18 @@ - + - + - + - + - + @@ -150363,19 +150310,19 @@ - + - + - + - + @@ -150408,13 +150355,13 @@ - + - + - + @@ -150425,7 +150372,7 @@ - + @@ -150437,18 +150384,18 @@ - + - + - + - + - + @@ -150460,13 +150407,13 @@ - + - + @@ -150474,7 +150421,7 @@ - + @@ -150482,21 +150429,21 @@ - + - + - + - + - + @@ -150519,7 +150466,7 @@ - + @@ -150528,16 +150475,16 @@ - + - + - + - + @@ -150563,7 +150510,7 @@ - + @@ -150575,17 +150522,17 @@ - + - + - + - + - + @@ -150606,10 +150553,10 @@ - + - + @@ -150618,18 +150565,18 @@ - + - + - + - + @@ -150644,13 +150591,13 @@ - + - + @@ -150658,7 +150605,7 @@ - + @@ -150669,7 +150616,7 @@ - + @@ -150680,68 +150627,68 @@ - - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150833,7 +150780,7 @@ - + @@ -150918,25 +150865,25 @@ - - + + - + - + - + @@ -151198,101 +151145,101 @@ - - + + - - + + - - + + - + - - + + - - + + - - + + - + - + - + - + + + + + + - + - + - - - - - - + - + - + - - + + - - + + - - + + - - + + - + @@ -151300,7 +151247,7 @@ - + @@ -151308,7 +151255,7 @@ - + @@ -151316,7 +151263,7 @@ - + @@ -151326,19 +151273,19 @@ - + - + - + - + - + @@ -151352,13 +151299,13 @@ - + - + @@ -151382,7 +151329,7 @@ - + @@ -151390,7 +151337,7 @@ - + @@ -151398,7 +151345,7 @@ - + @@ -151406,23 +151353,23 @@ - + - + - + - + - + - + @@ -151438,10 +151385,10 @@ - + - + @@ -151449,7 +151396,7 @@ - + @@ -151472,29 +151419,29 @@ - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -151502,7 +151449,7 @@ - + @@ -151547,7 +151494,7 @@ - + @@ -151603,36 +151550,36 @@ - + - + - + - + - - + + - + - + @@ -151647,7 +151594,7 @@ - + @@ -151790,7 +151737,7 @@ - + @@ -151827,36 +151774,36 @@ - + - + - + - + - + - + - + @@ -151869,17 +151816,17 @@ - + - + - + @@ -151946,19 +151893,19 @@ - + - + - + @@ -151980,7 +151927,7 @@ - + @@ -152068,48 +152015,48 @@ - + - + - - + + - + - + - + - - + + - + @@ -152123,7 +152070,7 @@ - + @@ -152137,7 +152084,7 @@ - + @@ -152148,7 +152095,7 @@ - + @@ -152157,7 +152104,7 @@ - + @@ -152182,10 +152129,10 @@ - + - + @@ -152240,7 +152187,7 @@ - + @@ -152275,29 +152222,29 @@ - - + + - + - + - + - + - + @@ -152308,10 +152255,10 @@ - + - + @@ -152322,22 +152269,22 @@ - + - + - - - + + + - + - + @@ -152350,31 +152297,31 @@ - + - + - + - - + + - - - - - - + + + + + + @@ -152394,35 +152341,35 @@ - - + + - + - + - + - + - + - + - - + + @@ -152445,7 +152392,7 @@ - + @@ -152453,56 +152400,56 @@ - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -152511,10 +152458,10 @@ - - - - + + + + @@ -152539,53 +152486,53 @@ - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + @@ -152604,60 +152551,60 @@ - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -152688,7 +152635,7 @@ - + @@ -152699,36 +152646,36 @@ - + - + - + - + - + - + - + - + - + @@ -152739,22 +152686,22 @@ - + - + - + - + @@ -152789,23 +152736,23 @@ - + - + - + - + - + - + @@ -152814,29 +152761,29 @@ - + - + - + - + - + - + - + - + @@ -152845,7 +152792,7 @@ - + @@ -152889,7 +152836,7 @@ - + @@ -152901,16 +152848,16 @@ - + - + - + @@ -152921,12 +152868,12 @@ - + - + - + @@ -152938,12 +152885,12 @@ - + - + - + @@ -152952,9 +152899,9 @@ - + - + @@ -152963,7 +152910,7 @@ - + @@ -152981,166 +152928,166 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -153149,52 +153096,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -153208,67 +153155,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -153276,9 +153223,9 @@ - + - + @@ -153287,7 +153234,7 @@ - + @@ -153295,19 +153242,19 @@ - + - + - + - + - + @@ -153322,64 +153269,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -153390,7 +153337,7 @@ - + @@ -153401,12 +153348,12 @@ - + - + @@ -153420,25 +153367,25 @@ - + - + - + - + - + - + @@ -153446,23 +153393,23 @@ - + - + - + - + - + - + - + @@ -153470,7 +153417,7 @@ - + @@ -153478,47 +153425,47 @@ - + - + - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + @@ -153532,13 +153479,13 @@ - + - + @@ -153546,14 +153493,14 @@ - + - + - + @@ -153563,20 +153510,20 @@ - + - + - + - - + + @@ -153589,27 +153536,27 @@ - + - - + + - + - + - + - + - - - + + + @@ -153618,12 +153565,12 @@ - - + + - + @@ -153634,13 +153581,13 @@ - + - + - + @@ -153649,7 +153596,7 @@ - + @@ -153691,15 +153638,15 @@ - + - + - + @@ -153744,7 +153691,7 @@ - + @@ -153755,7 +153702,7 @@ - + @@ -153766,7 +153713,7 @@ - + @@ -153774,7 +153721,7 @@ - + @@ -153791,10 +153738,10 @@ - + - + @@ -153806,7 +153753,7 @@ - + @@ -153815,7 +153762,7 @@ - + @@ -153830,10 +153777,10 @@ - + - + @@ -153844,13 +153791,13 @@ - + - + @@ -153858,7 +153805,7 @@ - + @@ -153866,7 +153813,7 @@ - + @@ -153877,13 +153824,13 @@ - + - + - + @@ -153892,7 +153839,7 @@ - + @@ -153900,24 +153847,24 @@ - + - + - + - + - + - + @@ -153954,13 +153901,13 @@ - + - - + + @@ -153969,16 +153916,16 @@ - + - + - + - - + + @@ -153995,8 +153942,8 @@ - - + + @@ -154007,28 +153954,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -154062,8 +154009,8 @@ - - + + @@ -154105,34 +154052,34 @@ - + - + - + - + - + - + - + @@ -154261,11 +154208,11 @@ - + - + @@ -154387,12 +154334,12 @@ - + - + @@ -154439,7 +154386,7 @@ - + @@ -154530,60 +154477,60 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -154594,11 +154541,11 @@ - + - + @@ -154618,17 +154565,17 @@ - + - + - + @@ -154686,7 +154633,7 @@ - + @@ -154815,7 +154762,7 @@ - + @@ -154881,71 +154828,71 @@ - + - + - + - + - + - - + + - + - + - + - - - + + + - + - + - + - + - + - + - + @@ -154954,29 +154901,29 @@ - + - + - + - + - + - + - + @@ -155006,8 +154953,8 @@ - - + + @@ -155015,13 +154962,13 @@ - + - + - + @@ -155033,28 +154980,28 @@ - + - + - + - + - + - + - + - + @@ -155065,9 +155012,9 @@ - + - + @@ -155079,7 +155026,7 @@ - + @@ -155088,7 +155035,7 @@ - + @@ -155099,9 +155046,9 @@ - + - + @@ -155113,7 +155060,7 @@ - + @@ -155121,7 +155068,7 @@ - + @@ -155129,7 +155076,7 @@ - + @@ -155146,12 +155093,12 @@ - + - + @@ -155165,22 +155112,22 @@ - + - + - - - - - - - - + + + + + + + + @@ -155192,8 +155139,8 @@ - - + + @@ -155220,14 +155167,14 @@ - + - - - + + + @@ -155241,45 +155188,45 @@ - - + + - - + + - + - - + + - + - - + + - + - + - + - + - + @@ -155376,12 +155323,12 @@ - + - + @@ -155389,29 +155336,29 @@ - - + + - + - + - + - + - + @@ -155432,15 +155379,15 @@ - + - + - + - + @@ -155448,7 +155395,7 @@ - + @@ -155456,15 +155403,15 @@ - + - + - + @@ -155472,10 +155419,10 @@ - - - - + + + + @@ -155512,7 +155459,7 @@ - + @@ -155531,26 +155478,26 @@ - + - + - + - + - + - + - + - + @@ -155570,7 +155517,7 @@ - + @@ -155578,7 +155525,7 @@ - + @@ -155703,7 +155650,7 @@ - + @@ -155775,16 +155722,16 @@ - + - - - + + + @@ -155792,16 +155739,16 @@ - + - + - + - + @@ -155810,7 +155757,7 @@ - + @@ -155830,16 +155777,16 @@ - + + + + + - - - - - - - - + + + + @@ -155877,8 +155824,8 @@ - - + + @@ -155892,27 +155839,27 @@ - + - + - + - + - + - + @@ -155972,7 +155919,7 @@ - + @@ -156010,45 +155957,45 @@ - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -156085,7 +156032,7 @@ - + @@ -156093,15 +156040,15 @@ - + - - + + - + @@ -156115,7 +156062,7 @@ - + @@ -156135,34 +156082,34 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -156170,8 +156117,8 @@ - - + + @@ -156188,25 +156135,25 @@ - + - - - - - - - - - - + + + + + + + + + + - - + + @@ -156220,8 +156167,8 @@ - - + + @@ -156230,7 +156177,7 @@ - + @@ -156239,14 +156186,14 @@ - + - + @@ -156254,7 +156201,7 @@ - + @@ -156262,16 +156209,16 @@ - + - + - + - + @@ -156281,29 +156228,29 @@ - + - + - + - + - - - - - - + + + + + + - + @@ -156325,19 +156272,19 @@ - + - + - + - + @@ -156345,23 +156292,23 @@ - + - + - - + + - + @@ -156369,7 +156316,7 @@ - + @@ -156378,7 +156325,7 @@ - + @@ -156398,7 +156345,7 @@ - + @@ -156406,20 +156353,20 @@ - + - + - + @@ -156457,7 +156404,7 @@ - + @@ -156470,7 +156417,7 @@ - + @@ -156481,26 +156428,26 @@ - - - - + + + + - - + + - - + + - + @@ -156508,7 +156455,7 @@ - + @@ -156516,13 +156463,13 @@ - + - + @@ -156530,7 +156477,7 @@ - + @@ -156538,38 +156485,38 @@ - - + + - + - + - + - + - + - + - - + + @@ -156582,68 +156529,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -156651,39 +156598,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -156691,41 +156638,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -156733,15 +156680,15 @@ - + - + - + - + @@ -156755,23 +156702,23 @@ - + - + - + - + - + - + - + @@ -156782,7 +156729,7 @@ - + @@ -156805,12 +156752,12 @@ - + - + - + @@ -156822,7 +156769,7 @@ - + @@ -156834,165 +156781,165 @@ - + - + - - + + - + - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -157000,28 +156947,28 @@ - + - + - + - + - + - + - + @@ -157031,7 +156978,7 @@ - + @@ -157042,55 +156989,55 @@ - + - + - + - + - - + + - + - + - + - + - + - + @@ -157112,29 +157059,29 @@ - + - + - + - + - + - + - + - - - - + + + + @@ -157153,7 +157100,7 @@ - + @@ -157164,7 +157111,7 @@ - + @@ -157202,87 +157149,87 @@ - + - + - - + + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -157304,11 +157251,11 @@ - + - + @@ -157322,10 +157269,10 @@ - + - + @@ -157337,7 +157284,7 @@ - + @@ -157346,7 +157293,7 @@ - + @@ -157354,27 +157301,27 @@ - + - + - - + + - + - + - + @@ -157385,8 +157332,8 @@ - - + + @@ -157399,7 +157346,7 @@ - + @@ -157517,39 +157464,39 @@ - + - + - + - + - - + + - - + + - + - - + + @@ -157558,46 +157505,46 @@ - - + + - + - + - + - - - + + + - + - + - - + + - + @@ -157614,7 +157561,7 @@ - + @@ -157634,7 +157581,7 @@ - + @@ -157642,10 +157589,10 @@ - + - + @@ -157653,7 +157600,7 @@ - + @@ -157661,11 +157608,11 @@ - - - - - + + + + + @@ -157714,39 +157661,39 @@ - - + + - + - + - + - + - + - + - + @@ -157757,7 +157704,7 @@ - + @@ -157771,7 +157718,7 @@ - + @@ -157779,13 +157726,13 @@ - - - - - - - + + + + + + + @@ -157796,10 +157743,10 @@ - + - + @@ -157820,7 +157767,7 @@ - + @@ -157829,7 +157776,7 @@ - + @@ -157838,46 +157785,46 @@ - + - + - + - + - + - + - + - - + + - - + + @@ -157894,7 +157841,7 @@ - + @@ -157902,7 +157849,7 @@ - + @@ -157910,12 +157857,12 @@ - + - + - + @@ -157924,8 +157871,8 @@ - - + + @@ -157933,10 +157880,10 @@ - + - + @@ -157945,9 +157892,9 @@ - + - + @@ -157956,7 +157903,7 @@ - + @@ -157971,7 +157918,7 @@ - + @@ -157998,13 +157945,13 @@ - + - + @@ -158012,7 +157959,7 @@ - + @@ -158021,37 +157968,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -158076,8 +158023,8 @@ - - + + @@ -158085,10 +158032,10 @@ - + - + @@ -158102,7 +158049,7 @@ - + @@ -158113,41 +158060,41 @@ - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + @@ -158180,15 +158127,15 @@ - + - + - - + + @@ -158196,7 +158143,7 @@ - + @@ -158211,33 +158158,33 @@ - + - + - + - - + + - + - + @@ -158296,24 +158243,24 @@ - + - - + + - + - - + + - + @@ -158321,60 +158268,60 @@ - - + + - + - - - + + + - + - + - + - + - + - - - + + + - - - - + + + + - - + + - - + + - - + + @@ -158383,103 +158330,103 @@ - + - + - + - - - + + + - + - + - + - + - + - - + + - + - - + + - - + + - + - + - + - - + + - - + + - - + + - + - + @@ -158502,7 +158449,7 @@ - + @@ -158510,16 +158457,16 @@ - + - + - + - + @@ -158528,9 +158475,9 @@ - + - + @@ -158548,7 +158495,7 @@ - + @@ -158556,7 +158503,7 @@ - + @@ -158564,15 +158511,15 @@ - + - + - + - + @@ -158580,69 +158527,69 @@ - - - - + + + - - - + + + + - + - + - + - + - + - - + + - + - + - + - + - + + - - - + + - + @@ -158650,7 +158597,7 @@ - + @@ -158665,19 +158612,19 @@ - + - + - + - + @@ -158685,7 +158632,7 @@ - + @@ -158696,9 +158643,9 @@ - + - + @@ -158719,7 +158666,7 @@ - + @@ -158733,16 +158680,16 @@ - + - + - + - + @@ -158762,31 +158709,31 @@ - + + + + + - - - - - - - - - - - + + + + + + + - + - + - + - + @@ -158829,7 +158776,7 @@ - + @@ -158852,7 +158799,7 @@ - + @@ -158872,19 +158819,19 @@ - + - + - + @@ -158904,30 +158851,30 @@ - + - + - + - + - + @@ -158953,25 +158900,25 @@ - + - + - + - + - + - + @@ -158986,9 +158933,9 @@ - + - + @@ -159012,7 +158959,7 @@ - + @@ -159023,7 +158970,7 @@ - + @@ -159041,7 +158988,7 @@ - + @@ -159052,7 +158999,7 @@ - + @@ -159060,23 +159007,23 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -159084,28 +159031,28 @@ - + - + - + - + - + @@ -159113,37 +159060,37 @@ - + - + - - + + - + - + - + - - + + - + - - + + - - + + @@ -159154,18 +159101,18 @@ - + - + - + - + @@ -159179,33 +159126,33 @@ - + - + - + - + - + - + - + - + - + @@ -159216,31 +159163,31 @@ - + - + - + - + - + - + - + - + - + - + @@ -159249,7 +159196,7 @@ - + @@ -159258,85 +159205,85 @@ - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - + - - + + - + - + - + - - + + @@ -159346,171 +159293,171 @@ - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - - - - + + + + - + - - + + - - + + - - + + - + - - - + + + - - + + - + - + - + - - + + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + @@ -159518,7 +159465,7 @@ - + @@ -159528,79 +159475,79 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -159616,11 +159563,11 @@ - + - + @@ -159629,24 +159576,24 @@ - + - + - + - + @@ -159655,10 +159602,10 @@ - + - + @@ -159667,29 +159614,29 @@ - + - + - - - + + + - + - + - + @@ -159697,7 +159644,7 @@ - + @@ -159705,7 +159652,7 @@ - + @@ -159713,20 +159660,20 @@ - + - + - + @@ -159735,7 +159682,7 @@ - + @@ -159769,7 +159716,7 @@ - + @@ -159777,7 +159724,7 @@ - + @@ -159788,50 +159735,50 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + @@ -159841,11 +159788,11 @@ - + - + @@ -159876,66 +159823,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - - + + @@ -159945,40 +159892,40 @@ - + - + - - + + - + - + - + - + - - - + + + - + @@ -159986,25 +159933,25 @@ - - + + - - - + + + - + - + - - + + @@ -160012,28 +159959,28 @@ - + - - + + - - + + - + - + @@ -160042,14 +159989,14 @@ - + - + @@ -160063,16 +160010,16 @@ - - + + - + - + @@ -160081,39 +160028,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -160125,66 +160072,66 @@ - - - - - - - - - - + + + + + + + + + + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -160195,119 +160142,119 @@ - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - - + + + - - - + + + - + - + - - + + - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + @@ -160319,7 +160266,7 @@ - + @@ -160327,10 +160274,10 @@ - + - + @@ -160341,25 +160288,25 @@ - - - + + + - + - + - + @@ -160369,89 +160316,89 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -160460,8 +160407,8 @@ - - + + @@ -160473,20 +160420,20 @@ - + - + - - + + @@ -160500,16 +160447,16 @@ - + - + - + @@ -160518,12 +160465,12 @@ - + - + - + @@ -160532,58 +160479,58 @@ - - + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + @@ -160591,13 +160538,13 @@ - + - + @@ -160623,80 +160570,80 @@ - - - + + + - + - - - + + + - + - + - + - - - + + + - - + + - + - - + + - + - + - + - + - + - - + + - + - + - + @@ -160706,16 +160653,16 @@ - + - + - + - - + + @@ -160723,8 +160670,8 @@ - - + + @@ -160732,16 +160679,16 @@ - - + + - + - + - + @@ -160751,16 +160698,16 @@ - + - + - + - - + + @@ -160768,8 +160715,8 @@ - - + + @@ -160777,133 +160724,133 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - - - + + + - + - - + + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - + @@ -160911,48 +160858,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -160978,7 +160925,7 @@ - + @@ -161007,7 +160954,7 @@ - + @@ -161018,7 +160965,7 @@ - + @@ -161029,7 +160976,7 @@ - + @@ -161067,7 +161014,7 @@ - + @@ -161096,7 +161043,7 @@ - + @@ -161125,7 +161072,7 @@ - + @@ -161148,7 +161095,7 @@ - + @@ -161168,7 +161115,7 @@ - + @@ -161176,7 +161123,7 @@ - + @@ -161193,10 +161140,10 @@ - + - + @@ -161222,7 +161169,7 @@ - + @@ -161236,54 +161183,54 @@ - - - - - - - - - + + + + + + + + + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + @@ -161291,34 +161238,34 @@ - + - + - + - + - + - + - + - - - + + + @@ -161326,23 +161273,23 @@ - - + + - - - + + + - + - - + + @@ -161350,52 +161297,52 @@ - + - - + + - + - + - - + + - + - + - - + + @@ -161406,8 +161353,8 @@ - - + + @@ -161416,25 +161363,25 @@ - - + + - + - + - + - + @@ -161445,23 +161392,23 @@ - + - + - - + + - + - + @@ -161470,13 +161417,13 @@ - + - + @@ -161488,16 +161435,16 @@ - + - + - + @@ -161512,7 +161459,7 @@ - + @@ -161523,63 +161470,63 @@ - - + + - + - - - + + + - + - + - + - - + + - + - + - + - + - + - + @@ -161590,7 +161537,7 @@ - + @@ -161599,30 +161546,30 @@ - + - + - + - + - + - + - + @@ -161655,10 +161602,10 @@ - + - + @@ -161668,10 +161615,10 @@ - + - + @@ -161683,32 +161630,32 @@ - + - + - + - + - + - + - + - + - + @@ -161741,7 +161688,7 @@ - + @@ -161752,7 +161699,7 @@ - + @@ -161761,117 +161708,117 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -161879,10 +161826,10 @@ - + - + @@ -161890,7 +161837,7 @@ - + @@ -161898,58 +161845,58 @@ - - - + + + + + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - + @@ -161958,38 +161905,38 @@ - + - + - + - + - + - + - + - + @@ -161997,19 +161944,19 @@ - + - + - + @@ -162020,13 +161967,13 @@ - - + + - - + + @@ -162043,17 +161990,17 @@ - + - + - + @@ -162063,17 +162010,17 @@ - + - + - + @@ -162105,43 +162052,43 @@ - + - + - + - + - + - + - + - + @@ -162150,29 +162097,29 @@ - + - + - + - + - + - - - + + + @@ -162180,65 +162127,65 @@ - - - + + + - + - + - - + + - + - - + + - - + + - + - + - + - + - - + + - - + + - + - - - - + + + + @@ -162246,7 +162193,7 @@ - + @@ -162266,9 +162213,9 @@ - + - + @@ -162289,12 +162236,12 @@ - + - - + + @@ -162306,18 +162253,18 @@ - + - + - + - + @@ -162332,7 +162279,7 @@ - + @@ -162341,17 +162288,17 @@ - + - + - + - + @@ -162360,7 +162307,7 @@ - + @@ -162368,38 +162315,38 @@ - + - + - + - - - + + + - + - + - + - + @@ -162409,15 +162356,15 @@ - + - + - + @@ -162428,7 +162375,7 @@ - + @@ -162440,43 +162387,43 @@ - + - + - - - - - - - - + + + + + + + + - + - + - + - + - + @@ -162497,7 +162444,7 @@ - + @@ -162547,17 +162494,17 @@ - + - + - + - + @@ -162568,20 +162515,20 @@ - + - + - + - + @@ -162590,7 +162537,7 @@ - + @@ -162616,11 +162563,11 @@ - - - + + + - + @@ -162634,7 +162581,7 @@ - + @@ -162646,14 +162593,14 @@ - + - + - + @@ -162662,12 +162609,12 @@ - + - + @@ -162744,10 +162691,10 @@ - + - - + + @@ -162763,9 +162710,9 @@ - - - + + + @@ -162808,7 +162755,7 @@ - + @@ -162849,10 +162796,10 @@ - + - + @@ -162890,14 +162837,14 @@ - - + + - + - + @@ -162906,14 +162853,14 @@ - + - + - + @@ -162971,7 +162918,7 @@ - + @@ -163005,7 +162952,7 @@ - + @@ -163066,7 +163013,7 @@ - + @@ -163233,7 +163180,7 @@ - + @@ -163377,7 +163324,7 @@ - + @@ -163407,11 +163354,11 @@ - + - + @@ -163458,9 +163405,9 @@ - + - + @@ -163469,42 +163416,42 @@ - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + @@ -163523,11 +163470,11 @@ - + - + - + @@ -163548,43 +163495,43 @@ - + - + - + - + - + - + - - + + - + - + @@ -163625,8 +163572,8 @@ - - + + @@ -163656,24 +163603,24 @@ - + - + - + - + - + @@ -163697,18 +163644,18 @@ - + - - - - - - + + + + + + @@ -163792,13 +163739,13 @@ - + - + @@ -163807,34 +163754,34 @@ - + - + - + - - - - + + + + - + - - + + @@ -163849,12 +163796,12 @@ - + - + @@ -163879,34 +163826,34 @@ - - + + - + - + - + - + - + - + - + @@ -163999,7 +163946,7 @@ - + @@ -164011,7 +163958,7 @@ - + @@ -164104,7 +164051,7 @@ - + @@ -164137,7 +164084,7 @@ - + @@ -164227,13 +164174,13 @@ - + - + - + @@ -164284,19 +164231,19 @@ - + - + - + - + @@ -164305,15 +164252,15 @@ - + - + - + - + @@ -164331,25 +164278,25 @@ - + - + - + - + - + @@ -164379,24 +164326,24 @@ - + - + - + - + - + @@ -164414,7 +164361,7 @@ - + @@ -164477,21 +164424,21 @@ - + - + - + - + - + @@ -164521,7 +164468,7 @@ - + @@ -164572,16 +164519,16 @@ - + - + - + - + @@ -164590,10 +164537,10 @@ - + - + @@ -164601,7 +164548,7 @@ - + @@ -164648,7 +164595,7 @@ - + @@ -164659,19 +164606,19 @@ - + - + - + @@ -164679,10 +164626,10 @@ - + - + @@ -164690,23 +164637,23 @@ - + - + - + - + - + - + @@ -164718,7 +164665,7 @@ - + @@ -164730,7 +164677,7 @@ - + @@ -164742,7 +164689,7 @@ - + @@ -164756,22 +164703,22 @@ - + - + - + - + - + @@ -164779,7 +164726,7 @@ - + @@ -164793,9 +164740,9 @@ - + - + @@ -164804,15 +164751,15 @@ - + - + - + @@ -164820,7 +164767,7 @@ - + @@ -164853,7 +164800,7 @@ - + @@ -164876,10 +164823,10 @@ - + - + @@ -164899,7 +164846,7 @@ - + @@ -164907,16 +164854,16 @@ - + - + - + @@ -164925,7 +164872,7 @@ - + @@ -164954,7 +164901,7 @@ - + @@ -164971,7 +164918,7 @@ - + @@ -164997,12 +164944,12 @@ - + - + - + @@ -165010,7 +164957,7 @@ - + @@ -165018,7 +164965,7 @@ - + @@ -165029,7 +164976,7 @@ - + @@ -165040,7 +164987,7 @@ - + @@ -165048,9 +164995,9 @@ - + - + @@ -165062,35 +165009,35 @@ - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + @@ -165105,12 +165052,12 @@ - + - + @@ -165129,26 +165076,26 @@ - + - + - + - + - + @@ -165156,9 +165103,9 @@ - + - + @@ -165179,13 +165126,13 @@ - + - + - + @@ -165448,7 +165395,7 @@ - + @@ -165466,7 +165413,7 @@ - + @@ -165480,9 +165427,9 @@ - - - + + + @@ -165497,17 +165444,17 @@ - - + + - + - + @@ -165544,11 +165491,11 @@ - + - + @@ -165556,10 +165503,10 @@ - - - - + + + + @@ -165568,7 +165515,7 @@ - + @@ -165580,13 +165527,13 @@ - + - + @@ -165596,7 +165543,7 @@ - + @@ -165620,7 +165567,7 @@ - + @@ -165628,7 +165575,7 @@ - + @@ -165648,15 +165595,7 @@ - - - - - - - - - + @@ -165750,11 +165689,11 @@ - + - + @@ -165805,9 +165744,9 @@ - + - + @@ -165825,46 +165764,46 @@ - + - + - + - + - + - + - - + + - + - + - + - + @@ -165874,12 +165813,12 @@ - + - + @@ -165908,11 +165847,11 @@ - + - + @@ -165945,36 +165884,36 @@ - + - + - + - + - + - + - + - + - - - + + + - + @@ -165983,16 +165922,16 @@ - + - + - + @@ -166000,14 +165939,14 @@ - + - + @@ -166027,10 +165966,10 @@ - + - + @@ -166039,19 +165978,19 @@ - - - + + + - - + + - + @@ -166059,7 +165998,7 @@ - + @@ -166070,7 +166009,7 @@ - + @@ -166122,33 +166061,33 @@ - + - + - + - + - + - + - + - - - - - + + + + + - + @@ -166235,33 +166174,33 @@ - + - + - + - + - + - + @@ -166272,26 +166211,26 @@ - + - + - + - + - + - + - + @@ -166305,18 +166244,18 @@ - + - + - + - + - + @@ -166348,31 +166287,31 @@ - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - + @@ -166392,9 +166331,9 @@ - + - + @@ -166412,31 +166351,31 @@ - + - + - + - + - + - + - + - + - - + + @@ -166446,7 +166385,7 @@ - + @@ -166459,7 +166398,7 @@ - + @@ -166524,7 +166463,7 @@ - + @@ -166533,7 +166472,7 @@ - + @@ -166550,12 +166489,12 @@ - - - + + + - - + + @@ -166566,29 +166505,29 @@ - + - + - + - - + + - - + + - + - + @@ -166627,10 +166566,10 @@ - + - + @@ -166642,10 +166581,10 @@ - + - + @@ -166654,7 +166593,7 @@ - + @@ -166666,7 +166605,7 @@ - + @@ -166686,12 +166625,12 @@ - + - + - + @@ -166703,24 +166642,24 @@ - + - + - + - + @@ -166737,52 +166676,52 @@ - + - + - + - - - - - - - - + + + + + + + + - + - + - + - - + + - + - + - - + + @@ -166795,13 +166734,13 @@ - + - + @@ -166832,27 +166771,27 @@ - + - + - + - + @@ -166872,61 +166811,61 @@ - + - - + + - + - + - - - - + + + + - + - + - + - + - + - + - + @@ -166937,7 +166876,7 @@ - + @@ -166961,15 +166900,15 @@ - + - + - + @@ -166977,48 +166916,48 @@ - + - + - + - + - + - - - - - - + + + + + + - + - + - - - - + + + + - - + + - + @@ -167044,7 +166983,7 @@ - + @@ -167068,15 +167007,15 @@ - + - + - + @@ -167084,9 +167023,9 @@ - + - + @@ -167116,7 +167055,7 @@ - + @@ -167127,18 +167066,18 @@ - - + + - + - + - + - + @@ -167148,28 +167087,28 @@ - + - + - + - + - + - + @@ -167183,7 +167122,7 @@ - + @@ -167204,12 +167143,12 @@ - + - + @@ -167222,12 +167161,12 @@ - - - - + + + + - + @@ -167240,21 +167179,21 @@ - + - + - + - + @@ -167271,11 +167210,11 @@ - + - + @@ -167289,24 +167228,24 @@ - + - + - + - + - + - + @@ -167321,24 +167260,24 @@ - + - + - + - + - + - + @@ -167362,40 +167301,40 @@ - - - + + + - + - + - - - - + + + + - + - + - + @@ -167418,15 +167357,15 @@ - + - + - + - + @@ -167438,24 +167377,24 @@ - + - + - + - + - + - + @@ -167464,10 +167403,10 @@ - + - + @@ -167506,7 +167445,7 @@ - + @@ -167514,35 +167453,35 @@ - - + + - + - + - - - - - - + + + + + + - - - - + + + + - + @@ -167556,7 +167495,7 @@ - + @@ -167574,7 +167513,7 @@ - + @@ -167594,15 +167533,15 @@ - + - + - + @@ -167619,27 +167558,27 @@ - + - + - + - + - + - + - + - + @@ -167648,27 +167587,27 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + @@ -167676,9 +167615,9 @@ - + - + @@ -167690,14 +167629,14 @@ - + - + @@ -167709,50 +167648,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -167764,28 +167703,28 @@ - + - + - + - + - + - - + + @@ -167794,19 +167733,19 @@ - + - + - + @@ -167815,7 +167754,7 @@ - + @@ -167841,9 +167780,9 @@ - + - + @@ -167852,26 +167791,26 @@ - + - + - + - + - + - + - + @@ -167910,25 +167849,25 @@ - + - + - + - + - + - + - + @@ -167937,13 +167876,13 @@ - + - + - + @@ -167951,23 +167890,23 @@ - - - - - + + + + + + + + + + - - - - - - - - - - - + + + + + + @@ -167979,8 +167918,8 @@ - - + + @@ -167996,7 +167935,7 @@ - + @@ -168015,8 +167954,8 @@ - - + + @@ -168046,18 +167985,18 @@ - - + + - + - + @@ -168069,7 +168008,7 @@ - + @@ -168078,7 +168017,7 @@ - + @@ -168086,7 +168025,7 @@ - + @@ -168109,16 +168048,16 @@ - + - + - + @@ -168130,51 +168069,51 @@ - + - + - - + + - + - - + + - - + + - + - + - + - + - + - + @@ -168189,7 +168128,7 @@ - + @@ -168206,7 +168145,7 @@ - + @@ -168217,47 +168156,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -168278,12 +168217,12 @@ - + - + - + @@ -168292,7 +168231,7 @@ - + @@ -168300,28 +168239,28 @@ - + - + - + - + - + - + - + - + @@ -168330,91 +168269,91 @@ - + - + - + - + - + + + + + + + - + - + - - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - - + + - + - + - + @@ -168425,7 +168364,7 @@ - + @@ -168438,12 +168377,12 @@ - + - - + + @@ -168451,38 +168390,38 @@ - - + + - + - + - + - + - + - + - + @@ -168490,39 +168429,39 @@ - + - + - - + + - + - + - - + + - + - + @@ -168531,38 +168470,38 @@ - + - - + + - + - + - + - + - - + + @@ -168576,8 +168515,8 @@ - - + + @@ -168588,60 +168527,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -168659,62 +168598,62 @@ - + - - - - - - + + + + + + - + - - + + - + - + - - - + + + - - + + - - - + + + - - - + + + - - + + - + @@ -168724,23 +168663,23 @@ - + - + - + - + - + @@ -168748,15 +168687,15 @@ - + - + - + - + @@ -168768,7 +168707,7 @@ - + @@ -168776,27 +168715,27 @@ - - - - + + + + - + - + - + - - + + @@ -168816,7 +168755,7 @@ - + @@ -168842,17 +168781,17 @@ - + - + - + @@ -168866,27 +168805,27 @@ - + - + - + - + - + - + - + - + @@ -168894,7 +168833,7 @@ - + @@ -168902,7 +168841,7 @@ - + @@ -168913,12 +168852,12 @@ - + - + @@ -168935,47 +168874,47 @@ - + - + - + - + - + - + - + - + - + - + @@ -168989,31 +168928,31 @@ - + - + - + - + - + - + @@ -169036,12 +168975,12 @@ - + - + @@ -169051,8 +168990,8 @@ - - + + @@ -169083,11 +169022,11 @@ - + - + @@ -169097,14 +169036,14 @@ - + - + - + @@ -169122,7 +169061,7 @@ - + @@ -169148,7 +169087,7 @@ - + @@ -169180,9 +169119,9 @@ - + - + @@ -169194,23 +169133,23 @@ - + - - - - - + + + + + - + - + @@ -169221,12 +169160,12 @@ - + - + @@ -169238,44 +169177,44 @@ - + - + - - + + - - + + - - + + - + - - - + + + @@ -169287,7 +169226,7 @@ - + @@ -169307,21 +169246,21 @@ - + - + - + @@ -169329,13 +169268,13 @@ - + - + @@ -169344,7 +169283,7 @@ - + @@ -169355,7 +169294,7 @@ - + @@ -169366,37 +169305,37 @@ - + - + - - + + - + - + - + - + - + @@ -169404,14 +169343,14 @@ - + - + @@ -169452,12 +169391,12 @@ - + - + @@ -169505,7 +169444,7 @@ - + @@ -169513,31 +169452,31 @@ - + - + - + - + - + - + - + - + - + @@ -169553,9 +169492,9 @@ - + - + @@ -169565,7 +169504,7 @@ - + @@ -169573,25 +169512,25 @@ - - + + - - + + - + - + @@ -169614,23 +169553,23 @@ - + - + - + - + @@ -169638,27 +169577,27 @@ - - + + - + - - + + - - - + + + - - + + @@ -169703,18 +169642,18 @@ - - + + - + - + @@ -169722,23 +169661,23 @@ - + - + - - - - + + + + - + @@ -169761,18 +169700,18 @@ - - + + - + - + @@ -169781,59 +169720,59 @@ - - + + - + - + - + - + - + - + - + - + - - - - - + + + + + - + @@ -169847,20 +169786,28 @@ - - + + - + - + - + + + + + + + + + @@ -169868,7 +169815,7 @@ - + @@ -169877,12 +169824,12 @@ - + - + @@ -169891,15 +169838,15 @@ - + - + - + - + @@ -169911,48 +169858,48 @@ - + - + - + - + - + - + - + - + - + - + @@ -169966,24 +169913,24 @@ - + - + - + - + - + - + @@ -169998,13 +169945,13 @@ - + - + @@ -170042,30 +169989,30 @@ - - + + - + - + - - - - + + + + - + @@ -170094,17 +170041,17 @@ - - - + + + - - + + @@ -170113,42 +170060,34 @@ - - - - + + + + - + - - - - - - - - - + - + - + - + @@ -170167,7 +170106,7 @@ - + @@ -170232,36 +170171,36 @@ - - - + + + - - - + + + - + - - + + - - - + + + - + @@ -170277,18 +170216,18 @@ - + - + - - + + @@ -170297,92 +170236,92 @@ - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + @@ -170415,89 +170354,89 @@ - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - + - - - - + + + + - - - - + + + + - - + + - + - + - + - + - - + + @@ -170514,7 +170453,7 @@ - + @@ -170534,8 +170473,8 @@ - - + + @@ -170543,28 +170482,28 @@ - + - - + + - - + + - + - + @@ -170574,12 +170513,12 @@ - + - + @@ -170591,8 +170530,8 @@ - - + + @@ -170618,11 +170557,11 @@ - + - + @@ -170633,34 +170572,34 @@ - + - - - - - + + + + + - + - + - + - + @@ -170669,9 +170608,9 @@ - - - + + + @@ -170682,10 +170621,10 @@ - - - - + + + + @@ -170695,10 +170634,10 @@ - - - - + + + + @@ -170715,8 +170654,8 @@ - - + + @@ -170736,7 +170675,7 @@ - + @@ -170760,14 +170699,14 @@ - + - - - + + + @@ -170783,9 +170722,9 @@ - + - + @@ -170797,7 +170736,7 @@ - + @@ -170815,16 +170754,16 @@ - + - + - + - + @@ -170851,16 +170790,16 @@ - + - + - + @@ -170881,7 +170820,7 @@ - + @@ -170910,10 +170849,10 @@ - + - + @@ -170955,7 +170894,7 @@ - + @@ -171009,25 +170948,25 @@ - + - + - + - + - + - + - + @@ -171051,8 +170990,8 @@ - - + + @@ -171060,13 +170999,13 @@ - + - + @@ -171074,7 +171013,7 @@ - + @@ -171082,17 +171021,17 @@ - + - + - + - + - + @@ -171101,7 +171040,7 @@ - + @@ -171109,15 +171048,15 @@ - + - + - + @@ -171167,12 +171106,12 @@ - - - - - - + + + + + + @@ -171186,7 +171125,7 @@ - + @@ -171234,7 +171173,7 @@ - + @@ -171245,7 +171184,7 @@ - + @@ -171254,7 +171193,7 @@ - + @@ -171262,12 +171201,12 @@ - + - + @@ -171326,7 +171265,7 @@ - + @@ -171340,35 +171279,35 @@ - + - - + + - - + + - + - + - - + + - - - + + + @@ -171391,31 +171330,31 @@ - + - + - + - + - + - + - + - + @@ -171433,7 +171372,7 @@ - + @@ -171637,7 +171576,7 @@ - + @@ -171796,10 +171735,10 @@ - + - + @@ -171841,7 +171780,7 @@ - + @@ -171859,7 +171798,7 @@ - + @@ -171868,13 +171807,13 @@ - + - + @@ -171904,52 +171843,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -171963,15 +171902,15 @@ - + - + - + @@ -171986,7 +171925,7 @@ - + @@ -171998,7 +171937,7 @@ - + @@ -172019,7 +171958,7 @@ - + @@ -172028,7 +171967,7 @@ - + @@ -172036,7 +171975,7 @@ - + @@ -172056,7 +171995,7 @@ - + @@ -172088,7 +172027,7 @@ - + @@ -172096,22 +172035,22 @@ - + - + - + - + - + - + @@ -172119,25 +172058,25 @@ - + - + - + - + @@ -172167,7 +172106,7 @@ - + @@ -172230,7 +172169,7 @@ - + @@ -172296,7 +172235,7 @@ - + @@ -172305,168 +172244,168 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -172514,7 +172453,7 @@ - + @@ -172529,7 +172468,7 @@ - + @@ -172537,7 +172476,7 @@ - + @@ -172549,15 +172488,15 @@ - + - + - + - + @@ -172569,13 +172508,13 @@ - + - + @@ -172791,10 +172730,10 @@ - + - + @@ -172806,13 +172745,13 @@ - + - + @@ -172826,121 +172765,121 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - + @@ -172951,15 +172890,15 @@ - + - + - + - + @@ -172968,114 +172907,114 @@ - - - - - + + + + + - + - + - + - + - + - + - + - + - + - - - + + + - + - - + + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - - - + + + - - - + + + @@ -173092,8 +173031,8 @@ - - + + @@ -173117,7 +173056,7 @@ - + @@ -173129,7 +173068,7 @@ - + @@ -173138,7 +173077,7 @@ - + @@ -173147,11 +173086,11 @@ - + - + @@ -173186,10 +173125,10 @@ - + - + @@ -173213,12 +173152,12 @@ - + - + @@ -173247,7 +173186,7 @@ - + @@ -173255,7 +173194,7 @@ - + @@ -173336,31 +173275,31 @@ - + - + - + - + - + - + - + @@ -173370,18 +173309,18 @@ - + - + - + - + @@ -173405,9 +173344,9 @@ - + - + @@ -173443,55 +173382,55 @@ - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -173500,7 +173439,7 @@ - + @@ -173510,7 +173449,7 @@ - + @@ -173521,51 +173460,51 @@ - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + @@ -173573,90 +173512,90 @@ - + - + - + + + + + + + + + + + + + + - - + + - - + + + + + + + + + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - + - + - + @@ -173664,13 +173603,13 @@ - + - + - + @@ -173697,13 +173636,13 @@ - + - + @@ -173769,10 +173708,10 @@ - + - + @@ -173799,7 +173738,7 @@ - + @@ -173808,13 +173747,13 @@ - + - + - + @@ -173826,10 +173765,10 @@ - + - + @@ -173838,13 +173777,13 @@ - + - + - + @@ -173883,18 +173822,18 @@ - + - + - + @@ -173902,9 +173841,9 @@ - + - + @@ -173928,7 +173867,7 @@ - + @@ -173936,13 +173875,13 @@ - + - + @@ -173962,12 +173901,12 @@ - + - + - + @@ -173982,7 +173921,7 @@ - + @@ -173993,7 +173932,7 @@ - + @@ -174016,19 +173955,19 @@ - + - + - + - + @@ -174042,7 +173981,7 @@ - + @@ -174068,7 +174007,7 @@ - + @@ -174086,10 +174025,10 @@ - + - + @@ -174100,7 +174039,7 @@ - + @@ -174111,12 +174050,12 @@ - + - + @@ -174125,7 +174064,7 @@ - + @@ -174137,7 +174076,7 @@ - + @@ -174149,7 +174088,7 @@ - + @@ -174167,10 +174106,10 @@ - + - + @@ -174194,26 +174133,26 @@ - + - + - + - + - + - + @@ -174222,10 +174161,10 @@ - + - + @@ -174233,15 +174172,15 @@ - + - + - + @@ -174249,12 +174188,12 @@ - + - + - + @@ -174284,7 +174223,7 @@ - + @@ -174296,13 +174235,13 @@ - + - + - + @@ -174320,13 +174259,13 @@ - + - + - + @@ -174362,7 +174301,7 @@ - + @@ -174374,7 +174313,7 @@ - + @@ -174392,18 +174331,18 @@ - + - + - + - + @@ -174420,16 +174359,16 @@ - + - + - + @@ -174437,7 +174376,7 @@ - + @@ -174466,30 +174405,30 @@ - + - + - + - + - + - + - + - + - + @@ -174510,7 +174449,7 @@ - + @@ -174522,9 +174461,9 @@ - + - + @@ -174557,7 +174496,7 @@ - + @@ -174566,13 +174505,13 @@ - + - + @@ -174589,12 +174528,12 @@ - + - + - + @@ -174603,10 +174542,10 @@ - + - + @@ -174617,15 +174556,15 @@ - + - + - + @@ -174640,7 +174579,7 @@ - + @@ -174651,12 +174590,12 @@ - + - + - + @@ -174668,15 +174607,15 @@ - + - + - + - + @@ -174685,22 +174624,22 @@ - + - + - + - + - + @@ -174714,7 +174653,7 @@ - + @@ -174728,12 +174667,12 @@ - + - + - + @@ -174745,7 +174684,7 @@ - + @@ -174753,10 +174692,10 @@ - + - + @@ -174770,37 +174709,37 @@ - + - + - + - + - + - + - + - + - + @@ -174820,7 +174759,7 @@ - + @@ -174828,16 +174767,16 @@ - + - + - + - + @@ -174846,39 +174785,39 @@ - + - + - + - + - + - + @@ -174886,24 +174825,24 @@ - + - + - + - + - + - + - + @@ -174915,7 +174854,7 @@ - + @@ -174926,7 +174865,7 @@ - + @@ -174934,15 +174873,15 @@ - + - + - + - + @@ -174956,7 +174895,7 @@ - + @@ -174964,7 +174903,7 @@ - + @@ -174976,15 +174915,15 @@ - + - + - + @@ -175004,18 +174943,18 @@ - + - + - + - + @@ -175024,7 +174963,7 @@ - + @@ -175032,9 +174971,9 @@ - + - + @@ -175043,7 +174982,7 @@ - + @@ -175051,10 +174990,10 @@ - + - + @@ -175062,7 +175001,7 @@ - + @@ -175073,10 +175012,10 @@ - + - + @@ -175105,333 +175044,333 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -175448,12 +175387,12 @@ - + - + - + @@ -175468,19 +175407,19 @@ - + - + - + - + @@ -175492,22 +175431,22 @@ - + - + - + - + - + @@ -175522,10 +175461,10 @@ - + - + @@ -175578,13 +175517,13 @@ - + - + @@ -175616,7 +175555,7 @@ - + @@ -175631,7 +175570,7 @@ - + @@ -175645,7 +175584,7 @@ - + @@ -175653,48 +175592,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -175705,7 +175644,7 @@ - + @@ -175740,10 +175679,10 @@ - + - + @@ -175752,7 +175691,7 @@ - + @@ -175785,7 +175724,7 @@ - + @@ -175794,10 +175733,10 @@ - + - + @@ -175806,21 +175745,21 @@ - + - + - + - + @@ -175831,7 +175770,7 @@ - + @@ -175869,16 +175808,16 @@ - + - + - + - + @@ -175896,10 +175835,10 @@ - + - + @@ -175917,13 +175856,13 @@ - + - + - + @@ -175944,7 +175883,7 @@ - + @@ -175965,7 +175904,7 @@ - + @@ -175994,7 +175933,7 @@ - + @@ -176005,7 +175944,7 @@ - + @@ -176013,7 +175952,7 @@ - + @@ -176030,10 +175969,10 @@ - + - + @@ -176071,7 +176010,7 @@ - + @@ -176106,7 +176045,7 @@ - + @@ -176186,7 +176125,7 @@ - + @@ -176195,9 +176134,9 @@ - + - + @@ -176245,7 +176184,7 @@ - + @@ -176254,12 +176193,12 @@ - + - + - + @@ -176288,9 +176227,9 @@ - + - + @@ -176305,7 +176244,7 @@ - + @@ -176313,9 +176252,9 @@ - + - + @@ -176324,7 +176263,7 @@ - + @@ -176345,7 +176284,7 @@ - + @@ -176357,13 +176296,13 @@ - + - + @@ -176372,10 +176311,10 @@ - + - + @@ -176386,9 +176325,9 @@ - + - + @@ -176397,7 +176336,7 @@ - + @@ -176415,9 +176354,9 @@ - + - + @@ -176429,7 +176368,7 @@ - + @@ -176438,16 +176377,16 @@ - + - + - + - + @@ -176459,7 +176398,7 @@ - + @@ -176476,9 +176415,9 @@ - + - + @@ -176493,12 +176432,12 @@ - + - + - + @@ -176513,7 +176452,7 @@ - + @@ -176525,10 +176464,10 @@ - + - + @@ -176546,22 +176485,22 @@ - + - + - + - + - + @@ -176591,24 +176530,24 @@ - + - + - + - + - + - + @@ -176617,15 +176556,15 @@ - + - + - + - + @@ -176633,7 +176572,7 @@ - + @@ -176669,21 +176608,21 @@ - + - + - + - + - + @@ -176713,7 +176652,7 @@ - + @@ -176736,9 +176675,9 @@ - + - + @@ -176765,7 +176704,7 @@ - + @@ -176776,7 +176715,7 @@ - + @@ -176784,7 +176723,7 @@ - + @@ -176795,7 +176734,7 @@ - + @@ -176803,39 +176742,39 @@ - + - + - + - + - + - + - + - + - + @@ -176850,7 +176789,7 @@ - + @@ -176862,18 +176801,18 @@ - + - + - + - + @@ -176881,7 +176820,7 @@ - + @@ -176889,7 +176828,7 @@ - + @@ -176897,9 +176836,9 @@ - + - + @@ -176923,7 +176862,7 @@ - + @@ -176947,16 +176886,16 @@ - + - + - + @@ -176971,7 +176910,7 @@ - + @@ -176979,7 +176918,7 @@ - + @@ -176987,7 +176926,7 @@ - + @@ -177001,15 +176940,15 @@ - + - + - + @@ -177021,12 +176960,12 @@ - + - + @@ -177058,7 +176997,7 @@ - + @@ -177084,26 +177023,26 @@ - + - + - + - + - + - + @@ -177133,14 +177072,14 @@ - + - + @@ -177154,499 +177093,499 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + - - + + - - + + - - - - - - - + - - + - + - + - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + - - + + + + + + + + + + + + + + - - + + - + + + + + + + + + + + + + - + - + + - + - + - + - + + - + - + + - + - + + - + - + + - + - - + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + - + - - + + @@ -177658,143 +177597,143 @@ - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - - - - - - - - - - - - - - - - - - + + - + + + - - + + - + + + + - - + + - + - - + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + @@ -177802,233 +177741,233 @@ - - + + - - + + - + - - + + - + - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + + - - - + + + - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - - + + + - + - + - + - + @@ -178037,7 +177976,7 @@ - + @@ -178064,7 +178003,7 @@ - + @@ -178078,17 +178017,17 @@ - + - + - + - + @@ -178100,7 +178039,7 @@ - + @@ -178108,33 +178047,33 @@ - - - - - - - - - + + + + + + + + + - - + + - + - + - + - + @@ -178142,7 +178081,7 @@ - + @@ -178159,7 +178098,7 @@ - + @@ -178170,7 +178109,7 @@ - + @@ -178194,7 +178133,7 @@ - + @@ -178208,38 +178147,38 @@ - + - - - - - - - - - - - + + + + + + + + + + + - + - + - - + + - + @@ -178247,9 +178186,9 @@ - + - + @@ -178260,22 +178199,22 @@ - + - + - + - + - + @@ -178283,22 +178222,22 @@ - + - + - + - + - + @@ -178315,49 +178254,49 @@ - + - + - - - + + + - - + + - - + + - + - + - + - + @@ -178367,76 +178306,76 @@ - - + + - - + + - - - - + + + + - - + + - + - + - + - + - - + + - + - - + + - + - + - + - + - + @@ -178454,16 +178393,16 @@ - + - + - + @@ -178483,45 +178422,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -178535,12 +178474,12 @@ - + - + @@ -178551,7 +178490,7 @@ - + @@ -178565,7 +178504,7 @@ - + @@ -178579,12 +178518,12 @@ - + - + @@ -178598,12 +178537,12 @@ - + - + @@ -178617,68 +178556,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -178692,7 +178631,7 @@ - + @@ -178700,18 +178639,18 @@ - + - + - + @@ -178725,7 +178664,7 @@ - + @@ -178739,10 +178678,10 @@ - + - + @@ -178756,7 +178695,7 @@ - + @@ -178776,7 +178715,7 @@ - + @@ -178793,7 +178732,7 @@ - + @@ -178804,7 +178743,7 @@ - + @@ -178812,7 +178751,7 @@ - + @@ -178820,7 +178759,7 @@ - + @@ -178828,7 +178767,7 @@ - + @@ -178836,7 +178775,7 @@ - + @@ -178844,7 +178783,7 @@ - + @@ -178858,7 +178797,7 @@ - + @@ -178866,7 +178805,7 @@ - + @@ -178877,7 +178816,7 @@ - + @@ -178891,10 +178830,10 @@ - + - + @@ -178902,7 +178841,7 @@ - + @@ -178928,32 +178867,32 @@ - - - - + + + + - + - - + + - - + + - + - + @@ -178964,38 +178903,38 @@ - + - + - - + + - - - + + + - - + + - - - + + + @@ -179003,51 +178942,51 @@ - + - - - + + + - + - - + + - - + + - - + + - - - + + + - - - + + + - + - + @@ -179055,7 +178994,7 @@ - + @@ -179066,15 +179005,7 @@ - - - - - - - - - + @@ -179086,7 +179017,7 @@ - + @@ -179233,7 +179164,7 @@ - + @@ -179521,9 +179452,9 @@ - + - + @@ -179544,38 +179475,38 @@ - + - + - + - + - + - + - + @@ -179619,20 +179550,20 @@ - + - + - + - + - + @@ -179641,7 +179572,7 @@ - + @@ -179658,23 +179589,23 @@ - - - - - - + + + + + + - - - + + + - - - - + + + + @@ -179687,23 +179618,23 @@ - - + + - + - + - - - + + + @@ -179712,7 +179643,7 @@ - + @@ -179731,45 +179662,45 @@ - + - + - + - + - + - + - + - + - + @@ -179786,7 +179717,7 @@ - + @@ -179802,7 +179733,7 @@ - + @@ -179845,19 +179776,19 @@ - + - + - + @@ -179872,7 +179803,7 @@ - + @@ -179880,51 +179811,51 @@ - - + + - + - + - + - + - + - + - + @@ -179933,11 +179864,11 @@ - - + + - + @@ -179958,12 +179889,12 @@ - + - + @@ -179975,14 +179906,14 @@ - + - + @@ -179991,15 +179922,15 @@ - - + + - - + + @@ -180008,13 +179939,13 @@ - + - + @@ -180029,7 +179960,7 @@ - + @@ -180037,7 +179968,7 @@ - + @@ -180052,13 +179983,13 @@ - + - + - + @@ -180081,19 +180012,19 @@ - + - + - + - + @@ -180111,20 +180042,20 @@ - + - - + + - + - + @@ -180145,7 +180076,7 @@ - + @@ -180153,42 +180084,42 @@ - - - + + + - - - + + + - + - - - + + + - - - + + + - - + + - - - + + + @@ -180200,7 +180131,7 @@ - + @@ -180208,7 +180139,7 @@ - + @@ -180220,32 +180151,32 @@ - + - + - + - + - + - + - + @@ -180259,7 +180190,7 @@ - + @@ -180289,10 +180220,10 @@ - + - + @@ -180349,7 +180280,7 @@ - + @@ -180360,29 +180291,37 @@ - + - - - + + + - - + + + + + + + + + + - + - + @@ -180390,118 +180329,118 @@ - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -180567,7 +180506,7 @@ - + @@ -180582,7 +180521,7 @@ - + @@ -180597,7 +180536,7 @@ - + @@ -180620,16 +180559,16 @@ - + - + - + @@ -180637,7 +180576,7 @@ - + @@ -180645,15 +180584,15 @@ - + - + - + - + @@ -180661,7 +180600,7 @@ - + @@ -180672,7 +180611,7 @@ - + @@ -180680,7 +180619,7 @@ - + @@ -180709,311 +180648,311 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -181024,13 +180963,13 @@ - + - + - + @@ -181048,13 +180987,13 @@ - + - + - + @@ -181078,34 +181017,34 @@ - + - + - + - + - + - + - + @@ -181122,20 +181061,20 @@ - + - + - + - + - + @@ -181147,12 +181086,12 @@ - + - + - + @@ -181173,10 +181112,10 @@ - + - + @@ -181185,13 +181124,13 @@ - + - + @@ -181271,7 +181210,7 @@ - + @@ -181292,10 +181231,10 @@ - + - + @@ -181313,7 +181252,7 @@ - + @@ -181325,10 +181264,10 @@ - + - + @@ -181343,7 +181282,7 @@ - + @@ -181364,13 +181303,13 @@ - + - + - + @@ -181378,7 +181317,7 @@ - + @@ -181386,10 +181325,10 @@ - + - + @@ -181403,7 +181342,7 @@ - + @@ -181417,7 +181356,7 @@ - + @@ -181428,12 +181367,12 @@ - + - + - + @@ -181448,12 +181387,12 @@ - + - + @@ -181482,20 +181421,20 @@ - + - + - + - + - + - + @@ -181504,7 +181443,7 @@ - + @@ -181518,32 +181457,32 @@ - + - + - + - + - + - + - + - + - + - + @@ -181551,27 +181490,27 @@ - + - + - + - + - + @@ -181579,12 +181518,12 @@ - + - + @@ -181592,7 +181531,7 @@ - + @@ -181615,10 +181554,10 @@ - + - + @@ -181629,12 +181568,12 @@ - + - + - + @@ -181652,7 +181591,7 @@ - + @@ -181662,7 +181601,7 @@ - + @@ -181673,7 +181612,7 @@ - + @@ -181682,74 +181621,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -181758,38 +181697,38 @@ - + - + - + - + - + - + - + - + - + - + @@ -181813,574 +181752,574 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - - + + - - - + + + - - - - - - + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - + + + + - - - - - + + + - - - - - - + - - - + + + - - - + + + - - - - - + + - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + + + + + + + - - - - + + + + - - - - - - - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - + + + - - - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + @@ -182388,33 +182327,33 @@ - + - + - + - + - + - + - + - + @@ -182428,54 +182367,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -182493,7 +182432,7 @@ - + @@ -182504,15 +182443,15 @@ - - + + - + - + @@ -182536,86 +182475,86 @@ - + - + - + - - + + - + - + - + - - + + - - - + + + - + - + - + - + - + - - + + - + - + - + - + @@ -182624,63 +182563,63 @@ - - + + - + - + - + - + - - + + - + - + - + - + - + @@ -182688,19 +182627,19 @@ - + - + - + @@ -182708,14 +182647,14 @@ - + - + @@ -182723,54 +182662,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -182788,100 +182727,100 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - - + + - + - - - + + + - + - + - + - + - + - + - - - + + + - + - - - + + + - + - - + + - + - + - + - + - - + + - + - + @@ -182889,25 +182828,25 @@ - + - + - + - + @@ -182915,47 +182854,47 @@ - + - + - + - - + + - - + + - + - + - + - + - + @@ -182963,17 +182902,17 @@ - + - + - + @@ -182981,10 +182920,10 @@ - + - + @@ -182998,7 +182937,7 @@ - + @@ -183009,90 +182948,90 @@ - - - - - - + + + + + + - - + + - + - - + + - + - + - - + + - - + + - + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - + @@ -183100,98 +183039,98 @@ - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - - + + + - + - + - + - + - + - + - - - + + + - - - - - + + + + + - + - + @@ -183205,10 +183144,10 @@ - + - + @@ -183219,176 +183158,176 @@ - - - - - + + + + + - + - + - - + + - - - + + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - - - + + + - + - + @@ -183398,41 +183337,41 @@ - - + + - + - + - + - - + + - + - + - + @@ -183440,22 +183379,22 @@ - - + + - + - - - + + + - + @@ -183464,27 +183403,27 @@ - + - + - + - + - + - + - + - + @@ -183508,7 +183447,7 @@ - + @@ -183522,7 +183461,7 @@ - + @@ -183542,7 +183481,7 @@ - + @@ -183581,30 +183520,30 @@ - + - + - + - + - + - + @@ -183615,21 +183554,21 @@ - + - + - + - + - + - + @@ -183637,7 +183576,7 @@ - + @@ -183648,15 +183587,15 @@ - + - + - + @@ -183664,7 +183603,7 @@ - + @@ -183678,23 +183617,23 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -183708,58 +183647,58 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -183772,95 +183711,95 @@ - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + @@ -183970,11 +183909,11 @@ - + - + @@ -183995,13 +183934,13 @@ - - - - - + + + + + - + @@ -184009,7 +183948,7 @@ - + @@ -184017,7 +183956,7 @@ - + @@ -184025,54 +183964,54 @@ - + - + - - + + - + - + - + - + - + - + - + @@ -184083,7 +184022,7 @@ - + @@ -184124,25 +184063,25 @@ - + - + - + - + - + @@ -184240,7 +184179,7 @@ - + @@ -184254,7 +184193,7 @@ - + @@ -184266,7 +184205,7 @@ - + @@ -184278,26 +184217,26 @@ - - + + - + - + - + - + @@ -184308,18 +184247,18 @@ - + - + - + - + - + @@ -184336,19 +184275,19 @@ - + - + - + - + @@ -184356,10 +184295,10 @@ - - - - + + + + @@ -184375,12 +184314,12 @@ - + - + @@ -184403,31 +184342,31 @@ - + - + - - + + - + - + @@ -184435,8 +184374,8 @@ - - + + @@ -184444,7 +184383,7 @@ - + @@ -184460,7 +184399,7 @@ - + @@ -184469,28 +184408,28 @@ - + - + - + - - - - - + + + + + - + @@ -184506,23 +184445,23 @@ - + - + - + - + - + @@ -184538,14 +184477,14 @@ - + - + - + @@ -184564,36 +184503,36 @@ - - + + - - + + - + - + - + - + @@ -184601,43 +184540,43 @@ - + - + - + - + - + - + - + @@ -184645,7 +184584,7 @@ - + @@ -184822,21 +184761,21 @@ - - + + - - + + - - + + - - + + @@ -184939,9 +184878,9 @@ - + - + @@ -184949,7 +184888,7 @@ - + @@ -184969,17 +184908,17 @@ - + - + - + - - + + @@ -184987,72 +184926,72 @@ - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -185103,7 +185042,7 @@ - + @@ -185111,7 +185050,7 @@ - + @@ -185173,8 +185112,8 @@ - - + + @@ -185280,17 +185219,17 @@ - - - + + + - + - + @@ -185301,10 +185240,10 @@ - + - + @@ -185349,7 +185288,7 @@ - + @@ -185376,7 +185315,7 @@ - + @@ -185430,19 +185369,19 @@ - + - + - + @@ -185451,10 +185390,10 @@ - + - + @@ -185475,22 +185414,22 @@ - + - + - + - + @@ -185505,7 +185444,7 @@ - + @@ -185523,83 +185462,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -185608,13 +185547,13 @@ - + - + - + @@ -185623,7 +185562,7 @@ - + @@ -185649,13 +185588,13 @@ - + - + - + @@ -185681,10 +185620,10 @@ - + - + @@ -185699,7 +185638,7 @@ - + @@ -185734,9 +185673,9 @@ - + - + @@ -185793,22 +185732,22 @@ - + - + - + - + - + - + @@ -185817,16 +185756,16 @@ - + - + - + - + @@ -185835,7 +185774,7 @@ - + @@ -185850,7 +185789,7 @@ - + @@ -185862,7 +185801,7 @@ - + @@ -185891,7 +185830,7 @@ - + @@ -185944,7 +185883,7 @@ - + @@ -186171,7 +186110,7 @@ - + @@ -186191,7 +186130,7 @@ - + @@ -186202,7 +186141,7 @@ - + @@ -186219,7 +186158,7 @@ - + @@ -186245,7 +186184,7 @@ - + @@ -186259,7 +186198,7 @@ - + @@ -186276,9 +186215,9 @@ - + - + @@ -186290,27 +186229,27 @@ - + - + - + - + - + - - + + - + @@ -186321,42 +186260,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -186364,324 +186303,324 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + + + + + + + + + + + - - - - - - - - - - - - + + - - - + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + - + - + - + - + - - - + + + - + - + - - + + - - + + @@ -186689,26 +186628,26 @@ - + - + - + - + - + - + @@ -186717,37 +186656,37 @@ - + - + - + - + - + - + - + @@ -186755,59 +186694,59 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -186821,211 +186760,211 @@ - - - - - - - + + + + + + + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -187034,11 +186973,11 @@ - + - + @@ -187046,34 +186985,34 @@ - + - + - - + + - + - + - + @@ -187093,11 +187032,11 @@ - + - + @@ -187123,19 +187062,19 @@ - + - + - + - + @@ -187183,16 +187122,16 @@ - + - + - + - + @@ -187312,92 +187251,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -187406,32 +187345,32 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + @@ -187440,9 +187379,9 @@ - + - + @@ -187450,7 +187389,7 @@ - + @@ -187466,94 +187405,94 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -187604,24 +187543,24 @@ - + - + - + - + - + @@ -187629,123 +187568,123 @@ - - + + - + - + - + - + - + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -187754,34 +187693,34 @@ - + - + - + - + - + - + - + @@ -187819,17 +187758,17 @@ - - - - + + + + - + @@ -187920,7 +187859,7 @@ - + @@ -187933,7 +187872,7 @@ - + @@ -187946,7 +187885,7 @@ - + @@ -187985,9 +187924,9 @@ - + - + @@ -188009,12 +187948,12 @@ - + - + @@ -188050,13 +187989,13 @@ - - - - - + + + + + - + @@ -188082,11 +188021,11 @@ - + - + @@ -188113,7 +188052,7 @@ - + @@ -188121,24 +188060,24 @@ - + - + - - + + - + - - - + + + @@ -188149,7 +188088,7 @@ - + @@ -188157,10 +188096,10 @@ - + - + @@ -188180,18 +188119,18 @@ - + - - - + + + - + - + @@ -188229,9 +188168,9 @@ - + - + @@ -188249,8 +188188,8 @@ - - + + @@ -188260,9 +188199,9 @@ - + - + @@ -188280,96 +188219,96 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -188389,7 +188328,7 @@ - + @@ -188415,7 +188354,7 @@ - + @@ -188444,18 +188383,18 @@ - + - + - + @@ -188463,19 +188402,19 @@ + + + + + + - - - - - - - - - - - - + + + + + + @@ -188486,9 +188425,9 @@ - - - + + + @@ -188513,17 +188452,17 @@ - + - + - + @@ -188564,36 +188503,36 @@ - + - + - + - + - - - - - - + + + + + + - + - + @@ -188608,66 +188547,66 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - - - + + + @@ -188748,16 +188687,16 @@ - + - + - + @@ -188772,24 +188711,24 @@ - + - + - + - + - + @@ -188807,12 +188746,12 @@ - + - + @@ -188833,7 +188772,7 @@ - + @@ -188850,26 +188789,26 @@ - - - - - + + + + + - + - + - + - + - + @@ -188877,21 +188816,21 @@ - + - + - + - + - + @@ -188909,24 +188848,24 @@ - + - + - + - + - + - + @@ -188947,74 +188886,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -189029,13 +188968,13 @@ - + - + @@ -189071,13 +189010,13 @@ - + - + @@ -189100,10 +189039,10 @@ - + - + @@ -189126,9 +189065,9 @@ - + - + @@ -189152,7 +189091,7 @@ - + @@ -189179,24 +189118,24 @@ - + - + - + - + - + - + - + @@ -189207,46 +189146,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -189255,392 +189194,392 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - - + + - + - - - + + + - - - + + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - - + + + + + + + + - - - - - - + - + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - + - - + + - - - + + + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - + - - + + - - + + - - - - + + + + - - + + - - - + + + - - + + - - + + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - - + + - + - + @@ -189648,43 +189587,43 @@ - + - + - + - + - - - + + + - + - + - - + + - - + + @@ -189698,9 +189637,9 @@ - - - + + + @@ -189709,28 +189648,28 @@ - + - + - + - + - + - + - + @@ -189738,12 +189677,12 @@ - + - + @@ -189770,23 +189709,23 @@ - - + + - + - - + + - + @@ -189796,17 +189735,17 @@ - + - + - + - + @@ -189828,59 +189767,59 @@ - + - + - + - + - + - + - - - - + + + + - + - + - + - + - - - + + + @@ -190292,11 +190231,11 @@ - - + + - + @@ -190311,7 +190250,7 @@ - + @@ -190325,9 +190264,9 @@ - - - + + + @@ -190340,9 +190279,9 @@ - - - + + + @@ -190351,21 +190290,21 @@ - - - + + + - + - + - + @@ -190414,15 +190353,15 @@ - + - + - + @@ -190440,7 +190379,7 @@ - + @@ -190472,15 +190411,15 @@ - + - + - + @@ -190540,7 +190479,7 @@ - + @@ -190554,12 +190493,12 @@ - + - + - + @@ -190601,7 +190540,7 @@ - + @@ -190612,7 +190551,7 @@ - + @@ -190620,150 +190559,150 @@ - - - - - - + + + + + + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + @@ -190772,8 +190711,8 @@ - - + + @@ -190782,41 +190721,41 @@ - + - + - - + + - + - + - + - + - + @@ -190858,168 +190797,168 @@ - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - + - - + + - + @@ -191051,15 +190990,15 @@ - + - + - + @@ -191067,114 +191006,114 @@ - + - - + + - - + + - - + + - + + - - + + - - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - + @@ -191185,59 +191124,59 @@ - - + + - + - + - + - + - - - - - + + + + + - + - + - + - + - - + + - + - + @@ -191261,13 +191200,13 @@ - - + + - + - + @@ -191297,10 +191236,10 @@ - + - + @@ -191315,82 +191254,82 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 8a50efb559f3..39002d769d95 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -73,6 +73,7 @@ config ARM select HAVE_ARM_SMCCC if CPU_V7 select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32 select HAVE_CONTEXT_TRACKING + select HAVE_COPY_THREAD_TLS select HAVE_C_RECORDMCOUNT select HAVE_DEBUG_KMEMLEAK select HAVE_DMA_CONTIGUOUS if MMU diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 9485acc520a4..e7fac125ea0d 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -224,8 +224,8 @@ void release_thread(struct task_struct *dead_task) asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); int -copy_thread(unsigned long clone_flags, unsigned long stack_start, - unsigned long stk_sz, struct task_struct *p) +copy_thread_tls(unsigned long clone_flags, unsigned long stack_start, + unsigned long stk_sz, struct task_struct *p, unsigned long tls) { struct thread_info *thread = task_thread_info(p); struct pt_regs *childregs = task_pt_regs(p); @@ -259,7 +259,7 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start, clear_ptrace_hw_breakpoint(p); if (clone_flags & CLONE_SETTLS) - thread->tp_value[0] = childregs->ARM_r3; + thread->tp_value[0] = tls; thread->tp_value[1] = get_tpuser(); thread_notify(THREAD_NOTIFY_COPY, thread); diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index dd4e448387b3..08b516df318e 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -142,6 +142,7 @@ config ARM64 select HAVE_CMPXCHG_DOUBLE select HAVE_CMPXCHG_LOCAL select HAVE_CONTEXT_TRACKING + select HAVE_COPY_THREAD_TLS select HAVE_DEBUG_BUGVERBOSE select HAVE_DEBUG_KMEMLEAK select HAVE_DMA_CONTIGUOUS diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 5049e9ec3eac..ae35f0e7ad41 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -80,6 +80,7 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_GKI_HACKS_TO_FIX=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_BINFMT_MISC=m @@ -154,6 +155,7 @@ CONFIG_NETFILTER_XT_MATCH_POLICY=y CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y CONFIG_NETFILTER_XT_MATCH_QUOTA=y CONFIG_NETFILTER_XT_MATCH_QUOTA2=y +CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y CONFIG_NETFILTER_XT_MATCH_SOCKET=y CONFIG_NETFILTER_XT_MATCH_STATE=y CONFIG_NETFILTER_XT_MATCH_STATISTIC=y diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h index 2629a68b8724..5af82587909e 100644 --- a/arch/arm64/include/asm/unistd.h +++ b/arch/arm64/include/asm/unistd.h @@ -42,7 +42,6 @@ #endif #define __ARCH_WANT_SYS_CLONE -#define __ARCH_WANT_SYS_CLONE3 #ifndef __COMPAT_SYSCALL_NR #include diff --git a/arch/arm64/include/uapi/asm/unistd.h b/arch/arm64/include/uapi/asm/unistd.h index 4703d218663a..f83a70e07df8 100644 --- a/arch/arm64/include/uapi/asm/unistd.h +++ b/arch/arm64/include/uapi/asm/unistd.h @@ -19,5 +19,6 @@ #define __ARCH_WANT_NEW_STAT #define __ARCH_WANT_SET_GET_RLIMIT #define __ARCH_WANT_TIME32_SYSCALLS +#define __ARCH_WANT_SYS_CLONE3 #include diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 5b56e2773bbf..95f76096f742 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -366,8 +366,8 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) asmlinkage void ret_from_fork(void) asm("ret_from_fork"); -int copy_thread(unsigned long clone_flags, unsigned long stack_start, - unsigned long stk_sz, struct task_struct *p) +int copy_thread_tls(unsigned long clone_flags, unsigned long stack_start, + unsigned long stk_sz, struct task_struct *p, unsigned long tls) { struct pt_regs *childregs = task_pt_regs(p); @@ -400,11 +400,11 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, } /* - * If a TLS pointer was passed to clone (4th argument), use it - * for the new thread. + * If a TLS pointer was passed to clone, use it for the new + * thread. */ if (clone_flags & CLONE_SETTLS) - p->thread.uw.tp_value = childregs->regs[3]; + p->thread.uw.tp_value = tls; } else { memset(childregs, 0, sizeof(struct pt_regs)); childregs->pstate = PSR_MODE_EL1h; diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index b16237c95ea3..0c29d6cb2c8d 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -62,6 +62,7 @@ config PARISC select HAVE_FTRACE_MCOUNT_RECORD if HAVE_DYNAMIC_FTRACE select HAVE_KPROBES_ON_FTRACE select HAVE_DYNAMIC_FTRACE_WITH_REGS + select HAVE_COPY_THREAD_TLS help The PA-RISC microprocessor is designed by Hewlett-Packard and used diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index ecc5c2771208..230a6422b99f 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -208,8 +208,8 @@ arch_initcall(parisc_idle_init); * Copy architecture-specific thread state */ int -copy_thread(unsigned long clone_flags, unsigned long usp, - unsigned long kthread_arg, struct task_struct *p) +copy_thread_tls(unsigned long clone_flags, unsigned long usp, + unsigned long kthread_arg, struct task_struct *p, unsigned long tls) { struct pt_regs *cregs = &(p->thread.regs); void *stack = task_stack_page(p); @@ -254,9 +254,9 @@ copy_thread(unsigned long clone_flags, unsigned long usp, cregs->ksp = (unsigned long)stack + THREAD_SZ_ALGN + FRAME_SIZE; cregs->kpc = (unsigned long) &child_return; - /* Setup thread TLS area from the 4th parameter in clone */ + /* Setup thread TLS area */ if (clone_flags & CLONE_SETTLS) - cregs->cr27 = cregs->gr[23]; + cregs->cr27 = tls; } return 0; diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 8eebbc8860bb..ade9699aa0dd 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -61,6 +61,7 @@ config RISCV select SPARSEMEM_STATIC if 32BIT select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU select HAVE_ARCH_MMAP_RND_BITS + select HAVE_COPY_THREAD_TLS config ARCH_MMAP_RND_BITS_MIN default 18 if 64BIT diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index 85e3c39bb60b..330b34706aa0 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -99,8 +99,8 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) return 0; } -int copy_thread(unsigned long clone_flags, unsigned long usp, - unsigned long arg, struct task_struct *p) +int copy_thread_tls(unsigned long clone_flags, unsigned long usp, + unsigned long arg, struct task_struct *p, unsigned long tls) { struct pt_regs *childregs = task_pt_regs(p); @@ -120,7 +120,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, if (usp) /* User fork */ childregs->sp = usp; if (clone_flags & CLONE_SETTLS) - childregs->tp = childregs->a5; + childregs->tp = tls; childregs->a0 = 0; /* Return value of fork() */ p->thread.ra = (unsigned long)ret_from_fork; } diff --git a/arch/um/Kconfig b/arch/um/Kconfig index fec6b4ca2b6e..c56d3526a3bd 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -14,6 +14,7 @@ config UML select HAVE_FUTEX_CMPXCHG if FUTEX select HAVE_DEBUG_KMEMLEAK select HAVE_DEBUG_BUGVERBOSE + select HAVE_COPY_THREAD_TLS select GENERIC_IRQ_SHOW select GENERIC_CPU_DEVICES select GENERIC_CLOCKEVENTS diff --git a/arch/um/include/asm/ptrace-generic.h b/arch/um/include/asm/ptrace-generic.h index 81c647ef9c6c..adf91ef553ae 100644 --- a/arch/um/include/asm/ptrace-generic.h +++ b/arch/um/include/asm/ptrace-generic.h @@ -36,7 +36,7 @@ extern long subarch_ptrace(struct task_struct *child, long request, extern unsigned long getreg(struct task_struct *child, int regno); extern int putreg(struct task_struct *child, int regno, unsigned long value); -extern int arch_copy_tls(struct task_struct *new); +extern int arch_set_tls(struct task_struct *new, unsigned long tls); extern void clear_flushed_tls(struct task_struct *task); extern int syscall_trace_enter(struct pt_regs *regs); extern void syscall_trace_leave(struct pt_regs *regs); diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 263a8f069133..17045e7211bf 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -153,8 +153,8 @@ void fork_handler(void) userspace(¤t->thread.regs.regs, current_thread_info()->aux_fp_regs); } -int copy_thread(unsigned long clone_flags, unsigned long sp, - unsigned long arg, struct task_struct * p) +int copy_thread_tls(unsigned long clone_flags, unsigned long sp, + unsigned long arg, struct task_struct * p, unsigned long tls) { void (*handler)(void); int kthread = current->flags & PF_KTHREAD; @@ -188,7 +188,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, * Set a new TLS for the child thread? */ if (clone_flags & CLONE_SETTLS) - ret = arch_copy_tls(p); + ret = arch_set_tls(p, tls); } return ret; diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index bbf7f5261dc6..51cee4f7304f 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -55,6 +55,7 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_GKI_HACKS_TO_FIX=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_BINFMT_MISC=m @@ -127,6 +128,7 @@ CONFIG_NETFILTER_XT_MATCH_POLICY=y CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y CONFIG_NETFILTER_XT_MATCH_QUOTA=y CONFIG_NETFILTER_XT_MATCH_QUOTA2=y +CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y CONFIG_NETFILTER_XT_MATCH_SOCKET=y CONFIG_NETFILTER_XT_MATCH_STATE=y CONFIG_NETFILTER_XT_MATCH_STATISTIC=y diff --git a/arch/x86/um/tls_32.c b/arch/x86/um/tls_32.c index 5bd949da7a4a..ac8eee093f9c 100644 --- a/arch/x86/um/tls_32.c +++ b/arch/x86/um/tls_32.c @@ -215,14 +215,12 @@ static int set_tls_entry(struct task_struct* task, struct user_desc *info, return 0; } -int arch_copy_tls(struct task_struct *new) +int arch_set_tls(struct task_struct *new, unsigned long tls) { struct user_desc info; int idx, ret = -EFAULT; - if (copy_from_user(&info, - (void __user *) UPT_SI(&new->thread.regs.regs), - sizeof(info))) + if (copy_from_user(&info, (void __user *) tls, sizeof(info))) goto out; ret = -EINVAL; diff --git a/arch/x86/um/tls_64.c b/arch/x86/um/tls_64.c index 3a621e0d3925..ebd3855d9b13 100644 --- a/arch/x86/um/tls_64.c +++ b/arch/x86/um/tls_64.c @@ -6,14 +6,13 @@ void clear_flushed_tls(struct task_struct *task) { } -int arch_copy_tls(struct task_struct *t) +int arch_set_tls(struct task_struct *t, unsigned long tls) { /* * If CLONE_SETTLS is set, we need to save the thread id - * (which is argument 5, child_tid, of clone) so it can be set - * during context switches. + * so it can be set during context switches. */ - t->thread.arch.fs = t->thread.regs.regs.gp[R8 / sizeof(long)]; + t->thread.arch.fs = tls; return 0; } diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index a8e7beb6b7b5..8352037322df 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -22,6 +22,7 @@ config XTENSA select HAVE_ARCH_JUMP_LABEL select HAVE_ARCH_KASAN if MMU select HAVE_ARCH_TRACEHOOK + select HAVE_COPY_THREAD_TLS select HAVE_DEBUG_KMEMLEAK select HAVE_DMA_CONTIGUOUS select HAVE_EXIT_THREAD diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index db278a9e80c7..7cbf8bd6d922 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c @@ -202,8 +202,9 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) * involved. Much simpler to just not copy those live frames across. */ -int copy_thread(unsigned long clone_flags, unsigned long usp_thread_fn, - unsigned long thread_fn_arg, struct task_struct *p) +int copy_thread_tls(unsigned long clone_flags, unsigned long usp_thread_fn, + unsigned long thread_fn_arg, struct task_struct *p, + unsigned long tls) { struct pt_regs *childregs = task_pt_regs(p); @@ -264,9 +265,8 @@ int copy_thread(unsigned long clone_flags, unsigned long usp_thread_fn, ®s->areg[XCHAL_NUM_AREGS - len/4], len); } - /* The thread pointer is passed in the '4th argument' (= a5) */ if (clone_flags & CLONE_SETTLS) - childregs->threadptr = childregs->areg[5]; + childregs->threadptr = tls; } else { p->thread.ra = MAKE_RA_FOR_CALL( (unsigned long)ret_from_kernel_thread, 1); diff --git a/drivers/char/tpm/tpm-dev-common.c b/drivers/char/tpm/tpm-dev-common.c index b23b0b999232..87f449340202 100644 --- a/drivers/char/tpm/tpm-dev-common.c +++ b/drivers/char/tpm/tpm-dev-common.c @@ -130,7 +130,7 @@ ssize_t tpm_common_read(struct file *file, char __user *buf, priv->response_read = true; ret_size = min_t(ssize_t, size, priv->response_length); - if (!ret_size) { + if (ret_size <= 0) { priv->response_length = 0; goto out; } diff --git a/drivers/char/tpm/tpm-dev.h b/drivers/char/tpm/tpm-dev.h index 1089fc0bb290..f3742bcc73e3 100644 --- a/drivers/char/tpm/tpm-dev.h +++ b/drivers/char/tpm/tpm-dev.h @@ -14,7 +14,7 @@ struct file_priv { struct work_struct timeout_work; struct work_struct async_work; wait_queue_head_t async_wait; - size_t response_length; + ssize_t response_length; bool response_read; bool command_enqueued; diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index f528fc39ea6b..c3181ea9f271 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -899,13 +899,13 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, if (wait_startup(chip, 0) != 0) { rc = -ENODEV; - goto err_start; + goto out_err; } /* Take control of the TPM's interrupt hardware and shut it off */ rc = tpm_tis_read32(priv, TPM_INT_ENABLE(priv->locality), &intmask); if (rc < 0) - goto err_start; + goto out_err; intmask |= TPM_INTF_CMD_READY_INT | TPM_INTF_LOCALITY_CHANGE_INT | TPM_INTF_DATA_AVAIL_INT | TPM_INTF_STS_VALID_INT; @@ -914,21 +914,21 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, rc = tpm_chip_start(chip); if (rc) - goto err_start; - + goto out_err; rc = tpm2_probe(chip); + tpm_chip_stop(chip); if (rc) - goto err_probe; + goto out_err; rc = tpm_tis_read32(priv, TPM_DID_VID(0), &vendor); if (rc < 0) - goto err_probe; + goto out_err; priv->manufacturer_id = vendor; rc = tpm_tis_read8(priv, TPM_RID(0), &rid); if (rc < 0) - goto err_probe; + goto out_err; dev_info(dev, "%s TPM (device-id 0x%X, rev-id %d)\n", (chip->flags & TPM_CHIP_FLAG_TPM2) ? "2.0" : "1.2", @@ -937,13 +937,13 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, probe = probe_itpm(chip); if (probe < 0) { rc = -ENODEV; - goto err_probe; + goto out_err; } /* Figure out the capabilities */ rc = tpm_tis_read32(priv, TPM_INTF_CAPS(priv->locality), &intfcaps); if (rc < 0) - goto err_probe; + goto out_err; dev_dbg(dev, "TPM interface capabilities (0x%x):\n", intfcaps); @@ -977,10 +977,9 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, if (tpm_get_timeouts(chip)) { dev_err(dev, "Could not get TPM timeouts and durations\n"); rc = -ENODEV; - goto err_probe; + goto out_err; } - chip->flags |= TPM_CHIP_FLAG_IRQ; if (irq) { tpm_tis_probe_irq_single(chip, intmask, IRQF_SHARED, irq); @@ -992,18 +991,15 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, } } - tpm_chip_stop(chip); - rc = tpm_chip_register(chip); if (rc) - goto err_start; + goto out_err; + + if (chip->ops->clk_enable != NULL) + chip->ops->clk_enable(chip, false); return 0; - -err_probe: - tpm_chip_stop(chip); - -err_start: +out_err: if ((chip->ops != NULL) && (chip->ops->clk_enable != NULL)) chip->ops->clk_enable(chip, false); diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 59ccfd24627d..1f98e988c0d3 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c @@ -21,11 +21,19 @@ #include "gpiolib.h" #include "gpiolib-acpi.h" +#define QUIRK_NO_EDGE_EVENTS_ON_BOOT 0x01l +#define QUIRK_NO_WAKEUP 0x02l + static int run_edge_events_on_boot = -1; module_param(run_edge_events_on_boot, int, 0444); MODULE_PARM_DESC(run_edge_events_on_boot, "Run edge _AEI event-handlers at boot: 0=no, 1=yes, -1=auto"); +static int honor_wakeup = -1; +module_param(honor_wakeup, int, 0444); +MODULE_PARM_DESC(honor_wakeup, + "Honor the ACPI wake-capable flag: 0=no, 1=yes, -1=auto"); + /** * struct acpi_gpio_event - ACPI GPIO event handler data * @@ -274,7 +282,7 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares, event->handle = evt_handle; event->handler = handler; event->irq = irq; - event->irq_is_wake = agpio->wake_capable == ACPI_WAKE_CAPABLE; + event->irq_is_wake = honor_wakeup && agpio->wake_capable == ACPI_WAKE_CAPABLE; event->pin = pin; event->desc = desc; @@ -1302,7 +1310,7 @@ static int acpi_gpio_handle_deferred_request_irqs(void) /* We must use _sync so that this runs after the first deferred_probe run */ late_initcall_sync(acpi_gpio_handle_deferred_request_irqs); -static const struct dmi_system_id run_edge_events_on_boot_blacklist[] = { +static const struct dmi_system_id gpiolib_acpi_quirks[] = { { /* * The Minix Neo Z83-4 has a micro-USB-B id-pin handler for @@ -1312,7 +1320,8 @@ static const struct dmi_system_id run_edge_events_on_boot_blacklist[] = { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "MINIX"), DMI_MATCH(DMI_PRODUCT_NAME, "Z83-4"), - } + }, + .driver_data = (void *)QUIRK_NO_EDGE_EVENTS_ON_BOOT, }, { /* @@ -1324,20 +1333,52 @@ static const struct dmi_system_id run_edge_events_on_boot_blacklist[] = { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Wortmann_AG"), DMI_MATCH(DMI_PRODUCT_NAME, "TERRA_PAD_1061"), - } + }, + .driver_data = (void *)QUIRK_NO_EDGE_EVENTS_ON_BOOT, + }, + { + /* + * Various HP X2 10 Cherry Trail models use an external + * embedded-controller connected via I2C + an ACPI GPIO + * event handler. The embedded controller generates various + * spurious wakeup events when suspended. So disable wakeup + * for its handler (it uses the only ACPI GPIO event handler). + * This breaks wakeup when opening the lid, the user needs + * to press the power-button to wakeup the system. The + * alternative is suspend simply not working, which is worse. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "HP"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP x2 Detachable 10-p0XX"), + }, + .driver_data = (void *)QUIRK_NO_WAKEUP, }, {} /* Terminating entry */ }; static int acpi_gpio_setup_params(void) { + const struct dmi_system_id *id; + long quirks = 0; + + id = dmi_first_match(gpiolib_acpi_quirks); + if (id) + quirks = (long)id->driver_data; + if (run_edge_events_on_boot < 0) { - if (dmi_check_system(run_edge_events_on_boot_blacklist)) + if (quirks & QUIRK_NO_EDGE_EVENTS_ON_BOOT) run_edge_events_on_boot = 0; else run_edge_events_on_boot = 1; } + if (honor_wakeup < 0) { + if (quirks & QUIRK_NO_WAKEUP) + honor_wakeup = 0; + else + honor_wakeup = 1; + } + return 0; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index b19157b19fa0..33a1099e2f33 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -145,7 +145,7 @@ int amdgpu_async_gfx_ring = 1; int amdgpu_mcbp = 0; int amdgpu_discovery = -1; int amdgpu_mes = 0; -int amdgpu_noretry = 1; +int amdgpu_noretry; struct amdgpu_mgpu_info mgpu_info = { .mutex = __MUTEX_INITIALIZER(mgpu_info.mutex), @@ -613,7 +613,7 @@ MODULE_PARM_DESC(mes, module_param_named(mes, amdgpu_mes, int, 0444); MODULE_PARM_DESC(noretry, - "Disable retry faults (0 = retry enabled, 1 = retry disabled (default))"); + "Disable retry faults (0 = retry enabled (default), 1 = retry disabled)"); module_param_named(noretry, amdgpu_noretry, int, 0644); #ifdef CONFIG_HSA_AMD diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index 86c17896b532..a48a4c21b1b3 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -339,7 +339,7 @@ static void drm_dp_encode_sideband_req(struct drm_dp_sideband_msg_req_body *req, memcpy(&buf[idx], req->u.i2c_read.transactions[i].bytes, req->u.i2c_read.transactions[i].num_bytes); idx += req->u.i2c_read.transactions[i].num_bytes; - buf[idx] = (req->u.i2c_read.transactions[i].no_stop_bit & 0x1) << 5; + buf[idx] = (req->u.i2c_read.transactions[i].no_stop_bit & 0x1) << 4; buf[idx] |= (req->u.i2c_read.transactions[i].i2c_transaction_delay & 0xf); idx++; } diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index a7ba5b4902d6..8d193a58363d 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1320,7 +1320,7 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, * Changes struct fb_var_screeninfo are currently not pushed back * to KMS, hence fail if different settings are requested. */ - if (var->bits_per_pixel != fb->format->cpp[0] * 8 || + if (var->bits_per_pixel > fb->format->cpp[0] * 8 || var->xres > fb->width || var->yres > fb->height || var->xres_virtual > fb->width || var->yres_virtual > fb->height) { DRM_DEBUG("fb requested width/height/bpp can't fit in current fb " @@ -1345,6 +1345,11 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, drm_fb_helper_fill_pixel_fmt(var, fb->format->depth); } + /* + * Likewise, bits_per_pixel should be rounded up to a supported value. + */ + var->bits_per_pixel = fb->format->cpp[0] * 8; + /* * drm fbdev emulation doesn't support changing the pixel format at all, * so reject all pixel format changing requests. diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index d564bfcab6a3..4949b5ad860f 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -2132,6 +2132,14 @@ static u32 *gen9_init_indirectctx_bb(struct intel_engine_cs *engine, u32 *batch) /* WaFlushCoherentL3CacheLinesAtContextSwitch:skl,bxt,glk */ batch = gen8_emit_flush_coherentl3_wa(engine, batch); + /* WaClearSlmSpaceAtContextSwitch:skl,bxt,kbl,glk,cfl */ + batch = gen8_emit_pipe_control(batch, + PIPE_CONTROL_FLUSH_L3 | + PIPE_CONTROL_GLOBAL_GTT_IVB | + PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_QW_WRITE, + slm_offset(engine)); + batch = emit_lri(batch, lri, ARRAY_SIZE(lri)); /* WaMediaPoolStateCmdInWABB:bxt,glk */ @@ -3716,9 +3724,11 @@ intel_execlists_create_virtual(struct i915_gem_context *ctx, ve->base.i915 = ctx->i915; ve->base.gt = siblings[0]->gt; ve->base.id = -1; + ve->base.class = OTHER_CLASS; ve->base.uabi_class = I915_ENGINE_CLASS_INVALID; ve->base.instance = I915_ENGINE_CLASS_INVALID_VIRTUAL; + ve->base.uabi_instance = I915_ENGINE_CLASS_INVALID_VIRTUAL; /* * The decision on whether to submit a request using semaphores diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index f8ee9aba3955..7b6e68f082f8 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -4049,7 +4049,13 @@ enum { #define GWUNIT_CLKGATE_DIS (1 << 16) #define UNSLICE_UNIT_LEVEL_CLKGATE _MMIO(0x9434) -#define VFUNIT_CLKGATE_DIS (1 << 20) +#define VFUNIT_CLKGATE_DIS REG_BIT(20) +#define HSUNIT_CLKGATE_DIS REG_BIT(8) +#define VSUNIT_CLKGATE_DIS REG_BIT(3) + +#define UNSLICE_UNIT_LEVEL_CLKGATE2 _MMIO(0x94e4) +#define VSUNIT_CLKGATE_DIS_TGL REG_BIT(19) +#define PSDUNIT_CLKGATE_DIS REG_BIT(5) #define INF_UNIT_LEVEL_CLKGATE _MMIO(0x9560) #define CGPSF_CLKGATE_DIS (1 << 3) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 2efe1d12d5a9..3ccfc025fde2 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -9194,6 +9194,17 @@ static void icl_init_clock_gating(struct drm_i915_private *dev_priv) /* WaEnable32PlaneMode:icl */ I915_WRITE(GEN9_CSFE_CHICKEN1_RCS, _MASKED_BIT_ENABLE(GEN11_ENABLE_32_PLANE_MODE)); + + /* + * Wa_1408615072:icl,ehl (vsunit) + * Wa_1407596294:icl,ehl (hsunit) + */ + intel_uncore_rmw(&dev_priv->uncore, UNSLICE_UNIT_LEVEL_CLKGATE, + 0, VSUNIT_CLKGATE_DIS | HSUNIT_CLKGATE_DIS); + + /* Wa_1407352427:icl,ehl */ + intel_uncore_rmw(&dev_priv->uncore, UNSLICE_UNIT_LEVEL_CLKGATE2, + 0, PSDUNIT_CLKGATE_DIS); } static void cnp_init_clock_gating(struct drm_i915_private *dev_priv) diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c index b89439ed210d..27c80c9e2b83 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -488,7 +488,7 @@ static void sun4i_tcon0_mode_set_rgb(struct sun4i_tcon *tcon, WARN_ON(!tcon->quirks->has_channel_0); - tcon->dclk_min_div = 1; + tcon->dclk_min_div = tcon->quirks->dclk_min_div; tcon->dclk_max_div = 127; sun4i_tcon0_mode_set_common(tcon, mode); @@ -1425,12 +1425,14 @@ static int sun8i_r40_tcon_tv_set_mux(struct sun4i_tcon *tcon, static const struct sun4i_tcon_quirks sun4i_a10_quirks = { .has_channel_0 = true, .has_channel_1 = true, + .dclk_min_div = 4, .set_mux = sun4i_a10_tcon_set_mux, }; static const struct sun4i_tcon_quirks sun5i_a13_quirks = { .has_channel_0 = true, .has_channel_1 = true, + .dclk_min_div = 4, .set_mux = sun5i_a13_tcon_set_mux, }; @@ -1439,6 +1441,7 @@ static const struct sun4i_tcon_quirks sun6i_a31_quirks = { .has_channel_1 = true, .has_lvds_alt = true, .needs_de_be_mux = true, + .dclk_min_div = 1, .set_mux = sun6i_tcon_set_mux, }; @@ -1446,11 +1449,13 @@ static const struct sun4i_tcon_quirks sun6i_a31s_quirks = { .has_channel_0 = true, .has_channel_1 = true, .needs_de_be_mux = true, + .dclk_min_div = 1, }; static const struct sun4i_tcon_quirks sun7i_a20_quirks = { .has_channel_0 = true, .has_channel_1 = true, + .dclk_min_div = 4, /* Same display pipeline structure as A10 */ .set_mux = sun4i_a10_tcon_set_mux, }; @@ -1458,11 +1463,13 @@ static const struct sun4i_tcon_quirks sun7i_a20_quirks = { static const struct sun4i_tcon_quirks sun8i_a33_quirks = { .has_channel_0 = true, .has_lvds_alt = true, + .dclk_min_div = 1, }; static const struct sun4i_tcon_quirks sun8i_a83t_lcd_quirks = { .supports_lvds = true, .has_channel_0 = true, + .dclk_min_div = 1, }; static const struct sun4i_tcon_quirks sun8i_a83t_tv_quirks = { @@ -1476,11 +1483,13 @@ static const struct sun4i_tcon_quirks sun8i_r40_tv_quirks = { static const struct sun4i_tcon_quirks sun8i_v3s_quirks = { .has_channel_0 = true, + .dclk_min_div = 1, }; static const struct sun4i_tcon_quirks sun9i_a80_tcon_lcd_quirks = { - .has_channel_0 = true, - .needs_edp_reset = true, + .has_channel_0 = true, + .needs_edp_reset = true, + .dclk_min_div = 1, }; static const struct sun4i_tcon_quirks sun9i_a80_tcon_tv_quirks = { diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.h b/drivers/gpu/drm/sun4i/sun4i_tcon.h index f9f1fe80b206..a62ec826ae71 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.h +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.h @@ -224,6 +224,7 @@ struct sun4i_tcon_quirks { bool needs_de_be_mux; /* sun6i needs mux to select backend */ bool needs_edp_reset; /* a80 edp reset needed for tcon0 access */ bool supports_lvds; /* Does the TCON support an LVDS output? */ + u8 dclk_min_div; /* minimum divider for TCON0 DCLK */ /* callback to handle tcon muxing options */ int (*set_mux)(struct sun4i_tcon *, const struct drm_encoder *); diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index e0b241bd3070..851fe54ea59e 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -288,6 +288,12 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign offset = report->size; report->size += parser->global.report_size * parser->global.report_count; + /* Total size check: Allow for possible report index byte */ + if (report->size > (HID_MAX_BUFFER_SIZE - 1) << 3) { + hid_err(parser->device, "report is too long\n"); + return -1; + } + if (!parser->local.usage_index) /* Ignore padding fields */ return 0; diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 63855f275a38..dea9cc65bf80 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -1132,9 +1132,15 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel } mapped: - if (device->driver->input_mapped && device->driver->input_mapped(device, - hidinput, field, usage, &bit, &max) < 0) - goto ignore; + if (device->driver->input_mapped && + device->driver->input_mapped(device, hidinput, field, usage, + &bit, &max) < 0) { + /* + * The driver indicated that no further generic handling + * of the usage is desired. + */ + return; + } set_bit(usage->type, input->evbit); @@ -1215,9 +1221,11 @@ mapped: set_bit(MSC_SCAN, input->mscbit); } -ignore: return; +ignore: + usage->type = 0; + usage->code = 0; } static void hidinput_handle_scroll(struct hid_usage *usage, diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index bbc6ec1aa5cb..c25e95c19cad 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c @@ -252,10 +252,10 @@ static __poll_t hidraw_poll(struct file *file, poll_table *wait) poll_wait(file, &list->hidraw->wait, wait); if (list->head != list->tail) - return EPOLLIN | EPOLLRDNORM | EPOLLOUT; + return EPOLLIN | EPOLLRDNORM; if (!list->hidraw->exist) return EPOLLERR | EPOLLHUP; - return 0; + return EPOLLOUT | EPOLLWRNORM; } static int hidraw_open(struct inode *inode, struct file *file) diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c index fa0cc0899827..935c3d0a3b63 100644 --- a/drivers/hid/uhid.c +++ b/drivers/hid/uhid.c @@ -772,7 +772,7 @@ static __poll_t uhid_char_poll(struct file *file, poll_table *wait) if (uhid->head != uhid->tail) return EPOLLIN | EPOLLRDNORM; - return 0; + return EPOLLOUT | EPOLLWRNORM; } static const struct file_operations uhid_fops = { diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index 1f9bc4483465..c879b214a479 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c @@ -241,12 +241,51 @@ static int hiddev_release(struct inode * inode, struct file * file) return 0; } +static int __hiddev_open(struct hiddev *hiddev, struct file *file) +{ + struct hiddev_list *list; + int error; + + lockdep_assert_held(&hiddev->existancelock); + + list = vzalloc(sizeof(*list)); + if (!list) + return -ENOMEM; + + mutex_init(&list->thread_lock); + list->hiddev = hiddev; + + if (!hiddev->open++) { + error = hid_hw_power(hiddev->hid, PM_HINT_FULLON); + if (error < 0) + goto err_drop_count; + + error = hid_hw_open(hiddev->hid); + if (error < 0) + goto err_normal_power; + } + + spin_lock_irq(&hiddev->list_lock); + list_add_tail(&list->node, &hiddev->list); + spin_unlock_irq(&hiddev->list_lock); + + file->private_data = list; + + return 0; + +err_normal_power: + hid_hw_power(hiddev->hid, PM_HINT_NORMAL); +err_drop_count: + hiddev->open--; + vfree(list); + return error; +} + /* * open file op */ static int hiddev_open(struct inode *inode, struct file *file) { - struct hiddev_list *list; struct usb_interface *intf; struct hid_device *hid; struct hiddev *hiddev; @@ -255,66 +294,14 @@ static int hiddev_open(struct inode *inode, struct file *file) intf = usbhid_find_interface(iminor(inode)); if (!intf) return -ENODEV; + hid = usb_get_intfdata(intf); hiddev = hid->hiddev; - if (!(list = vzalloc(sizeof(struct hiddev_list)))) - return -ENOMEM; - mutex_init(&list->thread_lock); - list->hiddev = hiddev; - file->private_data = list; - - /* - * no need for locking because the USB major number - * is shared which usbcore guards against disconnect - */ - if (list->hiddev->exist) { - if (!list->hiddev->open++) { - res = hid_hw_open(hiddev->hid); - if (res < 0) - goto bail; - } - } else { - res = -ENODEV; - goto bail; - } - - spin_lock_irq(&list->hiddev->list_lock); - list_add_tail(&list->node, &hiddev->list); - spin_unlock_irq(&list->hiddev->list_lock); - mutex_lock(&hiddev->existancelock); - /* - * recheck exist with existance lock held to - * avoid opening a disconnected device - */ - if (!list->hiddev->exist) { - res = -ENODEV; - goto bail_unlock; - } - if (!list->hiddev->open++) - if (list->hiddev->exist) { - struct hid_device *hid = hiddev->hid; - res = hid_hw_power(hid, PM_HINT_FULLON); - if (res < 0) - goto bail_unlock; - res = hid_hw_open(hid); - if (res < 0) - goto bail_normal_power; - } - mutex_unlock(&hiddev->existancelock); - return 0; -bail_normal_power: - hid_hw_power(hid, PM_HINT_NORMAL); -bail_unlock: + res = hiddev->exist ? __hiddev_open(hiddev, file) : -ENODEV; mutex_unlock(&hiddev->existancelock); - spin_lock_irq(&list->hiddev->list_lock); - list_del(&list->node); - spin_unlock_irq(&list->hiddev->list_lock); -bail: - file->private_data = NULL; - vfree(list); return res; } diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 5f6a4985f2bc..810a942eaa8e 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -186,10 +186,11 @@ int i2c_generic_scl_recovery(struct i2c_adapter *adap) * If we can set SDA, we will always create a STOP to ensure additional * pulses will do no harm. This is achieved by letting SDA follow SCL * half a cycle later. Check the 'incomplete_write_byte' fault injector - * for details. + * for details. Note that we must honour tsu:sto, 4us, but lets use 5us + * here for simplicity. */ bri->set_scl(adap, scl); - ndelay(RECOVERY_NDELAY / 2); + ndelay(RECOVERY_NDELAY); if (bri->set_sda) bri->set_sda(adap, scl); ndelay(RECOVERY_NDELAY / 2); @@ -211,7 +212,13 @@ int i2c_generic_scl_recovery(struct i2c_adapter *adap) scl = !scl; bri->set_scl(adap, scl); /* Creating STOP again, see above */ - ndelay(RECOVERY_NDELAY / 2); + if (scl) { + /* Honour minimum tsu:sto */ + ndelay(RECOVERY_NDELAY); + } else { + /* Honour minimum tf and thd:dat */ + ndelay(RECOVERY_NDELAY / 2); + } if (bri->set_sda) bri->set_sda(adap, scl); ndelay(RECOVERY_NDELAY / 2); diff --git a/drivers/infiniband/hw/hfi1/tid_rdma.c b/drivers/infiniband/hw/hfi1/tid_rdma.c index e53f542b60af..8a2e0d9351e9 100644 --- a/drivers/infiniband/hw/hfi1/tid_rdma.c +++ b/drivers/infiniband/hw/hfi1/tid_rdma.c @@ -4633,6 +4633,15 @@ void hfi1_rc_rcv_tid_rdma_ack(struct hfi1_packet *packet) */ fpsn = full_flow_psn(flow, flow->flow_state.spsn); req->r_ack_psn = psn; + /* + * If resync_psn points to the last flow PSN for a + * segment and the new segment (likely from a new + * request) starts with a new generation number, we + * need to adjust resync_psn accordingly. + */ + if (flow->flow_state.generation != + (resync_psn >> HFI1_KDETH_BTH_SEQ_SHIFT)) + resync_psn = mask_psn(fpsn - 1); flow->resync_npkts += delta_psn(mask_psn(resync_psn + 1), fpsn); /* diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index d7dd6fcf2db0..f918fca9ada3 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -224,13 +224,13 @@ static void __pass_event(struct evdev_client *client, */ client->tail = (client->head - 2) & (client->bufsize - 1); - client->buffer[client->tail].input_event_sec = - event->input_event_sec; - client->buffer[client->tail].input_event_usec = - event->input_event_usec; - client->buffer[client->tail].type = EV_SYN; - client->buffer[client->tail].code = SYN_DROPPED; - client->buffer[client->tail].value = 0; + client->buffer[client->tail] = (struct input_event) { + .input_event_sec = event->input_event_sec, + .input_event_usec = event->input_event_usec, + .type = EV_SYN, + .code = SYN_DROPPED, + .value = 0, + }; client->packet_head = client->tail; } diff --git a/drivers/input/input.c b/drivers/input/input.c index 55086279d044..ee6c3234df36 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -878,16 +878,18 @@ static int input_default_setkeycode(struct input_dev *dev, } } - __clear_bit(*old_keycode, dev->keybit); - __set_bit(ke->keycode, dev->keybit); - - for (i = 0; i < dev->keycodemax; i++) { - if (input_fetch_keycode(dev, i) == *old_keycode) { - __set_bit(*old_keycode, dev->keybit); - break; /* Setting the bit twice is useless, so break */ + if (*old_keycode <= KEY_MAX) { + __clear_bit(*old_keycode, dev->keybit); + for (i = 0; i < dev->keycodemax; i++) { + if (input_fetch_keycode(dev, i) == *old_keycode) { + __set_bit(*old_keycode, dev->keybit); + /* Setting the bit twice is useless, so break */ + break; + } } } + __set_bit(ke->keycode, dev->keybit); return 0; } @@ -943,9 +945,13 @@ int input_set_keycode(struct input_dev *dev, * Simulate keyup event if keycode is not present * in the keymap anymore */ - if (test_bit(EV_KEY, dev->evbit) && - !is_event_supported(old_keycode, dev->keybit, KEY_MAX) && - __test_and_clear_bit(old_keycode, dev->key)) { + if (old_keycode > KEY_MAX) { + dev_warn(dev->dev.parent ?: &dev->dev, + "%s: got too big old keycode %#x\n", + __func__, old_keycode); + } else if (test_bit(EV_KEY, dev->evbit) && + !is_event_supported(old_keycode, dev->keybit, KEY_MAX) && + __test_and_clear_bit(old_keycode, dev->key)) { struct input_value vals[] = { { EV_KEY, old_keycode, 0 }, input_value_sync diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c index 84051f20b18a..002654ec7040 100644 --- a/drivers/input/misc/uinput.c +++ b/drivers/input/misc/uinput.c @@ -74,12 +74,16 @@ static int uinput_dev_event(struct input_dev *dev, struct uinput_device *udev = input_get_drvdata(dev); struct timespec64 ts; - udev->buff[udev->head].type = type; - udev->buff[udev->head].code = code; - udev->buff[udev->head].value = value; ktime_get_ts64(&ts); - udev->buff[udev->head].input_event_sec = ts.tv_sec; - udev->buff[udev->head].input_event_usec = ts.tv_nsec / NSEC_PER_USEC; + + udev->buff[udev->head] = (struct input_event) { + .input_event_sec = ts.tv_sec, + .input_event_usec = ts.tv_nsec / NSEC_PER_USEC, + .type = type, + .code = code, + .value = value, + }; + udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE; wake_up_interruptible(&udev->waitq); diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 4ce797d4259f..67aa317de6db 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -5786,6 +5786,13 @@ static void intel_iommu_apply_resv_region(struct device *dev, WARN_ON_ONCE(!reserve_iova(&dmar_domain->iovad, start, end)); } +static struct iommu_group *intel_iommu_device_group(struct device *dev) +{ + if (dev_is_pci(dev)) + return pci_device_group(dev); + return generic_device_group(dev); +} + #ifdef CONFIG_INTEL_IOMMU_SVM struct intel_iommu *intel_svm_device_to_iommu(struct device *dev) { @@ -5958,7 +5965,7 @@ const struct iommu_ops intel_iommu_ops = { .get_resv_regions = intel_iommu_get_resv_regions, .put_resv_regions = intel_iommu_put_resv_regions, .apply_resv_region = intel_iommu_apply_resv_region, - .device_group = pci_device_group, + .device_group = intel_iommu_device_group, .dev_has_feat = intel_iommu_dev_has_feat, .dev_feat_enabled = intel_iommu_dev_feat_enabled, .dev_enable_feat = intel_iommu_dev_enable_feat, diff --git a/drivers/net/can/m_can/tcan4x5x.c b/drivers/net/can/m_can/tcan4x5x.c index d5d4bfa9c8fd..d797912e665a 100644 --- a/drivers/net/can/m_can/tcan4x5x.c +++ b/drivers/net/can/m_can/tcan4x5x.c @@ -445,6 +445,10 @@ static int tcan4x5x_can_probe(struct spi_device *spi) tcan4x5x_power_enable(priv->power, 1); + ret = tcan4x5x_init(mcan_class); + if (ret) + goto out_power; + ret = m_can_class_register(mcan_class); if (ret) goto out_power; diff --git a/drivers/net/can/mscan/mscan.c b/drivers/net/can/mscan/mscan.c index 8caf7af0dee2..99101d7027a8 100644 --- a/drivers/net/can/mscan/mscan.c +++ b/drivers/net/can/mscan/mscan.c @@ -381,13 +381,12 @@ static int mscan_rx_poll(struct napi_struct *napi, int quota) struct net_device *dev = napi->dev; struct mscan_regs __iomem *regs = priv->reg_base; struct net_device_stats *stats = &dev->stats; - int npackets = 0; - int ret = 1; + int work_done = 0; struct sk_buff *skb; struct can_frame *frame; u8 canrflg; - while (npackets < quota) { + while (work_done < quota) { canrflg = in_8(®s->canrflg); if (!(canrflg & (MSCAN_RXF | MSCAN_ERR_IF))) break; @@ -408,18 +407,18 @@ static int mscan_rx_poll(struct napi_struct *napi, int quota) stats->rx_packets++; stats->rx_bytes += frame->can_dlc; - npackets++; + work_done++; netif_receive_skb(skb); } - if (!(in_8(®s->canrflg) & (MSCAN_RXF | MSCAN_ERR_IF))) { - napi_complete(&priv->napi); - clear_bit(F_RX_PROGRESS, &priv->flags); - if (priv->can.state < CAN_STATE_BUS_OFF) - out_8(®s->canrier, priv->shadow_canrier); - ret = 0; + if (work_done < quota) { + if (likely(napi_complete_done(&priv->napi, work_done))) { + clear_bit(F_RX_PROGRESS, &priv->flags); + if (priv->can.state < CAN_STATE_BUS_OFF) + out_8(®s->canrier, priv->shadow_canrier); + } } - return ret; + return work_done; } static irqreturn_t mscan_isr(int irq, void *dev_id) diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c index 2f74f6704c12..a4b4b742c80c 100644 --- a/drivers/net/can/usb/gs_usb.c +++ b/drivers/net/can/usb/gs_usb.c @@ -918,7 +918,7 @@ static int gs_usb_probe(struct usb_interface *intf, GS_USB_BREQ_HOST_FORMAT, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_INTERFACE, 1, - intf->altsetting[0].desc.bInterfaceNumber, + intf->cur_altsetting->desc.bInterfaceNumber, hconf, sizeof(*hconf), 1000); @@ -941,7 +941,7 @@ static int gs_usb_probe(struct usb_interface *intf, GS_USB_BREQ_DEVICE_CONFIG, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_INTERFACE, 1, - intf->altsetting[0].desc.bInterfaceNumber, + intf->cur_altsetting->desc.bInterfaceNumber, dconf, sizeof(*dconf), 1000); diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c index 5fc0be564274..7ab87a758754 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c @@ -1590,7 +1590,7 @@ static int kvaser_usb_hydra_setup_endpoints(struct kvaser_usb *dev) struct usb_endpoint_descriptor *ep; int i; - iface_desc = &dev->intf->altsetting[0]; + iface_desc = dev->intf->cur_altsetting; for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { ep = &iface_desc->endpoint[i].desc; diff --git a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c index ae4c37e1bb75..1b9957f12459 100644 --- a/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c +++ b/drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c @@ -1310,7 +1310,7 @@ static int kvaser_usb_leaf_setup_endpoints(struct kvaser_usb *dev) struct usb_endpoint_descriptor *endpoint; int i; - iface_desc = &dev->intf->altsetting[0]; + iface_desc = dev->intf->cur_altsetting; for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { endpoint = &iface_desc->endpoint[i].desc; diff --git a/drivers/net/wireless/ath/ath10k/usb.c b/drivers/net/wireless/ath/ath10k/usb.c index 9ebe74ee4aef..1e0343081be9 100644 --- a/drivers/net/wireless/ath/ath10k/usb.c +++ b/drivers/net/wireless/ath/ath10k/usb.c @@ -443,6 +443,7 @@ static int ath10k_usb_hif_tx_sg(struct ath10k *ar, u8 pipe_id, ath10k_dbg(ar, ATH10K_DBG_USB_BULK, "usb bulk transmit failed: %d\n", ret); usb_unanchor_urb(urb); + usb_free_urb(urb); ret = -EINVAL; goto err_free_urb_to_pipe; } diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c index 096334e941a1..fc1706d0647d 100644 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c @@ -1032,8 +1032,10 @@ static int mwifiex_pcie_alloc_cmdrsp_buf(struct mwifiex_adapter *adapter) } skb_put(skb, MWIFIEX_UPLD_SIZE); if (mwifiex_map_pci_memory(adapter, skb, MWIFIEX_UPLD_SIZE, - PCI_DMA_FROMDEVICE)) + PCI_DMA_FROMDEVICE)) { + kfree_skb(skb); return -1; + } card->cmdrsp_buf = skb; diff --git a/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c b/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c index 74e50566db1f..6dd835f1efc2 100644 --- a/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c +++ b/drivers/net/wireless/marvell/mwifiex/sta_ioctl.c @@ -229,6 +229,14 @@ static int mwifiex_process_country_ie(struct mwifiex_private *priv, "11D: skip setting domain info in FW\n"); return 0; } + + if (country_ie_len > + (IEEE80211_COUNTRY_STRING_LEN + MWIFIEX_MAX_TRIPLET_802_11D)) { + mwifiex_dbg(priv->adapter, ERROR, + "11D: country_ie_len overflow!, deauth AP\n"); + return -EINVAL; + } + memcpy(priv->adapter->country_code, &country_ie[2], 2); domain_info->country_code[0] = country_ie[2]; @@ -272,8 +280,9 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, priv->scan_block = false; if (bss) { - if (adapter->region_code == 0x00) - mwifiex_process_country_ie(priv, bss); + if (adapter->region_code == 0x00 && + mwifiex_process_country_ie(priv, bss)) + return -EINVAL; /* Allocate and fill new bss descriptor */ bss_desc = kzalloc(sizeof(struct mwifiex_bssdescriptor), diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index 361248e97568..e7d96ac673b7 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -5447,6 +5447,7 @@ static int rtl8xxxu_submit_int_urb(struct ieee80211_hw *hw) ret = usb_submit_urb(urb, GFP_KERNEL); if (ret) { usb_unanchor_urb(urb); + usb_free_urb(urb); goto error; } diff --git a/drivers/phy/motorola/phy-cpcap-usb.c b/drivers/phy/motorola/phy-cpcap-usb.c index ead06c6c2601..9a38741d3546 100644 --- a/drivers/phy/motorola/phy-cpcap-usb.c +++ b/drivers/phy/motorola/phy-cpcap-usb.c @@ -207,6 +207,19 @@ static int cpcap_phy_get_ints_state(struct cpcap_phy_ddata *ddata, static int cpcap_usb_set_uart_mode(struct cpcap_phy_ddata *ddata); static int cpcap_usb_set_usb_mode(struct cpcap_phy_ddata *ddata); +static void cpcap_usb_try_musb_mailbox(struct cpcap_phy_ddata *ddata, + enum musb_vbus_id_status status) +{ + int error; + + error = musb_mailbox(status); + if (!error) + return; + + dev_dbg(ddata->dev, "%s: musb_mailbox failed: %i\n", + __func__, error); +} + static void cpcap_usb_detect(struct work_struct *work) { struct cpcap_phy_ddata *ddata; @@ -226,9 +239,7 @@ static void cpcap_usb_detect(struct work_struct *work) if (error) goto out_err; - error = musb_mailbox(MUSB_ID_GROUND); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); error = regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, CPCAP_BIT_VBUSSTBY_EN | @@ -257,9 +268,7 @@ static void cpcap_usb_detect(struct work_struct *work) error = cpcap_usb_set_usb_mode(ddata); if (error) goto out_err; - error = musb_mailbox(MUSB_ID_GROUND); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); return; } @@ -269,22 +278,18 @@ static void cpcap_usb_detect(struct work_struct *work) error = cpcap_usb_set_usb_mode(ddata); if (error) goto out_err; - error = musb_mailbox(MUSB_VBUS_VALID); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_VALID); return; } + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); + /* Default to debug UART mode */ error = cpcap_usb_set_uart_mode(ddata); if (error) goto out_err; - error = musb_mailbox(MUSB_VBUS_OFF); - if (error) - goto out_err; - dev_dbg(ddata->dev, "set UART mode\n"); return; @@ -649,9 +654,7 @@ static int cpcap_usb_phy_remove(struct platform_device *pdev) if (error) dev_err(ddata->dev, "could not set UART mode\n"); - error = musb_mailbox(MUSB_VBUS_OFF); - if (error) - dev_err(ddata->dev, "could not set mailbox\n"); + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); usb_remove_phy(&ddata->phy); cancel_delayed_work_sync(&ddata->detect_work); diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig index b96a91710dda..92a239e212df 100644 --- a/drivers/power/reset/Kconfig +++ b/drivers/power/reset/Kconfig @@ -94,7 +94,7 @@ config POWER_RESET_GPIO_RESTART create a binding in your devicetree. config POWER_RESET_HISI - bool "Hisilicon power-off driver" + tristate "Hisilicon power-off driver" depends on ARCH_HISI help Reboot support for Hisilicon boards. diff --git a/drivers/power/reset/hisi-reboot.c b/drivers/power/reset/hisi-reboot.c index 0ba5fdce186f..283afb538ad3 100644 --- a/drivers/power/reset/hisi-reboot.c +++ b/drivers/power/reset/hisi-reboot.c @@ -8,26 +8,64 @@ * Author: Haojian Zhuang */ +#include #include #include #include +#include #include #include #include #include +#include +#include #include static void __iomem *base; static u32 reboot_offset; +static struct regmap *pmu_regmap; +static struct regmap *sctrl_regmap; + +#define REBOOT_REASON_BOOTLOADER (0x01) +#define REBOOT_REASON_COLDBOOT (0x00) +#define DDR_BYPASS BIT(31) + +#define RST_FLAG_MASK GENMASK(7, 0) + +#define PMU_HRST_OFFSET ((0x101) << 2) +#define SCPEREN1_OFFSET (0x170) static int hisi_restart_handler(struct notifier_block *this, unsigned long mode, void *cmd) { - writel_relaxed(0xdeadbeef, base + reboot_offset); + int ret; + char reboot_reason; + + if (!cmd || !strcmp(cmd, "bootloader")) + reboot_reason = REBOOT_REASON_BOOTLOADER; + else + reboot_reason = REBOOT_REASON_COLDBOOT; + + if (base) { + writel_relaxed(0xdeadbeef, base + reboot_offset); + } else { + ret = regmap_update_bits(pmu_regmap, PMU_HRST_OFFSET, + RST_FLAG_MASK, reboot_reason); + if (ret) + return ret; + + ret = regmap_write(sctrl_regmap, SCPEREN1_OFFSET, DDR_BYPASS); + if (ret) + return ret; + + ret = regmap_write(sctrl_regmap, reboot_offset, 0xdeadbeef); + if (ret) + return ret; + } while (1) - cpu_do_idle(); + mdelay(1); return NOTIFY_DONE; } @@ -44,8 +82,17 @@ static int hisi_reboot_probe(struct platform_device *pdev) base = of_iomap(np, 0); if (!base) { - WARN(1, "failed to map base address"); - return -ENODEV; + pmu_regmap = syscon_regmap_lookup_by_phandle(np, "pmu-regmap"); + if (!pmu_regmap) { + WARN(1, "failed to regmap pmu address"); + return -ENODEV; + } + + sctrl_regmap = syscon_regmap_lookup_by_phandle(np, "sctrl-regmap"); + if (!sctrl_regmap) { + WARN(1, "failed to regmap sctrl address"); + return -ENODEV; + } } if (of_property_read_u32(np, "reboot-offset", &reboot_offset) < 0) { @@ -66,6 +113,7 @@ static int hisi_reboot_probe(struct platform_device *pdev) static const struct of_device_id hisi_reboot_of_match[] = { { .compatible = "hisilicon,sysctrl" }, + { .compatible = "hisilicon,hi3660-reboot" }, {} }; @@ -77,3 +125,6 @@ static struct platform_driver hisi_reboot_driver = { }, }; module_platform_driver(hisi_reboot_driver); + +MODULE_DESCRIPTION("Reset driver for HiSi SoCs"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/powercap/intel_rapl_common.c b/drivers/powercap/intel_rapl_common.c index 94ddd7d659c8..925b0004a0ed 100644 --- a/drivers/powercap/intel_rapl_common.c +++ b/drivers/powercap/intel_rapl_common.c @@ -1293,6 +1293,9 @@ struct rapl_package *rapl_add_package(int cpu, struct rapl_if_priv *priv) struct cpuinfo_x86 *c = &cpu_data(cpu); int ret; + if (!rapl_defaults) + return ERR_PTR(-ENODEV); + rp = kzalloc(sizeof(struct rapl_package), GFP_KERNEL); if (!rp) return ERR_PTR(-ENOMEM); diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c index eea5ebbb5119..c655074c07c2 100644 --- a/drivers/rpmsg/rpmsg_char.c +++ b/drivers/rpmsg/rpmsg_char.c @@ -227,8 +227,10 @@ static ssize_t rpmsg_eptdev_write_iter(struct kiocb *iocb, if (!kbuf) return -ENOMEM; - if (!copy_from_iter_full(kbuf, len, from)) - return -EFAULT; + if (!copy_from_iter_full(kbuf, len, from)) { + ret = -EFAULT; + goto free_kbuf; + } if (mutex_lock_interruptible(&eptdev->ept_lock)) { ret = -ERESTARTSYS; diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c index 5e2bd9f1d01e..fc32be687606 100644 --- a/drivers/rtc/rtc-sun6i.c +++ b/drivers/rtc/rtc-sun6i.c @@ -380,6 +380,22 @@ static void __init sun50i_h6_rtc_clk_init(struct device_node *node) CLK_OF_DECLARE_DRIVER(sun50i_h6_rtc_clk, "allwinner,sun50i-h6-rtc", sun50i_h6_rtc_clk_init); +/* + * The R40 user manual is self-conflicting on whether the prescaler is + * fixed or configurable. The clock diagram shows it as fixed, but there + * is also a configurable divider in the RTC block. + */ +static const struct sun6i_rtc_clk_data sun8i_r40_rtc_data = { + .rc_osc_rate = 16000000, + .fixed_prescaler = 512, +}; +static void __init sun8i_r40_rtc_clk_init(struct device_node *node) +{ + sun6i_rtc_clk_init(node, &sun8i_r40_rtc_data); +} +CLK_OF_DECLARE_DRIVER(sun8i_r40_rtc_clk, "allwinner,sun8i-r40-rtc", + sun8i_r40_rtc_clk_init); + static const struct sun6i_rtc_clk_data sun8i_v3_rtc_data = { .rc_osc_rate = 32000, .has_out_clk = 1, diff --git a/drivers/scsi/bfa/bfad_attr.c b/drivers/scsi/bfa/bfad_attr.c index 29ab81df75c0..fbfce02e5b93 100644 --- a/drivers/scsi/bfa/bfad_attr.c +++ b/drivers/scsi/bfa/bfad_attr.c @@ -275,8 +275,10 @@ bfad_im_get_stats(struct Scsi_Host *shost) rc = bfa_port_get_stats(BFA_FCPORT(&bfad->bfa), fcstats, bfad_hcb_comp, &fcomp); spin_unlock_irqrestore(&bfad->bfad_lock, flags); - if (rc != BFA_STATUS_OK) + if (rc != BFA_STATUS_OK) { + kfree(fcstats); return NULL; + } wait_for_completion(&fcomp.comp); diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c b/drivers/staging/comedi/drivers/adv_pci1710.c index dbff0f7e7cf5..ddc0dc93d08b 100644 --- a/drivers/staging/comedi/drivers/adv_pci1710.c +++ b/drivers/staging/comedi/drivers/adv_pci1710.c @@ -46,8 +46,8 @@ #define PCI171X_RANGE_UNI BIT(4) #define PCI171X_RANGE_GAIN(x) (((x) & 0x7) << 0) #define PCI171X_MUX_REG 0x04 /* W: A/D multiplexor control */ -#define PCI171X_MUX_CHANH(x) (((x) & 0xf) << 8) -#define PCI171X_MUX_CHANL(x) (((x) & 0xf) << 0) +#define PCI171X_MUX_CHANH(x) (((x) & 0xff) << 8) +#define PCI171X_MUX_CHANL(x) (((x) & 0xff) << 0) #define PCI171X_MUX_CHAN(x) (PCI171X_MUX_CHANH(x) | PCI171X_MUX_CHANL(x)) #define PCI171X_STATUS_REG 0x06 /* R: status register */ #define PCI171X_STATUS_IRQ BIT(11) /* 1=IRQ occurred */ diff --git a/drivers/staging/rtl8188eu/os_dep/usb_intf.c b/drivers/staging/rtl8188eu/os_dep/usb_intf.c index a7cac0719b8b..b5d42f411dd8 100644 --- a/drivers/staging/rtl8188eu/os_dep/usb_intf.c +++ b/drivers/staging/rtl8188eu/os_dep/usb_intf.c @@ -37,6 +37,7 @@ static const struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */ {USB_DEVICE(0x2001, 0x331B)}, /* D-Link DWA-121 rev B1 */ {USB_DEVICE(0x2357, 0x010c)}, /* TP-Link TL-WN722N v2 */ + {USB_DEVICE(0x2357, 0x0111)}, /* TP-Link TL-WN727N v5.21 */ {USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xffef)}, /* Rosewill RNX-N150NUB */ {} /* Terminating entry */ diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c index 8d19ae71e7cc..4e651b698617 100644 --- a/drivers/staging/vt6656/baseband.c +++ b/drivers/staging/vt6656/baseband.c @@ -449,8 +449,8 @@ int vnt_vt3184_init(struct vnt_private *priv) memcpy(array, addr, length); - ret = vnt_control_out(priv, MESSAGE_TYPE_WRITE, 0, - MESSAGE_REQUEST_BBREG, length, array); + ret = vnt_control_out_blocks(priv, VNT_REG_BLOCK_SIZE, + MESSAGE_REQUEST_BBREG, length, array); if (ret) goto end; diff --git a/drivers/staging/vt6656/card.c b/drivers/staging/vt6656/card.c index 56cd77fd9ea0..7958fc165462 100644 --- a/drivers/staging/vt6656/card.c +++ b/drivers/staging/vt6656/card.c @@ -719,7 +719,7 @@ end: */ int vnt_radio_power_on(struct vnt_private *priv) { - int ret = true; + int ret = 0; vnt_exit_deep_sleep(priv); diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h index 6074ceda78bf..50e1c8918040 100644 --- a/drivers/staging/vt6656/device.h +++ b/drivers/staging/vt6656/device.h @@ -259,6 +259,7 @@ struct vnt_private { u8 mac_hw; /* netdev */ struct usb_device *usb; + struct usb_interface *intf; u64 tsf_time; u8 rx_rate; diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c index 856ba97aec4f..c26882e2bb80 100644 --- a/drivers/staging/vt6656/main_usb.c +++ b/drivers/staging/vt6656/main_usb.c @@ -950,7 +950,7 @@ static const struct ieee80211_ops vnt_mac_ops = { int vnt_init(struct vnt_private *priv) { - if (!(vnt_init_registers(priv))) + if (vnt_init_registers(priv)) return -EAGAIN; SET_IEEE80211_PERM_ADDR(priv->hw, priv->permanent_net_addr); @@ -993,6 +993,7 @@ vt6656_probe(struct usb_interface *intf, const struct usb_device_id *id) priv = hw->priv; priv->hw = hw; priv->usb = udev; + priv->intf = intf; vnt_set_options(priv); diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c index d3304df6bd53..d977d4777e4f 100644 --- a/drivers/staging/vt6656/usbpipe.c +++ b/drivers/staging/vt6656/usbpipe.c @@ -59,7 +59,9 @@ int vnt_control_out(struct vnt_private *priv, u8 request, u16 value, kfree(usb_buffer); - if (ret >= 0 && ret < (int)length) + if (ret == (int)length) + ret = 0; + else ret = -EIO; end_unlock: @@ -74,6 +76,23 @@ int vnt_control_out_u8(struct vnt_private *priv, u8 reg, u8 reg_off, u8 data) reg_off, reg, sizeof(u8), &data); } +int vnt_control_out_blocks(struct vnt_private *priv, + u16 block, u8 reg, u16 length, u8 *data) +{ + int ret = 0, i; + + for (i = 0; i < length; i += block) { + u16 len = min_t(int, length - i, block); + + ret = vnt_control_out(priv, MESSAGE_TYPE_WRITE, + i, reg, len, data + i); + if (ret) + goto end; + } +end: + return ret; +} + int vnt_control_in(struct vnt_private *priv, u8 request, u16 value, u16 index, u16 length, u8 *buffer) { @@ -103,7 +122,9 @@ int vnt_control_in(struct vnt_private *priv, u8 request, u16 value, kfree(usb_buffer); - if (ret >= 0 && ret < (int)length) + if (ret == (int)length) + ret = 0; + else ret = -EIO; end_unlock: diff --git a/drivers/staging/vt6656/usbpipe.h b/drivers/staging/vt6656/usbpipe.h index 95147ec7b96a..b65d9c01a211 100644 --- a/drivers/staging/vt6656/usbpipe.h +++ b/drivers/staging/vt6656/usbpipe.h @@ -18,6 +18,8 @@ #include "device.h" +#define VNT_REG_BLOCK_SIZE 64 + int vnt_control_out(struct vnt_private *priv, u8 request, u16 value, u16 index, u16 length, u8 *buffer); int vnt_control_in(struct vnt_private *priv, u8 request, u16 value, @@ -26,6 +28,9 @@ int vnt_control_in(struct vnt_private *priv, u8 request, u16 value, int vnt_control_out_u8(struct vnt_private *priv, u8 reg, u8 ref_off, u8 data); int vnt_control_in_u8(struct vnt_private *priv, u8 reg, u8 reg_off, u8 *data); +int vnt_control_out_blocks(struct vnt_private *priv, + u16 block, u8 reg, u16 len, u8 *data); + int vnt_start_interrupt_urb(struct vnt_private *priv); int vnt_submit_rx_urb(struct vnt_private *priv, struct vnt_rcb *rcb); int vnt_tx_context(struct vnt_private *priv, diff --git a/drivers/staging/vt6656/wcmd.c b/drivers/staging/vt6656/wcmd.c index 3eb2f11a5de1..2c5250ca2801 100644 --- a/drivers/staging/vt6656/wcmd.c +++ b/drivers/staging/vt6656/wcmd.c @@ -99,6 +99,7 @@ void vnt_run_command(struct work_struct *work) if (vnt_init(priv)) { /* If fail all ends TODO retry */ dev_err(&priv->usb->dev, "failed to start\n"); + usb_set_intfdata(priv->intf, NULL); ieee80211_free_hw(priv->hw); return; } diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index f53d3f3ef080..93db998552a7 100644 --- a/drivers/tty/serdev/core.c +++ b/drivers/tty/serdev/core.c @@ -604,6 +604,12 @@ static acpi_status acpi_serdev_register_device(struct serdev_controller *ctrl, return AE_OK; } +static const struct acpi_device_id serdev_acpi_devices_blacklist[] = { + { "INT3511", 0 }, + { "INT3512", 0 }, + { }, +}; + static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level, void *data, void **return_value) { @@ -613,6 +619,10 @@ static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level, if (acpi_bus_get_device(handle, &adev)) return AE_OK; + /* Skip if black listed */ + if (!acpi_match_device_ids(adev, serdev_acpi_devices_blacklist)) + return AE_OK; + return acpi_serdev_register_device(ctrl, adev); } diff --git a/drivers/tty/serdev/serdev-ttyport.c b/drivers/tty/serdev/serdev-ttyport.c index d1cdd2ab8b4c..f9c546ac4135 100644 --- a/drivers/tty/serdev/serdev-ttyport.c +++ b/drivers/tty/serdev/serdev-ttyport.c @@ -273,6 +273,11 @@ struct device *serdev_tty_port_register(struct tty_port *port, if (!port || !drv || !parent) return ERR_PTR(-ENODEV); + if (port->console) { + /* can't convert tty's that are already in use */ + return ERR_PTR(-ENODEV); + } + ctrl = serdev_controller_alloc(parent, sizeof(struct serport)); if (!ctrl) return ERR_PTR(-ENOMEM); diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index a47730108313..7b87c08f5bcb 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2835,6 +2835,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport) if (uport->cons && uport->dev) of_console_check(uport->dev->of_node, uport->cons->name, uport->line); + tty_port_link_device(port, drv->tty_driver, uport->line); uart_configure_port(drv, state, uport); port->console = uart_console(uport); diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c index 4c1e75509303..02f6ca2cb1ba 100644 --- a/drivers/usb/cdns3/gadget.c +++ b/drivers/usb/cdns3/gadget.c @@ -1375,13 +1375,10 @@ static void cdns3_check_usb_interrupt_proceed(struct cdns3_device *priv_dev, */ static irqreturn_t cdns3_device_irq_handler(int irq, void *data) { - struct cdns3_device *priv_dev; - struct cdns3 *cdns = data; + struct cdns3_device *priv_dev = data; irqreturn_t ret = IRQ_NONE; u32 reg; - priv_dev = cdns->gadget_dev; - /* check USB device interrupt */ reg = readl(&priv_dev->regs->usb_ists); if (reg) { @@ -1419,14 +1416,12 @@ static irqreturn_t cdns3_device_irq_handler(int irq, void *data) */ static irqreturn_t cdns3_device_thread_irq_handler(int irq, void *data) { - struct cdns3_device *priv_dev; - struct cdns3 *cdns = data; + struct cdns3_device *priv_dev = data; irqreturn_t ret = IRQ_NONE; unsigned long flags; int bit; u32 reg; - priv_dev = cdns->gadget_dev; spin_lock_irqsave(&priv_dev->lock, flags); reg = readl(&priv_dev->regs->usb_ists); @@ -2539,7 +2534,7 @@ void cdns3_gadget_exit(struct cdns3 *cdns) priv_dev = cdns->gadget_dev; - devm_free_irq(cdns->dev, cdns->dev_irq, cdns); + devm_free_irq(cdns->dev, cdns->dev_irq, priv_dev); pm_runtime_mark_last_busy(cdns->dev); pm_runtime_put_autosuspend(cdns->dev); @@ -2710,7 +2705,8 @@ static int __cdns3_gadget_init(struct cdns3 *cdns) ret = devm_request_threaded_irq(cdns->dev, cdns->dev_irq, cdns3_device_irq_handler, cdns3_device_thread_irq_handler, - IRQF_SHARED, dev_name(cdns->dev), cdns); + IRQF_SHARED, dev_name(cdns->dev), + cdns->gadget_dev); if (ret) goto err0; diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index b45ceb91c735..48e4a5ca1835 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -26,6 +26,7 @@ static int (*orig_bus_suspend)(struct usb_hcd *hcd); struct ehci_ci_priv { struct regulator *reg_vbus; + bool enabled; }; static int ehci_ci_portpower(struct usb_hcd *hcd, int portnum, bool enable) @@ -37,7 +38,7 @@ static int ehci_ci_portpower(struct usb_hcd *hcd, int portnum, bool enable) int ret = 0; int port = HCS_N_PORTS(ehci->hcs_params); - if (priv->reg_vbus) { + if (priv->reg_vbus && enable != priv->enabled) { if (port > 1) { dev_warn(dev, "Not support multi-port regulator control\n"); @@ -53,6 +54,7 @@ static int ehci_ci_portpower(struct usb_hcd *hcd, int portnum, bool enable) enable ? "enable" : "disable", ret); return ret; } + priv->enabled = enable; } if (enable && (ci->platdata->phy_mode == USBPHY_INTERFACE_MODE_HSIC)) { diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index 5e92c6abe306..3e94259406d7 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c @@ -392,12 +392,16 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, endpoint->desc.wMaxPacketSize = cpu_to_le16(8); } - /* Validate the wMaxPacketSize field */ + /* + * Validate the wMaxPacketSize field. + * Some devices have isochronous endpoints in altsetting 0; + * the USB-2 spec requires such endpoints to have wMaxPacketSize = 0 + * (see the end of section 5.6.3), so don't warn about them. + */ maxp = usb_endpoint_maxp(&endpoint->desc); - if (maxp == 0) { - dev_warn(ddev, "config %d interface %d altsetting %d endpoint 0x%X has wMaxPacketSize 0, skipping\n", + if (maxp == 0 && !(usb_endpoint_xfer_isoc(d) && asnum == 0)) { + dev_warn(ddev, "config %d interface %d altsetting %d endpoint 0x%X has invalid wMaxPacketSize 0\n", cfgno, inum, asnum, d->bEndpointAddress); - goto skip_to_next_endpoint_or_interface_descriptor; } /* Find the highest legal maxpacket size for this endpoint */ diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 8b23162e4239..0e26c32fdddb 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -5374,6 +5375,8 @@ static void hub_event(struct work_struct *work) hub_dev = hub->intfdev; intf = to_usb_interface(hub_dev); + kcov_remote_start_usb((u64)hdev->bus->busnum); + dev_dbg(hub_dev, "state %d ports %d chg %04x evt %04x\n", hdev->state, hdev->maxchild, /* NOTE: expects max 15 ports... */ @@ -5480,6 +5483,8 @@ out_hdev_lock: /* Balance the stuff in kick_hub_wq() and allow autosuspend */ usb_autopm_put_interface(intf); kref_put(&hub->kref, hub_release); + + kcov_remote_stop(); } static const struct usb_device_id hub_id_table[] = { diff --git a/drivers/usb/host/ohci-da8xx.c b/drivers/usb/host/ohci-da8xx.c index 38183ac438c6..1371b0c249ec 100644 --- a/drivers/usb/host/ohci-da8xx.c +++ b/drivers/usb/host/ohci-da8xx.c @@ -415,13 +415,17 @@ static int ohci_da8xx_probe(struct platform_device *pdev) } da8xx_ohci->oc_gpio = devm_gpiod_get_optional(dev, "oc", GPIOD_IN); - if (IS_ERR(da8xx_ohci->oc_gpio)) + if (IS_ERR(da8xx_ohci->oc_gpio)) { + error = PTR_ERR(da8xx_ohci->oc_gpio); goto err; + } if (da8xx_ohci->oc_gpio) { oc_irq = gpiod_to_irq(da8xx_ohci->oc_gpio); - if (oc_irq < 0) + if (oc_irq < 0) { + error = oc_irq; goto err; + } error = devm_request_threaded_irq(dev, oc_irq, NULL, ohci_da8xx_oc_thread, IRQF_TRIGGER_RISING | diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index bd63450af76a..bf083c1f997f 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -1840,6 +1840,9 @@ ATTRIBUTE_GROUPS(musb); #define MUSB_QUIRK_B_INVALID_VBUS_91 (MUSB_DEVCTL_BDEVICE | \ (2 << MUSB_DEVCTL_VBUS_SHIFT) | \ MUSB_DEVCTL_SESSION) +#define MUSB_QUIRK_B_DISCONNECT_99 (MUSB_DEVCTL_BDEVICE | \ + (3 << MUSB_DEVCTL_VBUS_SHIFT) | \ + MUSB_DEVCTL_SESSION) #define MUSB_QUIRK_A_DISCONNECT_19 ((3 << MUSB_DEVCTL_VBUS_SHIFT) | \ MUSB_DEVCTL_SESSION) @@ -1862,6 +1865,11 @@ static void musb_pm_runtime_check_session(struct musb *musb) s = MUSB_DEVCTL_FSDEV | MUSB_DEVCTL_LSDEV | MUSB_DEVCTL_HR; switch (devctl & ~s) { + case MUSB_QUIRK_B_DISCONNECT_99: + musb_dbg(musb, "Poll devctl in case of suspend after disconnect\n"); + schedule_delayed_work(&musb->irq_work, + msecs_to_jiffies(1000)); + break; case MUSB_QUIRK_B_INVALID_VBUS_91: if (musb->quirk_retries && !musb->flush_irq_work) { musb_dbg(musb, @@ -2310,6 +2318,9 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) musb_disable_interrupts(musb); musb_writeb(musb->mregs, MUSB_DEVCTL, 0); + /* MUSB_POWER_SOFTCONN might be already set, JZ4740 does this. */ + musb_writeb(musb->mregs, MUSB_POWER, 0); + /* Init IRQ workqueue before request_irq */ INIT_DELAYED_WORK(&musb->irq_work, musb_irq_work); INIT_DELAYED_WORK(&musb->deassert_reset_work, musb_deassert_reset); diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c index 5fc6825745f2..2d3751d885b4 100644 --- a/drivers/usb/musb/musbhsdma.c +++ b/drivers/usb/musb/musbhsdma.c @@ -425,7 +425,7 @@ struct dma_controller *musbhs_dma_controller_create(struct musb *musb, controller->controller.channel_abort = dma_channel_abort; if (request_irq(irq, dma_controller_irq, 0, - dev_name(musb->controller), &controller->controller)) { + dev_name(musb->controller), controller)) { dev_err(dev, "request_irq %d failed!\n", irq); musb_dma_controller_destroy(&controller->controller); diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index fea09a3f491f..2d919d0e6e45 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -567,6 +567,9 @@ static void option_instat_callback(struct urb *urb); /* Interface must have two endpoints */ #define NUMEP2 BIT(16) +/* Device needs ZLP */ +#define ZLP BIT(17) + static const struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, @@ -1198,6 +1201,8 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(0) | RSVD(1) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */ .driver_info = NCTRL(0) }, + { USB_DEVICE(TELIT_VENDOR_ID, 0x9010), /* Telit SBL FN980 flashing device */ + .driver_info = NCTRL(0) | ZLP }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), .driver_info = RSVD(1) }, @@ -2099,6 +2104,9 @@ static int option_attach(struct usb_serial *serial) if (!(device_flags & NCTRL(iface_desc->bInterfaceNumber))) data->use_send_setup = 1; + if (device_flags & ZLP) + data->use_zlp = 1; + spin_lock_init(&data->susp_lock); usb_set_serial_data(serial, data); diff --git a/drivers/usb/serial/usb-wwan.h b/drivers/usb/serial/usb-wwan.h index 1c120eaf4091..934e9361cf6b 100644 --- a/drivers/usb/serial/usb-wwan.h +++ b/drivers/usb/serial/usb-wwan.h @@ -38,6 +38,7 @@ struct usb_wwan_intf_private { spinlock_t susp_lock; unsigned int suspended:1; unsigned int use_send_setup:1; + unsigned int use_zlp:1; int in_flight; unsigned int open_ports; void *private; diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c index 7e855c87e4f7..13be21aad2f4 100644 --- a/drivers/usb/serial/usb_wwan.c +++ b/drivers/usb/serial/usb_wwan.c @@ -461,6 +461,7 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port, void (*callback) (struct urb *)) { struct usb_serial *serial = port->serial; + struct usb_wwan_intf_private *intfdata = usb_get_serial_data(serial); struct urb *urb; urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */ @@ -471,6 +472,9 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port, usb_sndbulkpipe(serial->dev, endpoint) | dir, buf, len, callback, ctx); + if (intfdata->use_zlp && dir == USB_DIR_OUT) + urb->transfer_flags |= URB_ZERO_PACKET; + return urb; } diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c index c1f7073a56de..8b4ff9fff340 100644 --- a/drivers/usb/typec/tcpm/tcpci.c +++ b/drivers/usb/typec/tcpm/tcpci.c @@ -432,20 +432,30 @@ irqreturn_t tcpci_irq(struct tcpci *tcpci) if (status & TCPC_ALERT_RX_STATUS) { struct pd_message msg; - unsigned int cnt; + unsigned int cnt, payload_cnt; u16 header; regmap_read(tcpci->regmap, TCPC_RX_BYTE_CNT, &cnt); + /* + * 'cnt' corresponds to READABLE_BYTE_COUNT in section 4.4.14 + * of the TCPCI spec [Rev 2.0 Ver 1.0 October 2017] and is + * defined in table 4-36 as one greater than the number of + * bytes received. And that number includes the header. So: + */ + if (cnt > 3) + payload_cnt = cnt - (1 + sizeof(msg.header)); + else + payload_cnt = 0; tcpci_read16(tcpci, TCPC_RX_HDR, &header); msg.header = cpu_to_le16(header); - if (WARN_ON(cnt > sizeof(msg.payload))) - cnt = sizeof(msg.payload); + if (WARN_ON(payload_cnt > sizeof(msg.payload))) + payload_cnt = sizeof(msg.payload); - if (cnt > 0) + if (payload_cnt > 0) regmap_raw_read(tcpci->regmap, TCPC_RX_DATA, - &msg.payload, cnt); + &msg.payload, payload_cnt); /* Read complete, clear RX status alert bit */ tcpci_write16(tcpci, TCPC_ALERT, TCPC_ALERT_RX_STATUS); diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 36ca2cf419bf..f44340b41494 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "vhost.h" @@ -357,7 +358,9 @@ static int vhost_worker(void *data) llist_for_each_entry_safe(work, work_next, node, node) { clear_bit(VHOST_WORK_QUEUED, &work->flags); __set_current_state(TASK_RUNNING); + kcov_remote_start_common(dev->kcov_handle); work->fn(work); + kcov_remote_stop(); if (need_resched()) schedule(); } @@ -546,6 +549,7 @@ long vhost_dev_set_owner(struct vhost_dev *dev) /* No owner, become one */ dev->mm = get_task_mm(current); + dev->kcov_handle = kcov_common_handle(); worker = kthread_create(vhost_worker, dev, "vhost-%d", current->pid); if (IS_ERR(worker)) { err = PTR_ERR(worker); @@ -571,6 +575,7 @@ err_worker: if (dev->mm) mmput(dev->mm); dev->mm = NULL; + dev->kcov_handle = 0; err_mm: return err; } @@ -682,6 +687,7 @@ void vhost_dev_cleanup(struct vhost_dev *dev) if (dev->worker) { kthread_stop(dev->worker); dev->worker = NULL; + dev->kcov_handle = 0; } if (dev->mm) mmput(dev->mm); diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index e9ed2722b633..a123fd70847e 100644 --- a/drivers/vhost/vhost.h +++ b/drivers/vhost/vhost.h @@ -173,6 +173,7 @@ struct vhost_dev { int iov_limit; int weight; int byte_weight; + u64 kcov_handle; }; bool vhost_exceeds_weight(struct vhost_virtqueue *vq, int pkts, int total_len); diff --git a/fs/char_dev.c b/fs/char_dev.c index 00dfe17871ac..c5e6eff5a381 100644 --- a/fs/char_dev.c +++ b/fs/char_dev.c @@ -352,7 +352,7 @@ static struct kobject *cdev_get(struct cdev *p) if (owner && !try_module_get(owner)) return NULL; - kobj = kobject_get(&p->kobj); + kobj = kobject_get_unless_zero(&p->kobj); if (!kobj) module_put(owner); return kobj; diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index 487ee39b438a..013486b5125e 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -583,12 +583,12 @@ static int ramoops_init_przs(const char *name, prz_ar[i] = persistent_ram_new(*paddr, zone_sz, sig, &cxt->ecc_info, cxt->memtype, flags, label); + kfree(label); if (IS_ERR(prz_ar[i])) { err = PTR_ERR(prz_ar[i]); dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n", name, record_size, (unsigned long long)*paddr, err); - kfree(label); while (i > 0) { i--; @@ -629,12 +629,12 @@ static int ramoops_init_prz(const char *name, label = kasprintf(GFP_KERNEL, "ramoops:%s", name); *prz = persistent_ram_new(*paddr, sz, sig, &cxt->ecc_info, cxt->memtype, PRZ_FLAG_ZAP_OLD, label); + kfree(label); if (IS_ERR(*prz)) { int err = PTR_ERR(*prz); dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n", name, sz, (unsigned long long)*paddr, err); - kfree(label); return err; } diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c index 8823f65888f0..1f4d8c06f9be 100644 --- a/fs/pstore/ram_core.c +++ b/fs/pstore/ram_core.c @@ -574,7 +574,7 @@ struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size, /* Initialize general buffer state. */ raw_spin_lock_init(&prz->buffer_lock); prz->flags = flags; - prz->label = label; + prz->label = kstrdup(label, GFP_KERNEL); ret = persistent_ram_buffer_map(start, size, prz, memtype); if (ret) diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index 9b3c720a31b1..5e3d45525bd3 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h @@ -18,6 +18,7 @@ #include #include #include +#include #include /* @@ -91,6 +92,36 @@ struct can_priv { #define get_can_dlc(i) (min_t(__u8, (i), CAN_MAX_DLC)) #define get_canfd_dlc(i) (min_t(__u8, (i), CANFD_MAX_DLC)) +/* Check for outgoing skbs that have not been created by the CAN subsystem */ +static inline bool can_skb_headroom_valid(struct net_device *dev, + struct sk_buff *skb) +{ + /* af_packet creates a headroom of HH_DATA_MOD bytes which is fine */ + if (WARN_ON_ONCE(skb_headroom(skb) < sizeof(struct can_skb_priv))) + return false; + + /* af_packet does not apply CAN skb specific settings */ + if (skb->ip_summed == CHECKSUM_NONE) { + /* init headroom */ + can_skb_prv(skb)->ifindex = dev->ifindex; + can_skb_prv(skb)->skbcnt = 0; + + skb->ip_summed = CHECKSUM_UNNECESSARY; + + /* preform proper loopback on capable devices */ + if (dev->flags & IFF_ECHO) + skb->pkt_type = PACKET_LOOPBACK; + else + skb->pkt_type = PACKET_HOST; + + skb_reset_mac_header(skb); + skb_reset_network_header(skb); + skb_reset_transport_header(skb); + } + + return true; +} + /* Drop a given socketbuffer if it does not contain a valid CAN frame. */ static inline bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb) @@ -108,6 +139,9 @@ static inline bool can_dropped_invalid_skb(struct net_device *dev, } else goto inval_skb; + if (!can_skb_headroom_valid(dev, skb)) + goto inval_skb; + return false; inval_skb: diff --git a/include/linux/kcov.h b/include/linux/kcov.h index b76a1807028d..a10e84707d82 100644 --- a/include/linux/kcov.h +++ b/include/linux/kcov.h @@ -37,12 +37,35 @@ do { \ (t)->kcov_mode &= ~KCOV_IN_CTXSW; \ } while (0) +/* See Documentation/dev-tools/kcov.rst for usage details. */ +void kcov_remote_start(u64 handle); +void kcov_remote_stop(void); +u64 kcov_common_handle(void); + +static inline void kcov_remote_start_common(u64 id) +{ + kcov_remote_start(kcov_remote_handle(KCOV_SUBSYSTEM_COMMON, id)); +} + +static inline void kcov_remote_start_usb(u64 id) +{ + kcov_remote_start(kcov_remote_handle(KCOV_SUBSYSTEM_USB, id)); +} + #else static inline void kcov_task_init(struct task_struct *t) {} static inline void kcov_task_exit(struct task_struct *t) {} static inline void kcov_prepare_switch(struct task_struct *t) {} static inline void kcov_finish_switch(struct task_struct *t) {} +static inline void kcov_remote_start(u64 handle) {} +static inline void kcov_remote_stop(void) {} +static inline u64 kcov_common_handle(void) +{ + return 0; +} +static inline void kcov_remote_start_common(u64 id) {} +static inline void kcov_remote_start_usb(u64 id) {} #endif /* CONFIG_KCOV */ #endif /* _LINUX_KCOV_H */ diff --git a/include/linux/sched.h b/include/linux/sched.h index 5b68f8f56b60..7862e0a37094 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1374,6 +1374,8 @@ struct task_struct { #endif /* CONFIG_TRACING */ #ifdef CONFIG_KCOV + /* See kernel/kcov.c for more details. */ + /* Coverage collection mode enabled for this task (0 if disabled): */ unsigned int kcov_mode; @@ -1385,6 +1387,12 @@ struct task_struct { /* KCOV descriptor wired with this task or NULL: */ struct kcov *kcov; + + /* KCOV common handle for remote coverage collection: */ + u64 kcov_handle; + + /* KCOV sequence number: */ + int kcov_sequence; #endif #ifdef CONFIG_MEMCG diff --git a/include/trace/events/preemptirq.h b/include/trace/events/preemptirq.h index d65e59731990..006df01f7abc 100644 --- a/include/trace/events/preemptirq.h +++ b/include/trace/events/preemptirq.h @@ -18,13 +18,13 @@ DECLARE_EVENT_CLASS(preemptirq_template, TP_ARGS(ip, parent_ip), TP_STRUCT__entry( - __field(u32, caller_offs) - __field(u32, parent_offs) + __field(s32, caller_offs) + __field(s32, parent_offs) ), TP_fast_assign( - __entry->caller_offs = (u32)(ip - (unsigned long)_stext); - __entry->parent_offs = (u32)(parent_ip - (unsigned long)_stext); + __entry->caller_offs = (s32)(ip - (unsigned long)_stext); + __entry->parent_offs = (s32)(parent_ip - (unsigned long)_stext); ), TP_printk("caller=%pS parent=%pS", diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h index f056b2a00d5c..9a61c28ed3ae 100644 --- a/include/uapi/linux/input.h +++ b/include/uapi/linux/input.h @@ -34,6 +34,7 @@ struct input_event { __kernel_ulong_t __sec; #if defined(__sparc__) && defined(__arch64__) unsigned int __usec; + unsigned int __pad; #else __kernel_ulong_t __usec; #endif diff --git a/include/uapi/linux/kcov.h b/include/uapi/linux/kcov.h index 9529867717a8..409d3ad1e6e2 100644 --- a/include/uapi/linux/kcov.h +++ b/include/uapi/linux/kcov.h @@ -4,9 +4,24 @@ #include +/* + * Argument for KCOV_REMOTE_ENABLE ioctl, see Documentation/dev-tools/kcov.rst + * and the comment before kcov_remote_start() for usage details. + */ +struct kcov_remote_arg { + unsigned int trace_mode; /* KCOV_TRACE_PC or KCOV_TRACE_CMP */ + unsigned int area_size; /* Length of coverage buffer in words */ + unsigned int num_handles; /* Size of handles array */ + __u64 common_handle; + __u64 handles[0]; +}; + +#define KCOV_REMOTE_MAX_HANDLES 0x100 + #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long) #define KCOV_ENABLE _IO('c', 100) #define KCOV_DISABLE _IO('c', 101) +#define KCOV_REMOTE_ENABLE _IOW('c', 102, struct kcov_remote_arg) enum { /* @@ -32,4 +47,17 @@ enum { #define KCOV_CMP_SIZE(n) ((n) << 1) #define KCOV_CMP_MASK KCOV_CMP_SIZE(3) +#define KCOV_SUBSYSTEM_COMMON (0x00ull << 56) +#define KCOV_SUBSYSTEM_USB (0x01ull << 56) + +#define KCOV_SUBSYSTEM_MASK (0xffull << 56) +#define KCOV_INSTANCE_MASK (0xffffffffull) + +static inline __u64 kcov_remote_handle(__u64 subsys, __u64 inst) +{ + if (subsys & ~KCOV_SUBSYSTEM_MASK || inst & ~KCOV_INSTANCE_MASK) + return 0; + return subsys | inst; +} + #endif /* _LINUX_KCOV_IOCTLS_H */ diff --git a/kernel/fork.c b/kernel/fork.c index 312e3fecbc57..1eee079a3b7b 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2529,6 +2529,16 @@ SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, #endif #ifdef __ARCH_WANT_SYS_CLONE3 + +/* + * copy_thread implementations handle CLONE_SETTLS by reading the TLS value from + * the registers containing the syscall arguments for clone. This doesn't work + * with clone3 since the TLS value is passed in clone_args instead. + */ +#ifndef CONFIG_HAVE_COPY_THREAD_TLS +#error clone3 requires copy_thread_tls support in arch +#endif + noinline static int copy_clone_args_from_user(struct kernel_clone_args *kargs, struct clone_args __user *uargs, size_t usize) diff --git a/kernel/kcov.c b/kernel/kcov.c index 2ee38727844a..f50354202dbe 100644 --- a/kernel/kcov.c +++ b/kernel/kcov.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -21,8 +22,11 @@ #include #include #include +#include #include +#define kcov_debug(fmt, ...) pr_debug("%s: " fmt, __func__, ##__VA_ARGS__) + /* Number of 64-bit words written per one comparison: */ #define KCOV_WORDS_PER_CMP 4 @@ -44,19 +48,100 @@ struct kcov { * Reference counter. We keep one for: * - opened file descriptor * - task with enabled coverage (we can't unwire it from another task) + * - each code section for remote coverage collection */ refcount_t refcount; /* The lock protects mode, size, area and t. */ spinlock_t lock; enum kcov_mode mode; - /* Size of arena (in long's for KCOV_MODE_TRACE). */ - unsigned size; + /* Size of arena (in long's). */ + unsigned int size; /* Coverage buffer shared with user space. */ void *area; /* Task for which we collect coverage, or NULL. */ struct task_struct *t; + /* Collecting coverage from remote (background) threads. */ + bool remote; + /* Size of remote area (in long's). */ + unsigned int remote_size; + /* + * Sequence is incremented each time kcov is reenabled, used by + * kcov_remote_stop(), see the comment there. + */ + int sequence; }; +struct kcov_remote_area { + struct list_head list; + unsigned int size; +}; + +struct kcov_remote { + u64 handle; + struct kcov *kcov; + struct hlist_node hnode; +}; + +static DEFINE_SPINLOCK(kcov_remote_lock); +static DEFINE_HASHTABLE(kcov_remote_map, 4); +static struct list_head kcov_remote_areas = LIST_HEAD_INIT(kcov_remote_areas); + +/* Must be called with kcov_remote_lock locked. */ +static struct kcov_remote *kcov_remote_find(u64 handle) +{ + struct kcov_remote *remote; + + hash_for_each_possible(kcov_remote_map, remote, hnode, handle) { + if (remote->handle == handle) + return remote; + } + return NULL; +} + +static struct kcov_remote *kcov_remote_add(struct kcov *kcov, u64 handle) +{ + struct kcov_remote *remote; + + if (kcov_remote_find(handle)) + return ERR_PTR(-EEXIST); + remote = kmalloc(sizeof(*remote), GFP_ATOMIC); + if (!remote) + return ERR_PTR(-ENOMEM); + remote->handle = handle; + remote->kcov = kcov; + hash_add(kcov_remote_map, &remote->hnode, handle); + return remote; +} + +/* Must be called with kcov_remote_lock locked. */ +static struct kcov_remote_area *kcov_remote_area_get(unsigned int size) +{ + struct kcov_remote_area *area; + struct list_head *pos; + + kcov_debug("size = %u\n", size); + list_for_each(pos, &kcov_remote_areas) { + area = list_entry(pos, struct kcov_remote_area, list); + if (area->size == size) { + list_del(&area->list); + kcov_debug("rv = %px\n", area); + return area; + } + } + kcov_debug("rv = NULL\n"); + return NULL; +} + +/* Must be called with kcov_remote_lock locked. */ +static void kcov_remote_area_put(struct kcov_remote_area *area, + unsigned int size) +{ + kcov_debug("area = %px, size = %u\n", area, size); + INIT_LIST_HEAD(&area->list); + area->size = size; + list_add(&area->list, &kcov_remote_areas); +} + static notrace bool check_kcov_mode(enum kcov_mode needed_mode, struct task_struct *t) { unsigned int mode; @@ -73,7 +158,7 @@ static notrace bool check_kcov_mode(enum kcov_mode needed_mode, struct task_stru * in_interrupt() returns false (e.g. preempt_schedule_irq()). * READ_ONCE()/barrier() effectively provides load-acquire wrt * interrupts, there are paired barrier()/WRITE_ONCE() in - * kcov_ioctl_locked(). + * kcov_start(). */ barrier(); return mode == needed_mode; @@ -227,6 +312,78 @@ void notrace __sanitizer_cov_trace_switch(u64 val, u64 *cases) EXPORT_SYMBOL(__sanitizer_cov_trace_switch); #endif /* ifdef CONFIG_KCOV_ENABLE_COMPARISONS */ +static void kcov_start(struct task_struct *t, unsigned int size, + void *area, enum kcov_mode mode, int sequence) +{ + kcov_debug("t = %px, size = %u, area = %px\n", t, size, area); + /* Cache in task struct for performance. */ + t->kcov_size = size; + t->kcov_area = area; + /* See comment in check_kcov_mode(). */ + barrier(); + WRITE_ONCE(t->kcov_mode, mode); + t->kcov_sequence = sequence; +} + +static void kcov_stop(struct task_struct *t) +{ + WRITE_ONCE(t->kcov_mode, KCOV_MODE_DISABLED); + barrier(); + t->kcov_size = 0; + t->kcov_area = NULL; +} + +static void kcov_task_reset(struct task_struct *t) +{ + kcov_stop(t); + t->kcov = NULL; + t->kcov_sequence = 0; + t->kcov_handle = 0; +} + +void kcov_task_init(struct task_struct *t) +{ + kcov_task_reset(t); + t->kcov_handle = current->kcov_handle; +} + +static void kcov_reset(struct kcov *kcov) +{ + kcov->t = NULL; + kcov->mode = KCOV_MODE_INIT; + kcov->remote = false; + kcov->remote_size = 0; + kcov->sequence++; +} + +static void kcov_remote_reset(struct kcov *kcov) +{ + int bkt; + struct kcov_remote *remote; + struct hlist_node *tmp; + + spin_lock(&kcov_remote_lock); + hash_for_each_safe(kcov_remote_map, bkt, tmp, remote, hnode) { + if (remote->kcov != kcov) + continue; + kcov_debug("removing handle %llx\n", remote->handle); + hash_del(&remote->hnode); + kfree(remote); + } + /* Do reset before unlock to prevent races with kcov_remote_start(). */ + kcov_reset(kcov); + spin_unlock(&kcov_remote_lock); +} + +static void kcov_disable(struct task_struct *t, struct kcov *kcov) +{ + kcov_task_reset(t); + if (kcov->remote) + kcov_remote_reset(kcov); + else + kcov_reset(kcov); +} + static void kcov_get(struct kcov *kcov) { refcount_inc(&kcov->refcount); @@ -235,20 +392,12 @@ static void kcov_get(struct kcov *kcov) static void kcov_put(struct kcov *kcov) { if (refcount_dec_and_test(&kcov->refcount)) { + kcov_remote_reset(kcov); vfree(kcov->area); kfree(kcov); } } -void kcov_task_init(struct task_struct *t) -{ - WRITE_ONCE(t->kcov_mode, KCOV_MODE_DISABLED); - barrier(); - t->kcov_size = 0; - t->kcov_area = NULL; - t->kcov = NULL; -} - void kcov_task_exit(struct task_struct *t) { struct kcov *kcov; @@ -256,15 +405,36 @@ void kcov_task_exit(struct task_struct *t) kcov = t->kcov; if (kcov == NULL) return; + spin_lock(&kcov->lock); + kcov_debug("t = %px, kcov->t = %px\n", t, kcov->t); + /* + * For KCOV_ENABLE devices we want to make sure that t->kcov->t == t, + * which comes down to: + * WARN_ON(!kcov->remote && kcov->t != t); + * + * For KCOV_REMOTE_ENABLE devices, the exiting task is either: + * 2. A remote task between kcov_remote_start() and kcov_remote_stop(). + * In this case we should print a warning right away, since a task + * shouldn't be exiting when it's in a kcov coverage collection + * section. Here t points to the task that is collecting remote + * coverage, and t->kcov->t points to the thread that created the + * kcov device. Which means that to detect this case we need to + * check that t != t->kcov->t, and this gives us the following: + * WARN_ON(kcov->remote && kcov->t != t); + * + * 2. The task that created kcov exiting without calling KCOV_DISABLE, + * and then again we can make sure that t->kcov->t == t: + * WARN_ON(kcov->remote && kcov->t != t); + * + * By combining all three checks into one we get: + */ if (WARN_ON(kcov->t != t)) { spin_unlock(&kcov->lock); return; } /* Just to not leave dangling references behind. */ - kcov_task_init(t); - kcov->t = NULL; - kcov->mode = KCOV_MODE_INIT; + kcov_disable(t, kcov); spin_unlock(&kcov->lock); kcov_put(kcov); } @@ -313,6 +483,7 @@ static int kcov_open(struct inode *inode, struct file *filep) if (!kcov) return -ENOMEM; kcov->mode = KCOV_MODE_DISABLED; + kcov->sequence = 1; refcount_set(&kcov->refcount, 1); spin_lock_init(&kcov->lock); filep->private_data = kcov; @@ -325,6 +496,20 @@ static int kcov_close(struct inode *inode, struct file *filep) return 0; } +static int kcov_get_mode(unsigned long arg) +{ + if (arg == KCOV_TRACE_PC) + return KCOV_MODE_TRACE_PC; + else if (arg == KCOV_TRACE_CMP) +#ifdef CONFIG_KCOV_ENABLE_COMPARISONS + return KCOV_MODE_TRACE_CMP; +#else + return -ENOTSUPP; +#endif + else + return -EINVAL; +} + /* * Fault in a lazily-faulted vmalloc area before it can be used by * __santizer_cov_trace_pc(), to avoid recursion issues if any code on the @@ -340,14 +525,35 @@ static void kcov_fault_in_area(struct kcov *kcov) READ_ONCE(area[offset]); } +static inline bool kcov_check_handle(u64 handle, bool common_valid, + bool uncommon_valid, bool zero_valid) +{ + if (handle & ~(KCOV_SUBSYSTEM_MASK | KCOV_INSTANCE_MASK)) + return false; + switch (handle & KCOV_SUBSYSTEM_MASK) { + case KCOV_SUBSYSTEM_COMMON: + return (handle & KCOV_INSTANCE_MASK) ? + common_valid : zero_valid; + case KCOV_SUBSYSTEM_USB: + return uncommon_valid; + default: + return false; + } + return false; +} + static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd, unsigned long arg) { struct task_struct *t; unsigned long size, unused; + int mode, i; + struct kcov_remote_arg *remote_arg; + struct kcov_remote *remote; switch (cmd) { case KCOV_INIT_TRACE: + kcov_debug("KCOV_INIT_TRACE\n"); /* * Enable kcov in trace mode and setup buffer size. * Must happen before anything else. @@ -366,6 +572,7 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd, kcov->mode = KCOV_MODE_INIT; return 0; case KCOV_ENABLE: + kcov_debug("KCOV_ENABLE\n"); /* * Enable coverage for the current task. * At this point user must have been enabled trace mode, @@ -378,29 +585,20 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd, t = current; if (kcov->t != NULL || t->kcov != NULL) return -EBUSY; - if (arg == KCOV_TRACE_PC) - kcov->mode = KCOV_MODE_TRACE_PC; - else if (arg == KCOV_TRACE_CMP) -#ifdef CONFIG_KCOV_ENABLE_COMPARISONS - kcov->mode = KCOV_MODE_TRACE_CMP; -#else - return -ENOTSUPP; -#endif - else - return -EINVAL; + mode = kcov_get_mode(arg); + if (mode < 0) + return mode; kcov_fault_in_area(kcov); - /* Cache in task struct for performance. */ - t->kcov_size = kcov->size; - t->kcov_area = kcov->area; - /* See comment in check_kcov_mode(). */ - barrier(); - WRITE_ONCE(t->kcov_mode, kcov->mode); + kcov->mode = mode; + kcov_start(t, kcov->size, kcov->area, kcov->mode, + kcov->sequence); t->kcov = kcov; kcov->t = t; - /* This is put either in kcov_task_exit() or in KCOV_DISABLE. */ + /* Put either in kcov_task_exit() or in KCOV_DISABLE. */ kcov_get(kcov); return 0; case KCOV_DISABLE: + kcov_debug("KCOV_DISABLE\n"); /* Disable coverage for the current task. */ unused = arg; if (unused != 0 || current->kcov != kcov) @@ -408,11 +606,65 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd, t = current; if (WARN_ON(kcov->t != t)) return -EINVAL; - kcov_task_init(t); - kcov->t = NULL; - kcov->mode = KCOV_MODE_INIT; + kcov_disable(t, kcov); kcov_put(kcov); return 0; + case KCOV_REMOTE_ENABLE: + kcov_debug("KCOV_REMOTE_ENABLE\n"); + if (kcov->mode != KCOV_MODE_INIT || !kcov->area) + return -EINVAL; + t = current; + if (kcov->t != NULL || t->kcov != NULL) + return -EBUSY; + remote_arg = (struct kcov_remote_arg *)arg; + mode = kcov_get_mode(remote_arg->trace_mode); + if (mode < 0) + return mode; + if (remote_arg->area_size > LONG_MAX / sizeof(unsigned long)) + return -EINVAL; + kcov->mode = mode; + t->kcov = kcov; + kcov->t = t; + kcov->remote = true; + kcov->remote_size = remote_arg->area_size; + spin_lock(&kcov_remote_lock); + for (i = 0; i < remote_arg->num_handles; i++) { + kcov_debug("handle %llx\n", remote_arg->handles[i]); + if (!kcov_check_handle(remote_arg->handles[i], + false, true, false)) { + spin_unlock(&kcov_remote_lock); + kcov_disable(t, kcov); + return -EINVAL; + } + remote = kcov_remote_add(kcov, remote_arg->handles[i]); + if (IS_ERR(remote)) { + spin_unlock(&kcov_remote_lock); + kcov_disable(t, kcov); + return PTR_ERR(remote); + } + } + if (remote_arg->common_handle) { + kcov_debug("common handle %llx\n", + remote_arg->common_handle); + if (!kcov_check_handle(remote_arg->common_handle, + true, false, false)) { + spin_unlock(&kcov_remote_lock); + kcov_disable(t, kcov); + return -EINVAL; + } + remote = kcov_remote_add(kcov, + remote_arg->common_handle); + if (IS_ERR(remote)) { + spin_unlock(&kcov_remote_lock); + kcov_disable(t, kcov); + return PTR_ERR(remote); + } + t->kcov_handle = remote_arg->common_handle; + } + spin_unlock(&kcov_remote_lock); + /* Put either in kcov_task_exit() or in KCOV_DISABLE. */ + kcov_get(kcov); + return 0; default: return -ENOTTY; } @@ -422,11 +674,35 @@ static long kcov_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) { struct kcov *kcov; int res; + struct kcov_remote_arg *remote_arg = NULL; + unsigned int remote_num_handles; + unsigned long remote_arg_size; + + if (cmd == KCOV_REMOTE_ENABLE) { + if (get_user(remote_num_handles, (unsigned __user *)(arg + + offsetof(struct kcov_remote_arg, num_handles)))) + return -EFAULT; + if (remote_num_handles > KCOV_REMOTE_MAX_HANDLES) + return -EINVAL; + remote_arg_size = struct_size(remote_arg, handles, + remote_num_handles); + remote_arg = memdup_user((void __user *)arg, remote_arg_size); + if (IS_ERR(remote_arg)) + return PTR_ERR(remote_arg); + if (remote_arg->num_handles != remote_num_handles) { + kfree(remote_arg); + return -EINVAL; + } + arg = (unsigned long)remote_arg; + } kcov = filep->private_data; spin_lock(&kcov->lock); res = kcov_ioctl_locked(kcov, cmd, arg); spin_unlock(&kcov->lock); + + kfree(remote_arg); + return res; } @@ -438,6 +714,207 @@ static const struct file_operations kcov_fops = { .release = kcov_close, }; +/* + * kcov_remote_start() and kcov_remote_stop() can be used to annotate a section + * of code in a kernel background thread to allow kcov to be used to collect + * coverage from that part of code. + * + * The handle argument of kcov_remote_start() identifies a code section that is + * used for coverage collection. A userspace process passes this handle to + * KCOV_REMOTE_ENABLE ioctl to make the used kcov device start collecting + * coverage for the code section identified by this handle. + * + * The usage of these annotations in the kernel code is different depending on + * the type of the kernel thread whose code is being annotated. + * + * For global kernel threads that are spawned in a limited number of instances + * (e.g. one USB hub_event() worker thread is spawned per USB HCD), each + * instance must be assigned a unique 4-byte instance id. The instance id is + * then combined with a 1-byte subsystem id to get a handle via + * kcov_remote_handle(subsystem_id, instance_id). + * + * For local kernel threads that are spawned from system calls handler when a + * user interacts with some kernel interface (e.g. vhost workers), a handle is + * passed from a userspace process as the common_handle field of the + * kcov_remote_arg struct (note, that the user must generate a handle by using + * kcov_remote_handle() with KCOV_SUBSYSTEM_COMMON as the subsystem id and an + * arbitrary 4-byte non-zero number as the instance id). This common handle + * then gets saved into the task_struct of the process that issued the + * KCOV_REMOTE_ENABLE ioctl. When this proccess issues system calls that spawn + * kernel threads, the common handle must be retrived via kcov_common_handle() + * and passed to the spawned threads via custom annotations. Those kernel + * threads must in turn be annotated with kcov_remote_start(common_handle) and + * kcov_remote_stop(). All of the threads that are spawned by the same process + * obtain the same handle, hence the name "common". + * + * See Documentation/dev-tools/kcov.rst for more details. + * + * Internally, this function looks up the kcov device associated with the + * provided handle, allocates an area for coverage collection, and saves the + * pointers to kcov and area into the current task_struct to allow coverage to + * be collected via __sanitizer_cov_trace_pc() + * In turns kcov_remote_stop() clears those pointers from task_struct to stop + * collecting coverage and copies all collected coverage into the kcov area. + */ +void kcov_remote_start(u64 handle) +{ + struct kcov_remote *remote; + void *area; + struct task_struct *t; + unsigned int size; + enum kcov_mode mode; + int sequence; + + if (WARN_ON(!kcov_check_handle(handle, true, true, true))) + return; + if (WARN_ON(!in_task())) + return; + t = current; + /* + * Check that kcov_remote_start is not called twice + * nor called by user tasks (with enabled kcov). + */ + if (WARN_ON(t->kcov)) + return; + + kcov_debug("handle = %llx\n", handle); + + spin_lock(&kcov_remote_lock); + remote = kcov_remote_find(handle); + if (!remote) { + kcov_debug("no remote found"); + spin_unlock(&kcov_remote_lock); + return; + } + /* Put in kcov_remote_stop(). */ + kcov_get(remote->kcov); + t->kcov = remote->kcov; + /* + * Read kcov fields before unlock to prevent races with + * KCOV_DISABLE / kcov_remote_reset(). + */ + size = remote->kcov->remote_size; + mode = remote->kcov->mode; + sequence = remote->kcov->sequence; + area = kcov_remote_area_get(size); + spin_unlock(&kcov_remote_lock); + + if (!area) { + area = vmalloc(size * sizeof(unsigned long)); + if (!area) { + t->kcov = NULL; + kcov_put(remote->kcov); + return; + } + } + /* Reset coverage size. */ + *(u64 *)area = 0; + + kcov_debug("area = %px, size = %u", area, size); + + kcov_start(t, size, area, mode, sequence); + +} +EXPORT_SYMBOL(kcov_remote_start); + +static void kcov_move_area(enum kcov_mode mode, void *dst_area, + unsigned int dst_area_size, void *src_area) +{ + u64 word_size = sizeof(unsigned long); + u64 count_size, entry_size_log; + u64 dst_len, src_len; + void *dst_entries, *src_entries; + u64 dst_occupied, dst_free, bytes_to_move, entries_moved; + + kcov_debug("%px %u <= %px %lu\n", + dst_area, dst_area_size, src_area, *(unsigned long *)src_area); + + switch (mode) { + case KCOV_MODE_TRACE_PC: + dst_len = READ_ONCE(*(unsigned long *)dst_area); + src_len = *(unsigned long *)src_area; + count_size = sizeof(unsigned long); + entry_size_log = __ilog2_u64(sizeof(unsigned long)); + break; + case KCOV_MODE_TRACE_CMP: + dst_len = READ_ONCE(*(u64 *)dst_area); + src_len = *(u64 *)src_area; + count_size = sizeof(u64); + BUILD_BUG_ON(!is_power_of_2(KCOV_WORDS_PER_CMP)); + entry_size_log = __ilog2_u64(sizeof(u64) * KCOV_WORDS_PER_CMP); + break; + default: + WARN_ON(1); + return; + } + + /* As arm can't divide u64 integers use log of entry size. */ + if (dst_len > ((dst_area_size * word_size - count_size) >> + entry_size_log)) + return; + dst_occupied = count_size + (dst_len << entry_size_log); + dst_free = dst_area_size * word_size - dst_occupied; + bytes_to_move = min(dst_free, src_len << entry_size_log); + dst_entries = dst_area + dst_occupied; + src_entries = src_area + count_size; + memcpy(dst_entries, src_entries, bytes_to_move); + entries_moved = bytes_to_move >> entry_size_log; + + switch (mode) { + case KCOV_MODE_TRACE_PC: + WRITE_ONCE(*(unsigned long *)dst_area, dst_len + entries_moved); + break; + case KCOV_MODE_TRACE_CMP: + WRITE_ONCE(*(u64 *)dst_area, dst_len + entries_moved); + break; + default: + break; + } +} + +/* See the comment before kcov_remote_start() for usage details. */ +void kcov_remote_stop(void) +{ + struct task_struct *t = current; + struct kcov *kcov = t->kcov; + void *area = t->kcov_area; + unsigned int size = t->kcov_size; + int sequence = t->kcov_sequence; + + if (!kcov) { + kcov_debug("no kcov found\n"); + return; + } + + kcov_stop(t); + t->kcov = NULL; + + spin_lock(&kcov->lock); + /* + * KCOV_DISABLE could have been called between kcov_remote_start() + * and kcov_remote_stop(), hence the check. + */ + kcov_debug("move if: %d == %d && %d\n", + sequence, kcov->sequence, (int)kcov->remote); + if (sequence == kcov->sequence && kcov->remote) + kcov_move_area(kcov->mode, kcov->area, kcov->size, area); + spin_unlock(&kcov->lock); + + spin_lock(&kcov_remote_lock); + kcov_remote_area_put(area, size); + spin_unlock(&kcov_remote_lock); + + kcov_put(kcov); +} +EXPORT_SYMBOL(kcov_remote_stop); + +/* See the comment before kcov_remote_start() for usage details. */ +u64 kcov_common_handle(void) +{ + return current->kcov_handle; +} +EXPORT_SYMBOL(kcov_common_handle); + static int __init kcov_init(void) { /* diff --git a/kernel/trace/trace_sched_wakeup.c b/kernel/trace/trace_sched_wakeup.c index 5e43b9664eca..617e297f46dc 100644 --- a/kernel/trace/trace_sched_wakeup.c +++ b/kernel/trace/trace_sched_wakeup.c @@ -630,7 +630,7 @@ static void start_wakeup_tracer(struct trace_array *tr) if (ret) { pr_info("wakeup trace: Couldn't activate tracepoint" " probe to kernel_sched_migrate_task\n"); - return; + goto fail_deprobe_sched_switch; } wakeup_reset(tr); @@ -648,6 +648,8 @@ static void start_wakeup_tracer(struct trace_array *tr) printk(KERN_ERR "failed to start wakeup tracer\n"); return; +fail_deprobe_sched_switch: + unregister_trace_sched_switch(probe_wakeup_sched_switch, NULL); fail_deprobe_wake_new: unregister_trace_sched_wakeup_new(probe_wakeup, NULL); fail_deprobe: diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 4df9a209f7ca..c557f42a9397 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c @@ -283,6 +283,11 @@ static void check_stack(unsigned long ip, unsigned long *stack) local_irq_restore(flags); } +/* Some archs may not define MCOUNT_INSN_SIZE */ +#ifndef MCOUNT_INSN_SIZE +# define MCOUNT_INSN_SIZE 0 +#endif + static void stack_trace_call(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *op, struct pt_regs *pt_regs) diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index 214154b47d56..069f72edb264 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c @@ -384,10 +384,11 @@ next: ; return 1; } -static inline int check_target(struct arpt_entry *e, const char *name) +static int check_target(struct arpt_entry *e, struct net *net, const char *name) { struct xt_entry_target *t = arpt_get_target(e); struct xt_tgchk_param par = { + .net = net, .table = name, .entryinfo = e, .target = t->u.kernel.target, @@ -399,8 +400,9 @@ static inline int check_target(struct arpt_entry *e, const char *name) return xt_check_target(&par, t->u.target_size - sizeof(*t), 0, false); } -static inline int -find_check_entry(struct arpt_entry *e, const char *name, unsigned int size, +static int +find_check_entry(struct arpt_entry *e, struct net *net, const char *name, + unsigned int size, struct xt_percpu_counter_alloc_state *alloc_state) { struct xt_entry_target *t; @@ -419,7 +421,7 @@ find_check_entry(struct arpt_entry *e, const char *name, unsigned int size, } t->u.kernel.target = target; - ret = check_target(e, name); + ret = check_target(e, net, name); if (ret) goto err; return 0; @@ -512,7 +514,9 @@ static inline void cleanup_entry(struct arpt_entry *e) /* Checks and translates the user-supplied table segment (held in * newinfo). */ -static int translate_table(struct xt_table_info *newinfo, void *entry0, +static int translate_table(struct net *net, + struct xt_table_info *newinfo, + void *entry0, const struct arpt_replace *repl) { struct xt_percpu_counter_alloc_state alloc_state = { 0 }; @@ -569,7 +573,7 @@ static int translate_table(struct xt_table_info *newinfo, void *entry0, /* Finally, each sanity check must pass */ i = 0; xt_entry_foreach(iter, entry0, newinfo->size) { - ret = find_check_entry(iter, repl->name, repl->size, + ret = find_check_entry(iter, net, repl->name, repl->size, &alloc_state); if (ret != 0) break; @@ -974,7 +978,7 @@ static int do_replace(struct net *net, const void __user *user, goto free_newinfo; } - ret = translate_table(newinfo, loc_cpu_entry, &tmp); + ret = translate_table(net, newinfo, loc_cpu_entry, &tmp); if (ret != 0) goto free_newinfo; @@ -1149,7 +1153,8 @@ compat_copy_entry_from_user(struct compat_arpt_entry *e, void **dstptr, } } -static int translate_compat_table(struct xt_table_info **pinfo, +static int translate_compat_table(struct net *net, + struct xt_table_info **pinfo, void **pentry0, const struct compat_arpt_replace *compatr) { @@ -1217,7 +1222,7 @@ static int translate_compat_table(struct xt_table_info **pinfo, repl.num_counters = 0; repl.counters = NULL; repl.size = newinfo->size; - ret = translate_table(newinfo, entry1, &repl); + ret = translate_table(net, newinfo, entry1, &repl); if (ret) goto free_newinfo; @@ -1270,7 +1275,7 @@ static int compat_do_replace(struct net *net, void __user *user, goto free_newinfo; } - ret = translate_compat_table(&newinfo, &loc_cpu_entry, &tmp); + ret = translate_compat_table(net, &newinfo, &loc_cpu_entry, &tmp); if (ret != 0) goto free_newinfo; @@ -1546,7 +1551,7 @@ int arpt_register_table(struct net *net, loc_cpu_entry = newinfo->entries; memcpy(loc_cpu_entry, repl->entries, repl->size); - ret = translate_table(newinfo, loc_cpu_entry, repl); + ret = translate_table(net, newinfo, loc_cpu_entry, repl); if (ret != 0) goto out_free; diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c index d73d1828216a..d8143a8c034d 100644 --- a/net/netfilter/ipset/ip_set_core.c +++ b/net/netfilter/ipset/ip_set_core.c @@ -1658,6 +1658,7 @@ static int ip_set_utest(struct net *net, struct sock *ctnl, struct sk_buff *skb, struct ip_set *set; struct nlattr *tb[IPSET_ATTR_ADT_MAX + 1] = {}; int ret = 0; + u32 lineno; if (unlikely(protocol_min_failed(attr) || !attr[IPSET_ATTR_SETNAME] || @@ -1674,7 +1675,7 @@ static int ip_set_utest(struct net *net, struct sock *ctnl, struct sk_buff *skb, return -IPSET_ERR_PROTOCOL; rcu_read_lock_bh(); - ret = set->variant->uadt(set, tb, IPSET_TEST, NULL, 0, 0); + ret = set->variant->uadt(set, tb, IPSET_TEST, &lineno, 0, 0); rcu_read_unlock_bh(); /* Userspace can't trigger element to be re-added */ if (ret == -EAGAIN) diff --git a/net/netfilter/nf_conntrack_proto_dccp.c b/net/netfilter/nf_conntrack_proto_dccp.c index b6b14db3955b..b3f4a334f9d7 100644 --- a/net/netfilter/nf_conntrack_proto_dccp.c +++ b/net/netfilter/nf_conntrack_proto_dccp.c @@ -677,6 +677,9 @@ static int dccp_timeout_nlattr_to_obj(struct nlattr *tb[], unsigned int *timeouts = data; int i; + if (!timeouts) + timeouts = dn->dccp_timeout; + /* set default DCCP timeouts. */ for (i=0; idccp_timeout[i]; diff --git a/net/netfilter/nf_conntrack_proto_sctp.c b/net/netfilter/nf_conntrack_proto_sctp.c index fce3d93f1541..0399ae8f1188 100644 --- a/net/netfilter/nf_conntrack_proto_sctp.c +++ b/net/netfilter/nf_conntrack_proto_sctp.c @@ -594,6 +594,9 @@ static int sctp_timeout_nlattr_to_obj(struct nlattr *tb[], struct nf_sctp_net *sn = nf_sctp_pernet(net); int i; + if (!timeouts) + timeouts = sn->timeouts; + /* set default SCTP timeouts. */ for (i=0; itimeouts[i]; diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 252888f426de..d293488dc3dd 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -412,6 +412,7 @@ static void alc_fill_eapd_coef(struct hda_codec *codec) case 0x10ec0672: alc_update_coef_idx(codec, 0xd, 0, 1<<14); /* EAPD Ctrl */ break; + case 0x10ec0222: case 0x10ec0623: alc_update_coef_idx(codec, 0x19, 1<<13, 0); break; @@ -430,6 +431,7 @@ static void alc_fill_eapd_coef(struct hda_codec *codec) break; case 0x10ec0899: case 0x10ec0900: + case 0x10ec0b00: case 0x10ec1168: case 0x10ec1220: alc_update_coef_idx(codec, 0x7, 1<<1, 0); @@ -2526,6 +2528,7 @@ static int patch_alc882(struct hda_codec *codec) case 0x10ec0882: case 0x10ec0885: case 0x10ec0900: + case 0x10ec0b00: case 0x10ec1220: break; default: @@ -7257,6 +7260,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), + SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Yoga 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1), SND_PCI_QUIRK(0x17aa, 0x2293, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1), SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), @@ -9295,6 +9299,7 @@ static const struct hda_device_id snd_hda_id_realtek[] = { HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662), HDA_CODEC_ENTRY(0x10ec0899, "ALC898", patch_alc882), HDA_CODEC_ENTRY(0x10ec0900, "ALC1150", patch_alc882), + HDA_CODEC_ENTRY(0x10ec0b00, "ALCS1200A", patch_alc882), HDA_CODEC_ENTRY(0x10ec1168, "ALC1220", patch_alc882), HDA_CODEC_ENTRY(0x10ec1220, "ALC1220", patch_alc882), {} /* terminator */ diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index a81c2066499f..82184036437b 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1397,6 +1397,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */ case USB_ID(0x0556, 0x0014): /* Phoenix Audio TMX320VC */ case USB_ID(0x05A3, 0x9420): /* ELP HD USB Camera */ + case USB_ID(0x05a7, 0x1020): /* Bose Companion 5 */ case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */ case USB_ID(0x1395, 0x740a): /* Sennheiser DECT */ case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */