aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/chibios/ws2812_pwm.c12
-rw-r--r--drivers/chibios/ws2812_spi.c2
-rw-r--r--drivers/issi/is31fl3731-simple.c2
-rw-r--r--keyboards/mt64rgb/keymaps/default/readme.md6
-rw-r--r--keyboards/mt64rgb/readme.md32
-rw-r--r--keyboards/zinc/keymaps/default/readme_en.md2
-rw-r--r--quantum/debounce/sym_defer_pk.c10
-rw-r--r--quantum/matrix.c20
-rw-r--r--quantum/split_common/matrix.c20
-rw-r--r--quantum/split_common/split_util.c8
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_device_conf.h4
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c4
-rw-r--r--tmk_core/protocol/chibios/usb_main.c222
-rw-r--r--tmk_core/protocol/usb_descriptor.h52
-rw-r--r--util/pro_micro_ISP_B6_10.hex724
15 files changed, 550 insertions, 570 deletions
diff --git a/drivers/chibios/ws2812_pwm.c b/drivers/chibios/ws2812_pwm.c
index 7595e2fa2..3af922c06 100644
--- a/drivers/chibios/ws2812_pwm.c
+++ b/drivers/chibios/ws2812_pwm.c
@@ -118,7 +118,7 @@
118 * 118 *
119 * @return The bit index 119 * @return The bit index
120 */ 120 */
121# define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 1, (bit)) 121# define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 1, (bit))
122 122
123/** 123/**
124 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit 124 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit
@@ -130,7 +130,7 @@
130 * 130 *
131 * @return The bit index 131 * @return The bit index
132 */ 132 */
133# define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 0, (bit)) 133# define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 0, (bit))
134 134
135/** 135/**
136 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit 136 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit
@@ -142,7 +142,7 @@
142 * 142 *
143 * @return The bit index 143 * @return The bit index
144 */ 144 */
145# define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit)) 145# define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
146 146
147#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB) 147#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
148/** 148/**
@@ -155,7 +155,7 @@
155 * 155 *
156 * @return The bit index 156 * @return The bit index
157 */ 157 */
158# define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 0, (bit)) 158# define WS2812_RED_BIT(led, bit) WS2812_BIT((led), 0, (bit))
159 159
160/** 160/**
161 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit 161 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given green bit
@@ -167,7 +167,7 @@
167 * 167 *
168 * @return The bit index 168 * @return The bit index
169 */ 169 */
170# define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 1, (bit)) 170# define WS2812_GREEN_BIT(led, bit) WS2812_BIT((led), 1, (bit))
171 171
172/** 172/**
173 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit 173 * @brief Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given blue bit
@@ -179,7 +179,7 @@
179 * 179 *
180 * @return The bit index 180 * @return The bit index
181 */ 181 */
182# define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit)) 182# define WS2812_BLUE_BIT(led, bit) WS2812_BIT((led), 2, (bit))
183#endif 183#endif
184 184
185/* --- PRIVATE VARIABLES ---------------------------------------------------- */ 185/* --- PRIVATE VARIABLES ---------------------------------------------------- */
diff --git a/drivers/chibios/ws2812_spi.c b/drivers/chibios/ws2812_spi.c
index 1dec1f516..a93342436 100644
--- a/drivers/chibios/ws2812_spi.c
+++ b/drivers/chibios/ws2812_spi.c
@@ -69,7 +69,7 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
69#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB) 69#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
70 for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j); 70 for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j);
71 for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j); 71 for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
72 for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j); 72 for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
73#endif 73#endif
74} 74}
75 75
diff --git a/drivers/issi/is31fl3731-simple.c b/drivers/issi/is31fl3731-simple.c
index cffb4d87f..7c86841f1 100644
--- a/drivers/issi/is31fl3731-simple.c
+++ b/drivers/issi/is31fl3731-simple.c
@@ -75,7 +75,7 @@ uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}};
75#elif LED_DRIVER_COUNT == 4 75#elif LED_DRIVER_COUNT == 4
76uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}, {0}}; 76uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}, {0}};
77#endif 77#endif
78bool g_led_control_registers_update_required[LED_DRIVER_COUNT] = {false}; 78bool g_led_control_registers_update_required[LED_DRIVER_COUNT] = {false};
79 79
80// This is the bit pattern in the LED control registers 80// This is the bit pattern in the LED control registers
81// (for matrix A, add one to register for matrix B) 81// (for matrix A, add one to register for matrix B)
diff --git a/keyboards/mt64rgb/keymaps/default/readme.md b/keyboards/mt64rgb/keymaps/default/readme.md
index f42a9a615..5508f7df1 100644
--- a/keyboards/mt64rgb/keymaps/default/readme.md
+++ b/keyboards/mt64rgb/keymaps/default/readme.md
@@ -1,3 +1,3 @@
1# Default mt4rgb Layout 1# Default mt4rgb Layout
2 2
3This is the default layout that comes flashed on every mt64rgb. All key pins are shown in the file. \ No newline at end of file 3This is the default layout that comes flashed on every mt64rgb. All key pins are shown in the file.
diff --git a/keyboards/mt64rgb/readme.md b/keyboards/mt64rgb/readme.md
index c412835b8..dcc941236 100644
--- a/keyboards/mt64rgb/readme.md
+++ b/keyboards/mt64rgb/readme.md
@@ -1,16 +1,16 @@
1# mt64rgb 1# mt64rgb
2 2
3![mt64rgb](https://i.imgur.com/kxGGUg9.jpg?1) 3![mt64rgb](https://i.imgur.com/kxGGUg9.jpg?1)
4 4
5A 60% keyboard PCB made by MT. 5A 60% keyboard PCB made by MT.
6It supports an ANSI-based 64-key layout, with hotswap sockets and per-key RGB backlight. 6It supports an ANSI-based 64-key layout, with hotswap sockets and per-key RGB backlight.
7 7
8* Keyboard Maintainer: [MT](https://github.com/704340378) 8* Keyboard Maintainer: [MT](https://github.com/704340378)
9* Hardware Supported: mt64rgb (atmega32u4) 9* Hardware Supported: mt64rgb (atmega32u4)
10* Hardware Availability: [麦田外设](https://shop110310565.taobao.com) 10* Hardware Availability: [麦田外设](https://shop110310565.taobao.com)
11 11
12Make example for this keyboard (after setting up your build environment): 12Make example for this keyboard (after setting up your build environment):
13 13
14 make mt64rgb:default 14 make mt64rgb:default
15 15
16See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 16See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/zinc/keymaps/default/readme_en.md b/keyboards/zinc/keymaps/default/readme_en.md
index 6447e96ed..3be6b2961 100644
--- a/keyboards/zinc/keymaps/default/readme_en.md
+++ b/keyboards/zinc/keymaps/default/readme_en.md
@@ -1,4 +1,4 @@
1# The Default Zinc Layout 1# The Default Zinc Layout
2## layout 2## layout
3 3
4### Qwerty 4### Qwerty
diff --git a/quantum/debounce/sym_defer_pk.c b/quantum/debounce/sym_defer_pk.c
index f404cf9c4..6c0e3bb07 100644
--- a/quantum/debounce/sym_defer_pk.c
+++ b/quantum/debounce/sym_defer_pk.c
@@ -38,12 +38,12 @@ static bool counters_need_update;
38#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1) 38#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1)
39 39
40static uint8_t wrapping_timer_read(void) { 40static uint8_t wrapping_timer_read(void) {
41 static uint16_t time = 0; 41 static uint16_t time = 0;
42 static uint8_t last_result = 0; 42 static uint8_t last_result = 0;
43 uint16_t new_time = timer_read(); 43 uint16_t new_time = timer_read();
44 uint16_t diff = new_time - time; 44 uint16_t diff = new_time - time;
45 time = new_time; 45 time = new_time;
46 last_result = (last_result + diff) % (MAX_DEBOUNCE + 1); 46 last_result = (last_result + diff) % (MAX_DEBOUNCE + 1);
47 return last_result; 47 return last_result;
48} 48}
49 49
diff --git a/quantum/matrix.c b/quantum/matrix.c
index cab0d2ddc..9083ff386 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -40,9 +40,7 @@ static inline void setPinOutput_writeLow(pin_t pin) {
40} 40}
41 41
42static inline void setPinInputHigh_atomic(pin_t pin) { 42static inline void setPinInputHigh_atomic(pin_t pin) {
43 ATOMIC_BLOCK_FORCEON { 43 ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); }
44 setPinInputHigh(pin);
45 }
46} 44}
47 45
48// matrix code 46// matrix code
@@ -82,13 +80,9 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
82#elif defined(DIODE_DIRECTION) 80#elif defined(DIODE_DIRECTION)
83# if (DIODE_DIRECTION == COL2ROW) 81# if (DIODE_DIRECTION == COL2ROW)
84 82
85static void select_row(uint8_t row) { 83static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); }
86 setPinOutput_writeLow(row_pins[row]);
87}
88 84
89static void unselect_row(uint8_t row) { 85static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); }
90 setPinInputHigh_atomic(row_pins[row]);
91}
92 86
93static void unselect_rows(void) { 87static void unselect_rows(void) {
94 for (uint8_t x = 0; x < MATRIX_ROWS; x++) { 88 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
@@ -133,13 +127,9 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
133 127
134# elif (DIODE_DIRECTION == ROW2COL) 128# elif (DIODE_DIRECTION == ROW2COL)
135 129
136static void select_col(uint8_t col) { 130static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); }
137 setPinOutput_writeLow(col_pins[col]);
138}
139 131
140static void unselect_col(uint8_t col) { 132static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); }
141 setPinInputHigh_atomic(col_pins[col]);
142}
143 133
144static void unselect_cols(void) { 134static void unselect_cols(void) {
145 for (uint8_t x = 0; x < MATRIX_COLS; x++) { 135 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
diff --git a/quantum/split_common/matrix.c b/quantum/split_common/matrix.c
index cd5a024c3..51bf8b109 100644
--- a/quantum/split_common/matrix.c
+++ b/quantum/split_common/matrix.c
@@ -53,9 +53,7 @@ static inline void setPinOutput_writeLow(pin_t pin) {
53} 53}
54 54
55static inline void setPinInputHigh_atomic(pin_t pin) { 55static inline void setPinInputHigh_atomic(pin_t pin) {
56 ATOMIC_BLOCK_FORCEON { 56 ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); }
57 setPinInputHigh(pin);
58 }
59} 57}
60 58
61// matrix code 59// matrix code
@@ -95,13 +93,9 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
95#elif defined(DIODE_DIRECTION) 93#elif defined(DIODE_DIRECTION)
96# if (DIODE_DIRECTION == COL2ROW) 94# if (DIODE_DIRECTION == COL2ROW)
97 95
98static void select_row(uint8_t row) { 96static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); }
99 setPinOutput_writeLow(row_pins[row]);
100}
101 97
102static void unselect_row(uint8_t row) { 98static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); }
103 setPinInputHigh_atomic(row_pins[row]);
104}
105 99
106static void unselect_rows(void) { 100static void unselect_rows(void) {
107 for (uint8_t x = 0; x < ROWS_PER_HAND; x++) { 101 for (uint8_t x = 0; x < ROWS_PER_HAND; x++) {
@@ -146,13 +140,9 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
146 140
147# elif (DIODE_DIRECTION == ROW2COL) 141# elif (DIODE_DIRECTION == ROW2COL)
148 142
149static void select_col(uint8_t col) { 143static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); }
150 setPinOutput_writeLow(col_pins[col]);
151}
152 144
153static void unselect_col(uint8_t col) { 145static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); }
154 setPinInputHigh_atomic(col_pins[col]);
155}
156 146
157static void unselect_cols(void) { 147static void unselect_cols(void) {
158 for (uint8_t x = 0; x < MATRIX_COLS; x++) { 148 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c
index 97d49961d..2ae44e6e1 100644
--- a/quantum/split_common/split_util.c
+++ b/quantum/split_common/split_util.c
@@ -95,7 +95,7 @@ static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) {
95 uint8_t pin_state = readPin(in_pin); 95 uint8_t pin_state = readPin(in_pin);
96 // Set out_pin to a setting that is less susceptible to noise. 96 // Set out_pin to a setting that is less susceptible to noise.
97 setPinInputHigh(out_pin); 97 setPinInputHigh(out_pin);
98 matrix_io_delay(); // Wait for the pull-up to go HIGH. 98 matrix_io_delay(); // Wait for the pull-up to go HIGH.
99 return pin_state; 99 return pin_state;
100} 100}
101#endif 101#endif
@@ -106,11 +106,11 @@ __attribute__((weak)) bool is_keyboard_left(void) {
106 setPinInput(SPLIT_HAND_PIN); 106 setPinInput(SPLIT_HAND_PIN);
107 return readPin(SPLIT_HAND_PIN); 107 return readPin(SPLIT_HAND_PIN);
108#elif defined(SPLIT_HAND_MATRIX_GRID) 108#elif defined(SPLIT_HAND_MATRIX_GRID)
109# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT 109# ifdef SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
110 return peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID); 110 return peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID);
111# else 111# else
112 return !peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID); 112 return !peek_matrix_intersection(SPLIT_HAND_MATRIX_GRID);
113# endif 113# endif
114#elif defined(EE_HANDS) 114#elif defined(EE_HANDS)
115 return eeconfig_read_handedness(); 115 return eeconfig_read_handedness();
116#elif defined(MASTER_RIGHT) 116#elif defined(MASTER_RIGHT)
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
index 505db47b0..9c9d94789 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
+++ b/tmk_core/protocol/arm_atsam/usb/udi_device_conf.h
@@ -291,7 +291,7 @@ typedef struct {
291extern uint8_t udi_hid_kbd_report_set; 291extern uint8_t udi_hid_kbd_report_set;
292 292
293// report buffer (to host) 293// report buffer (to host)
294# define UDI_HID_KBD_REPORT_SIZE 8 294#define UDI_HID_KBD_REPORT_SIZE 8
295extern uint8_t udi_hid_kbd_report[UDI_HID_KBD_REPORT_SIZE]; 295extern uint8_t udi_hid_kbd_report[UDI_HID_KBD_REPORT_SIZE];
296 296
297COMPILER_PACK_RESET() 297COMPILER_PACK_RESET()
@@ -784,7 +784,7 @@ COMPILER_PACK_RESET()
784COMPILER_PACK_SET(1) 784COMPILER_PACK_SET(1)
785 785
786typedef struct { 786typedef struct {
787 usb_conf_desc_t conf; 787 usb_conf_desc_t conf;
788 udi_hid_kbd_desc_t hid_kbd; 788 udi_hid_kbd_desc_t hid_kbd;
789#ifdef MOUSE_ENABLE 789#ifdef MOUSE_ENABLE
790 udi_hid_mou_desc_t hid_mou; 790 udi_hid_mou_desc_t hid_mou;
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
index a3fb46a3d..814389b6e 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_hid_kbd_desc.c
@@ -83,7 +83,7 @@ UDC_DESC_STORAGE usb_dev_desc_t udc_device_desc = {.bLength = sizeof(usb
83#ifdef USB_DEVICE_PRODUCT_NAME 83#ifdef USB_DEVICE_PRODUCT_NAME
84 .iProduct = 2, 84 .iProduct = 2,
85#else 85#else
86 .iProduct = 0, // No product string 86 .iProduct = 0, // No product string
87#endif 87#endif
88#if (defined USB_DEVICE_SERIAL_NAME || defined USB_DEVICE_GET_SERIAL_NAME_POINTER) 88#if (defined USB_DEVICE_SERIAL_NAME || defined USB_DEVICE_GET_SERIAL_NAME_POINTER)
89 .iSerialNumber = 3, 89 .iSerialNumber = 3,
@@ -120,7 +120,7 @@ UDC_DESC_STORAGE udc_desc_t udc_desc = {
120 .conf.iConfiguration = 0, 120 .conf.iConfiguration = 0,
121 .conf.bmAttributes = /* USB_CONFIG_ATTR_MUST_SET | */ USB_DEVICE_ATTR, 121 .conf.bmAttributes = /* USB_CONFIG_ATTR_MUST_SET | */ USB_DEVICE_ATTR,
122 .conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER), 122 .conf.bMaxPower = USB_CONFIG_MAX_POWER(USB_DEVICE_POWER),
123 .hid_kbd = UDI_HID_KBD_DESC, 123 .hid_kbd = UDI_HID_KBD_DESC,
124#ifdef RAW_ENABLE 124#ifdef RAW_ENABLE
125 .hid_raw = UDI_HID_RAW_DESC, 125 .hid_raw = UDI_HID_RAW_DESC,
126#endif 126#endif
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index 096e6e676..9745d147c 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -194,107 +194,107 @@ typedef struct {
194 194
195#if STM32_USB_USE_OTG1 195#if STM32_USB_USE_OTG1
196/* Reusable initialization structure - see USBEndpointConfig comment at top of file */ 196/* Reusable initialization structure - see USBEndpointConfig comment at top of file */
197#define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \ 197# define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \
198 { \ 198 { \
199 .queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \ 199 .queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \
200 .inout_ep_config = \ 200 .inout_ep_config = \
201 { \ 201 { \
202 stream##_IN_MODE, /* Interrupt EP */ \ 202 stream##_IN_MODE, /* Interrupt EP */ \
203 NULL, /* SETUP packet notification callback */ \ 203 NULL, /* SETUP packet notification callback */ \
204 qmkusbDataTransmitted, /* IN notification callback */ \ 204 qmkusbDataTransmitted, /* IN notification callback */ \
205 qmkusbDataReceived, /* OUT notification callback */ \ 205 qmkusbDataReceived, /* OUT notification callback */ \
206 stream##_EPSIZE, /* IN maximum packet size */ \ 206 stream##_EPSIZE, /* IN maximum packet size */ \
207 stream##_EPSIZE, /* OUT maximum packet size */ \ 207 stream##_EPSIZE, /* OUT maximum packet size */ \
208 NULL, /* IN Endpoint state */ \ 208 NULL, /* IN Endpoint state */ \
209 NULL, /* OUT endpoint state */ \ 209 NULL, /* OUT endpoint state */ \
210 2, /* IN multiplier */ \ 210 2, /* IN multiplier */ \
211 NULL /* SETUP buffer (not a SETUP endpoint) */ \ 211 NULL /* SETUP buffer (not a SETUP endpoint) */ \
212 }, \ 212 }, \
213 .int_ep_config = \ 213 .int_ep_config = \
214 { \ 214 { \
215 USB_EP_MODE_TYPE_INTR, /* Interrupt EP */ \ 215 USB_EP_MODE_TYPE_INTR, /* Interrupt EP */ \
216 NULL, /* SETUP packet notification callback */ \ 216 NULL, /* SETUP packet notification callback */ \
217 qmkusbInterruptTransmitted, /* IN notification callback */ \ 217 qmkusbInterruptTransmitted, /* IN notification callback */ \
218 NULL, /* OUT notification callback */ \ 218 NULL, /* OUT notification callback */ \
219 CDC_NOTIFICATION_EPSIZE, /* IN maximum packet size */ \ 219 CDC_NOTIFICATION_EPSIZE, /* IN maximum packet size */ \
220 0, /* OUT maximum packet size */ \ 220 0, /* OUT maximum packet size */ \
221 NULL, /* IN Endpoint state */ \ 221 NULL, /* IN Endpoint state */ \
222 NULL, /* OUT endpoint state */ \ 222 NULL, /* OUT endpoint state */ \
223 2, /* IN multiplier */ \ 223 2, /* IN multiplier */ \
224 NULL, /* SETUP buffer (not a SETUP endpoint) */ \ 224 NULL, /* SETUP buffer (not a SETUP endpoint) */ \
225 }, \ 225 }, \
226 .config = { \ 226 .config = { \
227 .usbp = &USB_DRIVER, \ 227 .usbp = &USB_DRIVER, \
228 .bulk_in = stream##_IN_EPNUM, \ 228 .bulk_in = stream##_IN_EPNUM, \
229 .bulk_out = stream##_OUT_EPNUM, \ 229 .bulk_out = stream##_OUT_EPNUM, \
230 .int_in = notification, \ 230 .int_in = notification, \
231 .in_buffers = stream##_IN_CAPACITY, \ 231 .in_buffers = stream##_IN_CAPACITY, \
232 .out_buffers = stream##_OUT_CAPACITY, \ 232 .out_buffers = stream##_OUT_CAPACITY, \
233 .in_size = stream##_EPSIZE, \ 233 .in_size = stream##_EPSIZE, \
234 .out_size = stream##_EPSIZE, \ 234 .out_size = stream##_EPSIZE, \
235 .fixed_size = fixedsize, \ 235 .fixed_size = fixedsize, \
236 .ib = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){}, \ 236 .ib = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){}, \
237 .ob = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \ 237 .ob = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \
238 } \ 238 } \
239 } 239 }
240#else 240#else
241/* Reusable initialization structure - see USBEndpointConfig comment at top of file */ 241/* Reusable initialization structure - see USBEndpointConfig comment at top of file */
242#define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \ 242# define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \
243 { \ 243 { \
244 .queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \ 244 .queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \
245 .in_ep_config = \ 245 .in_ep_config = \
246 { \ 246 { \
247 stream##_IN_MODE, /* Interrupt EP */ \ 247 stream##_IN_MODE, /* Interrupt EP */ \
248 NULL, /* SETUP packet notification callback */ \ 248 NULL, /* SETUP packet notification callback */ \
249 qmkusbDataTransmitted, /* IN notification callback */ \ 249 qmkusbDataTransmitted, /* IN notification callback */ \
250 NULL, /* OUT notification callback */ \ 250 NULL, /* OUT notification callback */ \
251 stream##_EPSIZE, /* IN maximum packet size */ \ 251 stream##_EPSIZE, /* IN maximum packet size */ \
252 0, /* OUT maximum packet size */ \ 252 0, /* OUT maximum packet size */ \
253 NULL, /* IN Endpoint state */ \ 253 NULL, /* IN Endpoint state */ \
254 NULL, /* OUT endpoint state */ \ 254 NULL, /* OUT endpoint state */ \
255 2, /* IN multiplier */ \ 255 2, /* IN multiplier */ \
256 NULL /* SETUP buffer (not a SETUP endpoint) */ \ 256 NULL /* SETUP buffer (not a SETUP endpoint) */ \
257 }, \ 257 }, \
258 .out_ep_config = \ 258 .out_ep_config = \
259 { \ 259 { \
260 stream##_OUT_MODE, /* Interrupt EP */ \ 260 stream##_OUT_MODE, /* Interrupt EP */ \
261 NULL, /* SETUP packet notification callback */ \ 261 NULL, /* SETUP packet notification callback */ \
262 NULL, /* IN notification callback */ \ 262 NULL, /* IN notification callback */ \
263 qmkusbDataReceived, /* OUT notification callback */ \ 263 qmkusbDataReceived, /* OUT notification callback */ \
264 0, /* IN maximum packet size */ \ 264 0, /* IN maximum packet size */ \
265 stream##_EPSIZE, /* OUT maximum packet size */ \ 265 stream##_EPSIZE, /* OUT maximum packet size */ \
266 NULL, /* IN Endpoint state */ \ 266 NULL, /* IN Endpoint state */ \
267 NULL, /* OUT endpoint state */ \ 267 NULL, /* OUT endpoint state */ \
268 2, /* IN multiplier */ \ 268 2, /* IN multiplier */ \
269 NULL, /* SETUP buffer (not a SETUP endpoint) */ \ 269 NULL, /* SETUP buffer (not a SETUP endpoint) */ \
270 }, \ 270 }, \
271 .int_ep_config = \ 271 .int_ep_config = \
272 { \ 272 { \
273 USB_EP_MODE_TYPE_INTR, /* Interrupt EP */ \ 273 USB_EP_MODE_TYPE_INTR, /* Interrupt EP */ \
274 NULL, /* SETUP packet notification callback */ \ 274 NULL, /* SETUP packet notification callback */ \
275 qmkusbInterruptTransmitted, /* IN notification callback */ \ 275 qmkusbInterruptTransmitted, /* IN notification callback */ \
276 NULL, /* OUT notification callback */ \ 276 NULL, /* OUT notification callback */ \
277 CDC_NOTIFICATION_EPSIZE, /* IN maximum packet size */ \ 277 CDC_NOTIFICATION_EPSIZE, /* IN maximum packet size */ \
278 0, /* OUT maximum packet size */ \ 278 0, /* OUT maximum packet size */ \
279 NULL, /* IN Endpoint state */ \ 279 NULL, /* IN Endpoint state */ \
280 NULL, /* OUT endpoint state */ \ 280 NULL, /* OUT endpoint state */ \
281 2, /* IN multiplier */ \ 281 2, /* IN multiplier */ \
282 NULL, /* SETUP buffer (not a SETUP endpoint) */ \ 282 NULL, /* SETUP buffer (not a SETUP endpoint) */ \
283 }, \ 283 }, \
284 .config = { \ 284 .config = { \
285 .usbp = &USB_DRIVER, \ 285 .usbp = &USB_DRIVER, \
286 .bulk_in = stream##_IN_EPNUM, \ 286 .bulk_in = stream##_IN_EPNUM, \
287 .bulk_out = stream##_OUT_EPNUM, \ 287 .bulk_out = stream##_OUT_EPNUM, \
288 .int_in = notification, \ 288 .int_in = notification, \
289 .in_buffers = stream##_IN_CAPACITY, \ 289 .in_buffers = stream##_IN_CAPACITY, \
290 .out_buffers = stream##_OUT_CAPACITY, \ 290 .out_buffers = stream##_OUT_CAPACITY, \
291 .in_size = stream##_EPSIZE, \ 291 .in_size = stream##_EPSIZE, \
292 .out_size = stream##_EPSIZE, \ 292 .out_size = stream##_EPSIZE, \
293 .fixed_size = fixedsize, \ 293 .fixed_size = fixedsize, \
294 .ib = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){}, \ 294 .ib = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_IN_CAPACITY, stream##_EPSIZE)]){}, \
295 .ob = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \ 295 .ob = (__attribute__((aligned(4))) uint8_t[BQ_BUFFER_SIZE(stream##_OUT_CAPACITY, stream##_EPSIZE)]){}, \
296 } \ 296 } \
297 } 297 }
298#endif 298#endif
299 299
300typedef struct { 300typedef struct {
@@ -388,12 +388,12 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
388 usbInitEndpointI(usbp, SHARED_IN_EPNUM, &shared_ep_config); 388 usbInitEndpointI(usbp, SHARED_IN_EPNUM, &shared_ep_config);
389#endif 389#endif
390 for (int i = 0; i < NUM_USB_DRIVERS; i++) { 390 for (int i = 0; i < NUM_USB_DRIVERS; i++) {
391 #if STM32_USB_USE_OTG1 391#if STM32_USB_USE_OTG1
392 usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].inout_ep_config); 392 usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].inout_ep_config);
393 #else 393#else
394 usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].in_ep_config); 394 usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].in_ep_config);
395 usbInitEndpointI(usbp, drivers.array[i].config.bulk_out, &drivers.array[i].out_ep_config); 395 usbInitEndpointI(usbp, drivers.array[i].config.bulk_out, &drivers.array[i].out_ep_config);
396 #endif 396#endif
397 if (drivers.array[i].config.int_in) { 397 if (drivers.array[i].config.int_in) {
398 usbInitEndpointI(usbp, drivers.array[i].config.int_in, &drivers.array[i].int_ep_config); 398 usbInitEndpointI(usbp, drivers.array[i].config.int_in, &drivers.array[i].int_ep_config);
399 } 399 }
@@ -544,7 +544,7 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
544#ifdef NKRO_ENABLE 544#ifdef NKRO_ENABLE
545 keymap_config.nkro = !!keyboard_protocol; 545 keymap_config.nkro = !!keyboard_protocol;
546 if (!keymap_config.nkro && keyboard_idle) { 546 if (!keymap_config.nkro && keyboard_idle) {
547#else /* NKRO_ENABLE */ 547#else /* NKRO_ENABLE */
548 if (keyboard_idle) { 548 if (keyboard_idle) {
549#endif /* NKRO_ENABLE */ 549#endif /* NKRO_ENABLE */
550 /* arm the idle timer if boot protocol & idle */ 550 /* arm the idle timer if boot protocol & idle */
@@ -562,7 +562,7 @@ static bool usb_request_hook_cb(USBDriver *usbp) {
562 /* arm the timer */ 562 /* arm the timer */
563#ifdef NKRO_ENABLE 563#ifdef NKRO_ENABLE
564 if (!keymap_config.nkro && keyboard_idle) { 564 if (!keymap_config.nkro && keyboard_idle) {
565#else /* NKRO_ENABLE */ 565#else /* NKRO_ENABLE */
566 if (keyboard_idle) { 566 if (keyboard_idle) {
567#endif /* NKRO_ENABLE */ 567#endif /* NKRO_ENABLE */
568 osalSysLockFromISR(); 568 osalSysLockFromISR();
@@ -618,21 +618,21 @@ static const USBConfig usbcfg = {
618 */ 618 */
619void init_usb_driver(USBDriver *usbp) { 619void init_usb_driver(USBDriver *usbp) {
620 for (int i = 0; i < NUM_USB_DRIVERS; i++) { 620 for (int i = 0; i < NUM_USB_DRIVERS; i++) {
621 #if STM32_USB_USE_OTG1 621#if STM32_USB_USE_OTG1
622 QMKUSBDriver *driver = &drivers.array[i].driver; 622 QMKUSBDriver *driver = &drivers.array[i].driver;
623 drivers.array[i].inout_ep_config.in_state = &drivers.array[i].in_ep_state; 623 drivers.array[i].inout_ep_config.in_state = &drivers.array[i].in_ep_state;
624 drivers.array[i].inout_ep_config.out_state = &drivers.array[i].out_ep_state; 624 drivers.array[i].inout_ep_config.out_state = &drivers.array[i].out_ep_state;
625 drivers.array[i].int_ep_config.in_state = &drivers.array[i].int_ep_state; 625 drivers.array[i].int_ep_config.in_state = &drivers.array[i].int_ep_state;
626 qmkusbObjectInit(driver, &drivers.array[i].config); 626 qmkusbObjectInit(driver, &drivers.array[i].config);
627 qmkusbStart(driver, &drivers.array[i].config); 627 qmkusbStart(driver, &drivers.array[i].config);
628 #else 628#else
629 QMKUSBDriver *driver = &drivers.array[i].driver; 629 QMKUSBDriver *driver = &drivers.array[i].driver;
630 drivers.array[i].in_ep_config.in_state = &drivers.array[i].in_ep_state; 630 drivers.array[i].in_ep_config.in_state = &drivers.array[i].in_ep_state;
631 drivers.array[i].out_ep_config.out_state = &drivers.array[i].out_ep_state; 631 drivers.array[i].out_ep_config.out_state = &drivers.array[i].out_ep_state;
632 drivers.array[i].int_ep_config.in_state = &drivers.array[i].int_ep_state; 632 drivers.array[i].int_ep_config.in_state = &drivers.array[i].int_ep_state;
633 qmkusbObjectInit(driver, &drivers.array[i].config); 633 qmkusbObjectInit(driver, &drivers.array[i].config);
634 qmkusbStart(driver, &drivers.array[i].config); 634 qmkusbStart(driver, &drivers.array[i].config);
635 #endif 635#endif
636 } 636 }
637 637
638 /* 638 /*
@@ -689,7 +689,7 @@ static void keyboard_idle_timer_cb(void *arg) {
689 689
690#ifdef NKRO_ENABLE 690#ifdef NKRO_ENABLE
691 if (!keymap_config.nkro && keyboard_idle && keyboard_protocol) { 691 if (!keymap_config.nkro && keyboard_idle && keyboard_protocol) {
692#else /* NKRO_ENABLE */ 692#else /* NKRO_ENABLE */
693 if (keyboard_idle && keyboard_protocol) { 693 if (keyboard_idle && keyboard_protocol) {
694#endif /* NKRO_ENABLE */ 694#endif /* NKRO_ENABLE */
695 /* TODO: are we sure we want the KBD_ENDPOINT? */ 695 /* TODO: are we sure we want the KBD_ENDPOINT? */
@@ -738,7 +738,7 @@ void send_keyboard(report_keyboard_t *report) {
738 usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)report, sizeof(struct nkro_report)); 738 usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)report, sizeof(struct nkro_report));
739 } else 739 } else
740#endif /* NKRO_ENABLE */ 740#endif /* NKRO_ENABLE */
741 { /* regular protocol */ 741 { /* regular protocol */
742 /* need to wait until the previous packet has made it through */ 742 /* need to wait until the previous packet has made it through */
743 /* busy wait, should be short and not very common */ 743 /* busy wait, should be short and not very common */
744 if (usbGetTransmitStatusI(&USB_DRIVER, KEYBOARD_IN_EPNUM)) { 744 if (usbGetTransmitStatusI(&USB_DRIVER, KEYBOARD_IN_EPNUM)) {
@@ -805,7 +805,7 @@ void send_mouse(report_mouse_t *report) {
805 osalSysUnlock(); 805 osalSysUnlock();
806} 806}
807 807
808#else /* MOUSE_ENABLE */ 808#else /* MOUSE_ENABLE */
809void send_mouse(report_mouse_t *report) { (void)report; } 809void send_mouse(report_mouse_t *report) { (void)report; }
810#endif /* MOUSE_ENABLE */ 810#endif /* MOUSE_ENABLE */
811 811
@@ -885,7 +885,7 @@ void console_task(void) {
885 } while (size > 0); 885 } while (size > 0);
886} 886}
887 887
888#else /* CONSOLE_ENABLE */ 888#else /* CONSOLE_ENABLE */
889int8_t sendchar(uint8_t c) { 889int8_t sendchar(uint8_t c) {
890 (void)c; 890 (void)c;
891 return 0; 891 return 0;
diff --git a/tmk_core/protocol/usb_descriptor.h b/tmk_core/protocol/usb_descriptor.h
index 1b43cbf3b..3a7c0bdba 100644
--- a/tmk_core/protocol/usb_descriptor.h
+++ b/tmk_core/protocol/usb_descriptor.h
@@ -204,12 +204,12 @@ enum usb_endpoints {
204#endif 204#endif
205 205
206#ifdef RAW_ENABLE 206#ifdef RAW_ENABLE
207 RAW_IN_EPNUM = NEXT_EPNUM, 207 RAW_IN_EPNUM = NEXT_EPNUM,
208 #if STM32_USB_USE_OTG1 208# if STM32_USB_USE_OTG1
209 #define RAW_OUT_EPNUM RAW_IN_EPNUM 209# define RAW_OUT_EPNUM RAW_IN_EPNUM
210 #else 210# else
211 RAW_OUT_EPNUM = NEXT_EPNUM, 211 RAW_OUT_EPNUM = NEXT_EPNUM,
212 #endif 212# endif
213#endif 213#endif
214 214
215#ifdef SHARED_EP_ENABLE 215#ifdef SHARED_EP_ENABLE
@@ -220,44 +220,44 @@ enum usb_endpoints {
220 CONSOLE_IN_EPNUM = NEXT_EPNUM, 220 CONSOLE_IN_EPNUM = NEXT_EPNUM,
221 221
222# ifdef PROTOCOL_CHIBIOS 222# ifdef PROTOCOL_CHIBIOS
223 // ChibiOS has enough memory and descriptor to actually enable the endpoint 223// ChibiOS has enough memory and descriptor to actually enable the endpoint
224 // It could use the same endpoint numbers, as that's supported by ChibiOS 224// It could use the same endpoint numbers, as that's supported by ChibiOS
225 // But the QMK code currently assumes that the endpoint numbers are different 225// But the QMK code currently assumes that the endpoint numbers are different
226 #if STM32_USB_USE_OTG1 226# if STM32_USB_USE_OTG1
227 #define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM 227# define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
228 #else 228# else
229 CONSOLE_OUT_EPNUM = NEXT_EPNUM, 229 CONSOLE_OUT_EPNUM = NEXT_EPNUM,
230 #endif 230# endif
231# else 231# else
232# define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM 232# define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
233# endif 233# endif
234#endif 234#endif
235 235
236#ifdef MIDI_ENABLE 236#ifdef MIDI_ENABLE
237 MIDI_STREAM_IN_EPNUM = NEXT_EPNUM, 237 MIDI_STREAM_IN_EPNUM = NEXT_EPNUM,
238 #if STM32_USB_USE_OTG1 238# if STM32_USB_USE_OTG1
239 #define MIDI_STREAM_OUT_EPNUM MIDI_STREAM_IN_EPNUM 239# define MIDI_STREAM_OUT_EPNUM MIDI_STREAM_IN_EPNUM
240 #else 240# else
241 MIDI_STREAM_OUT_EPNUM = NEXT_EPNUM, 241 MIDI_STREAM_OUT_EPNUM = NEXT_EPNUM,
242 #endif 242# endif
243#endif 243#endif
244 244
245#ifdef VIRTSER_ENABLE 245#ifdef VIRTSER_ENABLE
246 CDC_NOTIFICATION_EPNUM = NEXT_EPNUM, 246 CDC_NOTIFICATION_EPNUM = NEXT_EPNUM,
247 CDC_IN_EPNUM = NEXT_EPNUM, 247 CDC_IN_EPNUM = NEXT_EPNUM,
248 #if STM32_USB_USE_OTG1 248# if STM32_USB_USE_OTG1
249 #define CDC_OUT_EPNUM CDC_IN_EPNUM 249# define CDC_OUT_EPNUM CDC_IN_EPNUM
250 #else 250# else
251 CDC_OUT_EPNUM = NEXT_EPNUM, 251 CDC_OUT_EPNUM = NEXT_EPNUM,
252 #endif 252# endif
253#endif 253#endif
254#ifdef JOYSTICK_ENABLE 254#ifdef JOYSTICK_ENABLE
255 JOYSTICK_IN_EPNUM = NEXT_EPNUM, 255 JOYSTICK_IN_EPNUM = NEXT_EPNUM,
256 #if STM32_USB_USE_OTG1 256# if STM32_USB_USE_OTG1
257 JOYSTICK_OUT_EPNUM = JOYSTICK_IN_EPNUM, 257 JOYSTICK_OUT_EPNUM = JOYSTICK_IN_EPNUM,
258 #else 258# else
259 JOYSTICK_OUT_EPNUM = NEXT_EPNUM, 259 JOYSTICK_OUT_EPNUM = NEXT_EPNUM,
260 #endif 260# endif
261#endif 261#endif
262}; 262};
263 263
diff --git a/util/pro_micro_ISP_B6_10.hex b/util/pro_micro_ISP_B6_10.hex
index cf61bebb9..34ccbd2ae 100644
--- a/util/pro_micro_ISP_B6_10.hex
+++ b/util/pro_micro_ISP_B6_10.hex
@@ -1,362 +1,362 @@
1:10000000BDC00000E3C00000E1C00000DFC0000090 1:10000000BDC00000E3C00000E1C00000DFC0000090
2:10001000DDC00000DBC00000D9C00000D7C0000078 2:10001000DDC00000DBC00000D9C00000D7C0000078
3:10002000D5C00000D3C000003AC70000B1C700002F 3:10002000D5C00000D3C000003AC70000B1C700002F
4:10003000CDC00000CBC00000C9C00000C7C0000098 4:10003000CDC00000CBC00000C9C00000C7C0000098
5:10004000C5C00000C3C00000C1C00000BFC00000A8 5:10004000C5C00000C3C00000C1C00000BFC00000A8
6:10005000BDC00000BBC00000B9C000007FC60000EA 6:10005000BDC00000BBC00000B9C000007FC60000EA
7:10006000B5C00000B3C00000B1C00000AFC00000C8 7:10006000B5C00000B3C00000B1C00000AFC00000C8
8:10007000ADC00000ABC00000A9C00000A7C00000D8 8:10007000ADC00000ABC00000A9C00000A7C00000D8
9:10008000A5C00000A3C00000A1C000009FC00000E8 9:10008000A5C00000A3C00000A1C000009FC00000E8
10:100090009DC000009BC0000099C0000097C00000F8 10:100090009DC000009BC0000099C0000097C00000F8
11:1000A00095C0000093C0000091C000000001000056 11:1000A00095C0000093C0000091C000000001000056
12:1000B0005D0112000200001A014300030000160156 12:1000B0005D0112000200001A014300030000160156
13:1000C0000401030904FC001802030904E4001603F8 13:1000C0000401030904FC001802030904E4001603F8
14:1000D000030904D6000C0C03310032003300340055 14:1000D000030904D6000C0C03310032003300340055
15:1000E0003500000016035500530042002000530065 15:1000E0003500000016035500530042002000530065
16:1000F00065007200690061006C0000001803540084 16:1000F00065007200690061006C0000001803540084
17:10010000650065006E007300790064007500690089 17:10010000650065006E007300790064007500690089
18:100110006E006F000000040309040902430002019D 18:100110006E006F000000040309040902430002019D
19:1001200000C0320904000001020201000524001091 19:1001200000C0320904000001020201000524001091
20:10013000010524010001042402060524060001072C 20:10013000010524010001042402060524060001072C
21:1001400005820308004009040100020A00000007BC 21:1001400005820308004009040100020A00000007BC
22:100150000503024000000705840240000012010070 22:100150000503024000000705840240000012010070
23:100160000202000020C01683040001010203010006 23:100160000202000020C01683040001010203010006
24:1001700001C10201803601813600110B11241FBE1E 24:1001700001C10201803601813600110B11241FBE1E
25:10018000CFEFDAE0DEBFCDBF11E0A0E0B1E0EAE5FD 25:10018000CFEFDAE0DEBFCDBF11E0A0E0B1E0EAE5FD
26:10019000F6E102C005900D92A232B107D9F722E034 26:10019000F6E102C005900D92A232B107D9F722E034
27:1001A000A2E2B1E001C01D92A935B207E1F710E06B 27:1001A000A2E2B1E001C01D92A935B207E1F710E06B
28:1001B000CEEBD0E004C02197FE010E94250BCD3B81 28:1001B000CEEBD0E004C02197FE010E94250BCD3B81
29:1001C000D107C9F70E942D090C942B0B19CFDC0124 29:1001C000D107C9F70E942D090C942B0B19CFDC0124
30:1001D000ED91FC910190F081E02D09948EBD00001D 30:1001D000ED91FC910190F081E02D09948EBD00001D
31:1001E0000DB407FEFDCF8EB508950F931F930FB684 31:1001E0000DB407FEFDCF8EB508950F931F930FB684
32:1001F000F8948091440290914502A0914602B091FA 32:1001F000F8948091440290914502A0914602B091FA
33:1002000047020FBE409122015091230160912401C9 33:1002000047020FBE409122015091230160912401C9
34:10021000709125018C019D01041B150B260B370BDA 34:10021000709125018C019D01041B150B260B370BDA
35:100220000832110521053105F0F0809322019093E9 35:100220000832110521053105F0F0809322019093E9
36:100230002301A0932401B09325012091010180EEB8 36:100230002301A0932401B09325012091010180EEB8
37:10024000820F813A28F090910001919590930001DE 37:10024000820F813A28F090910001919590930001DE
38:1002500080910001820F80930101529A803810F43E 38:1002500080910001820F80930101529A803810F43E
39:100260005A9801C05A9A1F910F91089590912601B2 39:100260005A9801C05A9A1F910F91089590912601B2
40:10027000882319F0911103C004C0911102C02E9A75 40:10027000882319F0911103C004C0911102C02E9A75
41:1002800001C02E98809180008F7D8093800008951A 41:1002800001C02E98809180008F7D8093800008951A
42:100290000F931F93CF93DF938B01EC01DD27FE01BA 42:100290000F931F93CF93DF938B01EC01DD27FE01BA
43:1002A0009ED46EE170E080E090E098D5FE019DD490 43:1002A0009ED46EE170E080E090E098D5FE019DD490
44:1002B0006EE170E080E090E091D50150110978F78F 44:1002B0006EE170E080E090E091D50150110978F78F
45:1002C000DF91CF911F910F91089540E05BE460E0D2 45:1002C000DF91CF911F910F91089540E05BE460E0D2
46:1002D00070E08FE492E00E94AA0A509A62E070E017 46:1002D00070E08FE492E00E94AA0A509A62E070E017
47:1002E00085E090E0D5DF519A62E070E086E090E032 47:1002E00085E090E0D5DF519A62E070E086E090E032
48:1002F000CFDF529A62E070E087E090E0C9CF8823B8 48:1002F000CFDF529A62E070E087E090E0C9CF8823B8
49:1003000011F0589A01C0589884B58F7D84BD089526 49:1003000011F0589A01C0589884B58F7D84BD089526
50:10031000CF93DF9300D01F92CDB7DEB72B834A83F4 50:10031000CF93DF9300D01F92CDB7DEB72B834A83F4
51:1003200069835CDF6981862F59DF4A81842F56DF1C 51:1003200069835CDF6981862F59DF4A81842F56DF1C
52:100330002B81822F0F900F900F90DF91CF914ECF96 52:100330002B81822F0F900F900F90DF91CF914ECF96
53:1003400020913A012093270180913B01809328015D 53:1003400020913A012093270180913B01809328015D
54:1003500080913C018093290180913D0180932A0185 54:1003500080913C018093290180913D0180932A0185
55:1003600080913E0180932B0180913F0180932C016D 55:1003600080913E0180932B0180913F0180932C016D
56:100370008091400180932D018091410180932E0155 56:100370008091400180932D018091410180932E0155
57:100380008091420180932F018091440190E0982F49 57:100380008091420180932F018091440190E0982F49
58:10039000882730914501830F911D909331018093FF 58:10039000882730914501830F911D909331018093FF
59:1003A00030018091460190E0982F882730914701D5 59:1003A00030018091460190E0982F882730914701D5
60:1003B000830F911D90933301809332018091480106 60:1003B000830F911D90933301809332018091480106
61:1003C00090E0982F882730914901830F911D9093D9 61:1003C00090E0982F882730914901830F911D9093D9
62:1003D00035018093340180914A0190E0A0E0B0E0C3 62:1003D00035018093340180914A0190E0A0E0B0E0C3
63:1003E000BA2FA92F982F882730914B01830F911D89 63:1003E000BA2FA92F982F882730914B01830F911D89
64:1003F000A11DB11DDC019927882740914C0150E0D7 64:1003F000A11DB11DDC019927882740914C0150E0D7
65:10040000542F4427052E000C660B770B840F951F85 65:10040000542F4427052E000C660B770B840F951F85
66:10041000A61FB71F30914D01830F911DA11DB11D66 66:10041000A61FB71F30914D01830F911DA11DB11D66
67:100420008093360190933701A0933801B09339013E 67:100420008093360190933701A0933801B09339013E
68:1004300081E0203E08F480E080932601089581E069 68:1004300081E0203E08F480E080932601089581E069
69:1004400015DF269A6DD380914202882381F0813096 69:1004400015DF269A6DD380914202882381F0813096
70:1004500051F48DB3809340029DB380914102809509 70:1004500051F48DB3809340029DB380914102809509
71:1004600089238DBB04C08FB7F8948093400283E545 71:1004600089238DBB04C08FB7F8948093400283E545
72:100470008CBD1DBC299864E170E080E090E0AED4B2 72:100470008CBD1DBC299864E170E080E090E0AED4B2
73:1004800080E0F4DE80E991E00197F1F781E0EEDEB3 73:1004800080E0F4DE80E991E00197F1F781E0EEDEB3
74:1004900062E370E080E090E0A1D420E040E063E51A 74:1004900062E370E080E090E0A1D420E040E063E51A
75:1004A0008CEA36DF81E090E090933D0280933C023D 75:1004A0008CEA36DF81E090E090933D0280933C023D
76:1004B000089541D322982A982198299880E0D6DE81 76:1004B000089541D322982A982198299880E0D6DE81
77:1004C00026982E98EDE7F0E080818F7D8083109252 77:1004C00026982E98EDE7F0E080818F7D8083109252
78:1004D0003D0210923C020895242F880F880F880F48 78:1004D0003D0210923C020895242F880F880F880F48
79:1004E000462F672F805C14CFCF93DF9300D0CDB71A 79:1004E000462F672F805C14CFCF93DF9300D0CDB71A
80:1004F000DEB7482F692F80E090E049836A83FFDEF2 80:1004F000DEB7482F692F80E090E049836A83FFDEF2
81:1005000020E049816A818CE403DF6EE170E080E0E5 81:1005000020E049816A818CE403DF6EE170E080E0E5
82:1005100090E064D481E090E00F900F90DF91CF9154 82:1005100090E064D481E090E00F900F90DF91CF9154
83:10052000EECE209132013091330180913A029091C8 83:10052000EECE209132013091330180913A029091C8
84:100530003B022032310511F4807F089520343105CB 84:100530003B022032310511F4807F089520343105CB
85:1005400011F4807E08952038310511F4807C0895DF 85:1005400011F4807E08952038310511F4807C0895DF
86:100550002115314009F480780895CF92DF92EF920F 86:100550002115314009F480780895CF92DF92EF920F
87:10056000FF920F931F93CF93DF936C01DADF8C011F 87:10056000FF920F931F93CF93DF936C01DADF8C011F
88:10057000C0E0D0E0CC15DD0554F5D3DF7C010817D1 88:10057000C0E0D0E0CC15DD0554F5D3DF7C010817D1
89:10058000190721F0C801B0DFCCDF7C01FE01E65C79 89:10058000190721F0C801B0DFCCDF7C01FE01E65C79
90:10059000FE4F60913A0270913B02408180E09CDF07 90:10059000FE4F60913A0270913B02408180E09CDF07
91:1005A0002296FE01E75CFE4F60913A0270913B0299 91:1005A0002296FE01E75CFE4F60913A0270913B0299
92:1005B000408181E091DF20913A0230913B022F5F30 92:1005B000408181E091DF20913A0230913B022F5F30
93:1005C0003F4F30933B0220933A028701D3CFC801BB 93:1005C0003F4F30933B0220933A028701D3CFC801BB
94:1005D0008BDF80E1DF91CF911F910F91FF90EF9022 94:1005D0008BDF80E1DF91CF911F910F91FF90EF9022
95:1005E000DF90CF900895462F880F880F880F20E066 95:1005E000DF90CF900895462F880F880F880F20E066
96:1005F000672F805E8DCE0F931F93CF93DF938C0177 96:1005F000672F805E8DCE0F931F93CF93DF938C0177
97:10060000C0E0D0E0C017D10704F560913A027091C4 97:10060000C0E0D0E0C017D10704F560913A027091C4
98:100610003B0280E0E8DF682F8FE492E0D8DD609154 98:100610003B0280E0E8DF682F8FE492E0D8DD609154
99:100620003A0270913B0281E0DEDF682F8FE492E0B6 99:100620003A0270913B0281E0DEDF682F8FE492E0B6
100:10063000CEDD20913A0230913B022F5F3F4F309345 100:10063000CEDD20913A0230913B022F5F3F4F309345
101:100640003B0220933A022296DDCF80E1DF91CF91E9 101:100640003B0220933A022296DDCF80E1DF91CF91E9
102:100650001F910F910895EF92FF920F931F93CF93E5 102:100650001F910F910895EF92FF920F931F93CF93E5
103:10066000DF937C0100913A0210913B02000F111FB1 103:10066000DF937C0100913A0210913B02000F111FB1
104:10067000E801CE01801B910B8E159F055CF42FEFD6 104:10067000E801CE01801B910B8E159F055CF42FEFD6
105:100680004C2F6D2F80EA44DE682F8FE492E09FDDCF 105:100680004C2F6D2F80EA44DE682F8FE492E09FDDCF
106:100690002196EFCF80E1DF91CF911F910F91FF90D5 106:100690002196EFCF80E1DF91CF911F910F91FF90D5
107:1006A000EF9008958FE492E0F2D5892BD9F38FE48F 107:1006A000EF9008958FE492E0F2D5892BD9F38FE48F
108:1006B00092E026C608950F931F93CF93DF938C018A 108:1006B00092E026C608950F931F93CF93DF938C018A
109:1006C000CAE3D1E0CE018A539140801791071CF410 109:1006C000CAE3D1E0CE018A539140801791071CF410
110:1006D000E9DF8993F7CFDF91CF911F910F910895B3 110:1006D000E9DF8993F7CFDF91CF911F910F910895B3
111:1006E000EF92FF920F931F93CF93DF93EC018B0157 111:1006E000EF92FF920F931F93CF93DF93EC018B0157
112:1006F000CB01E1DF80E090E002DE8AE3E82E81E0DA 112:1006F000CB01E1DF80E090E002DE8AE3E82E81E0DA
113:10070000F82E0C0F1D1FC017D10771F0F7012191B2 113:10070000F82E0C0F1D1FC017D10771F0F7012191B2
114:100710007F014C2F6D2F80ECFBDD6DE270E080E0FF 114:100710007F014C2F6D2F80ECFBDD6DE270E080E0FF
115:1007200090E05CD32196EFCF81E090E0E8DD80E1BE 115:1007200090E05CD32196EFCF81E090E0E8DD80E1BE
116:10073000DF91CF911F910F91FF90EF9008950F934C 116:10073000DF91CF911F910F91FF90EF9008950F934C
117:100740001F93CF93DF938C01C0913A02D0913B026B 117:100740001F93CF93DF938C01C0913A02D0913B026B
118:1007500080913401909135018017910718F0CC0FEA 118:1007500080913401909135018017910718F0CC0FEA
119:10076000DD1F0BC080913E0290913F020196909355 119:10076000DD1F0BC080913E0290913F020196909355
120:100770003F0280933E0281E10FC00132110540F03B 120:100770003F0280933E0281E10FC00132110540F03B
121:1007800060E270E0CE01ACDFA09600521109F5CF17 121:1007800060E270E0CE01ACDFA09600521109F5CF17
122:10079000B801CE01A5DF80E1DF91CF911F910F91CC 122:10079000B801CE01A5DF80E1DF91CF911F910F91CC
123:1007A000089580DF803231F464E18FE492E00FDD60 123:1007A000089580DF803231F464E18FE492E00FDD60
124:1007B00060E10AC080913E0290913F0201969093C1 124:1007B00060E10AC080913E0290913F0201969093C1
125:1007C0003F0280933E0265E18FE492E000CDCF933B 125:1007C0003F0280933E0265E18FE492E000CDCF933B
126:1007D000C82F68DF803251F464E18FE492E0F7DCE7 126:1007D000C82F68DF803251F464E18FE492E0F7DCE7
127:1007E0006C2F8FE492E0F3DC60E10AC080913E025E 127:1007E0006C2F8FE492E0F3DC60E10AC080913E025E
128:1007F00090913F02019690933F0280933E0265E103 128:1007F00090913F02019690933F0280933E0265E103
129:100800008FE492E0CF91E3CC813859F020F4803826 129:100800008FE492E0CF91E3CC813859F020F4803826
130:1008100061F482E00BC0823831F0833931F483E532 130:1008100061F482E00BC0823831F0833931F483E532
131:1008200005C081E003C082E101C080E0D0CF84E058 131:1008200005C081E003C082E101C080E0D0CF84E058
132:1008300090E041DFEAE3F1E0238142816181808140 132:1008300090E041DFEAE3F1E0238142816181808140
133:1008400067DDC5CFCF93DF93EC0135DF2BDF80323F 133:1008400067DDC5CFCF93DF93EC0135DF2BDF80323F
134:1008500041F464E18FE492E0BADCCE017EDE682FE1 134:1008500041F464E18FE492E0BADCCE017EDE682FE1
135:100860000AC080913E0290913F02019690933F0210 135:100860000AC080913E0290913F02019690933F0210
136:1008700080933E0265E18FE492E0DF91CF91A7CCB7 136:1008700080933E0265E18FE492E0DF91CF91A7CCB7
137:10088000CF93DF930FDFC82FD0E0DC2FCC270ADF18 137:10088000CF93DF930FDFC82FD0E0DC2FCC270ADF18
138:10089000C80FD11D07DF863421F4CE01DF91CF913F 138:10089000C80FD11D07DF863421F4CE01DF91CF913F
139:1008A000D1CF8534B9F4CE014ADFC82FFBDE8032C8 139:1008A000D1CF8534B9F4CE014ADFC82FFBDE8032C8
140:1008B00031F464E18FE492E08ADC6C2F0CC080910B 140:1008B00031F464E18FE492E08ADC6C2F0CC080910B
141:1008C0003E0290913F02019690933F0280933E0238 141:1008C0003E0290913F02019690933F0280933E0238
142:1008D00065E101C061E18FE492E0DF91CF9177CCD7 142:1008D00065E101C061E18FE492E0DF91CF9177CCD7
143:1008E0000F931F93CF93DF93DDDEC82FDBDE082F3E 143:1008E0000F931F93CF93DF93DDDEC82FDBDE082F3E
144:1008F000D9DE182FD7DE803259F080913E029091D8 144:1008F000D9DE182FD7DE803259F080913E029091D8
145:100900003F02019690933F0280933E0265E115C03D 145:100900003F02019690933F0280933E0265E115C03D
146:10091000D0E0DC2FCC27C00FD11D64E18FE492E042 146:10091000D0E0DC2FCC27C00FD11D64E18FE492E042
147:1009200056DC163419F4CE0166DE06C0153419F40F 147:1009200056DC163419F4CE0166DE06C0153419F40F
148:10093000CE0191DE01C081E1682F8FE492E0DF916A 148:10093000CE0191DE01C081E1682F8FE492E0DF916A
149:10094000CF911F910F9143CCADDE803259F0809151 149:10094000CF911F910F9143CCADDE803259F0809151
150:100950003E0290913F02019690933F0280933E02A7 150:100950003E0290913F02019690933F0280933E02A7
151:1009600065E120C064E18FE492E031DC20E040E00A 151:1009600065E120C064E18FE492E031DC20E040E00A
152:1009700060E080E3CDDC682F8FE492E028DC20E0AB 152:1009700060E080E3CDDC682F8FE492E028DC20E0AB
153:1009800041E060E080E3C4DC682F8FE492E01FDC8C 153:1009800041E060E080E3C4DC682F8FE492E01FDC8C
154:1009900020E042E060E080E3BBDC682F8FE492E07F 154:1009900020E042E060E080E3BBDC682F8FE492E07F
155:1009A00016DC60E18FE492E012CC7CDE813509F444 155:1009A00016DC60E18FE492E012CC7CDE813509F444
156:1009B00077C0E0F4813409F460C050F4803309F466 156:1009B00077C0E0F4813409F460C050F4803309F466
157:1009C00040C0813309F442C0803209F07AC06FC060 157:1009C00040C0813309F442C0803209F07AC06FC060
158:1009D000853409F454C0803509F455C0823409F0D7 158:1009D000853409F454C0803509F455C0823409F0D7
159:1009E00070C084E190E067DEABDC4CC0813609F476 159:1009E00070C084E190E067DEABDC4CC0813609F476
160:1009F00053C0F0F4863509F452C0803609F44BC078 160:1009F00053C0F0F4863509F452C0803609F44BC078
161:100A0000853509F05EC04EDE90E090933B02809306 161:100A0000853509F05EC04EDE90E090933B02809306
162:100A10003A0248DE90E0982F882720913A023091E0 162:100A10003A0248DE90E0982F882720913A023091E0
163:100A20003B02820F931F90933B0280933A022AC0AD 163:100A20003B02820F931F90933B0280933A022AC0AD
164:100A30008437A1F1853709F439C0843609F041C003 164:100A30008437A1F1853709F439C0843609F041C003
165:100A40001FCF10923F0210923E021CC02BDE80325C 165:100A40001FCF10923F0210923E021CC02BDE80325C
166:100A500071F564E18FE492E0BADBE0914F02F0912E 166:100A500071F564E18FE492E0BADBE0914F02F0912E
167:100A600050020280F381E02D47E050E069E071E040 167:100A600050020280F381E02D47E050E069E071E040
168:100A70008FE492E0099560E133C014DEC5CE85E0D5 168:100A70008FE492E0099560E133C014DEC5CE85E0D5
169:100A800090E019DE8ECE80913C0290913D02892B40 169:100A800090E019DE8ECE80913C0290913D02892B40
170:100A9000C9F7D5DCF7CF06DE05DEF4CF21CFC7CE10 170:100A9000C9F7D5DCF7CF06DE05DEF4CF21CFC7CE10
171:100AA00010923F0210923E0204DDECCF4DCF8091B8 171:100AA00010923F0210923E0204DDECCF4DCF8091B8
172:100AB0003E0290913F02019690933F0280933E0246 172:100AB0003E0290913F02019690933F0280933E0246
173:100AC0000EC080913E0290913F02019690933F02AA 173:100AC0000EC080913E0290913F02019690933F02AA
174:100AD00080933E02E7DD803211F462E101C065E1FE 174:100AD00080933E02E7DD803211F462E101C065E1FE
175:100AE0008FE492E074CB80913C0290913D02892B7F 175:100AE0008FE492E074CB80913C0290913D02892B7F
176:100AF00011F0589A01C0589884B58F7D84BD8091BB 176:100AF00011F0589A01C0589884B58F7D84BD8091BB
177:100B00003E0290913F02892B11F0599A01C05998E9 177:100B00003E0290913F02892B11F0599A01C05998E9
178:100B10006CDB8FE492E0BBD3892B09F046CF0895BC 178:100B10006CDB8FE492E0BBD3892B09F046CF0895BC
179:100B2000289A209A8CB580618CBD8CB580648CBD70 179:100B2000289A209A8CB580618CBD8CB580648CBD70
180:100B3000219A229A08958CB58F7B8CBD08951DBA99 180:100B3000219A229A08958CB58F7B8CBD08951DBA99
181:100B4000109268001CBC10BE1FBA10927A0010925E 181:100B4000109268001CBC10BE1FBA10927A0010925E
182:100B50006E0010926F00109271001092720010924D 182:100B50006E0010926F00109271001092720010924D
183:100B6000C900ECEBF0E0108214B817B81AB81DB841 183:100B6000C900ECEBF0E0108214B817B81AB81DB841
184:100B700010BA108215B818B81BB81EB811BA08956B 184:100B700010BA108215B818B81BB81EB811BA08956B
185:100B8000F894E1E6F0E020E82083108283E084BD61 185:100B8000F894E1E6F0E020E82083108283E084BD61
186:100B900085BDEEE6F0E080818160808381E0809316 186:100B900085BDEEE6F0E080818160808381E0809316
187:100BA000800092E090938100809390009093910058 187:100BA000800092E090938100809390009093910058
188:100BB0009093C00094E09093C1008093C200809312 188:100BB0009093C00094E09093C1008093C200809312
189:100BC000C3001092C40086E880937A0020937B00D3 189:100BC000C3001092C40086E880937A0020937B00D3
190:100BD00010927E0010927D0040D178940895E93102 190:100BD00010927E0010927D0040D178940895E93102
191:100BE00050F4EE0FE450FA4F0994E93120F4EE0F7F 191:100BE00050F4EE0FE450FA4F0994E93120F4EE0F7F
192:100BF000E25DF94F09940895289A0895299A089575 192:100BF000E25DF94F09940895289A0895299A089575
193:100C00002A9A08952B9A08952F9A6AC0589A58C024 193:100C00002A9A08952B9A08952F9A6AC0589A58C024
194:100C1000599A08955A9A08955B9A0895469A66C01B 194:100C1000599A08955A9A08955B9A0895469A66C01B
195:100C2000479A6AC05E9A08955F9A6CC02C9A08959C 195:100C2000479A6AC05E9A08955F9A6CC02C9A08959C
196:100C30002D9A4AC02E9A4EC08F9A08958E9A089582 196:100C30002D9A4AC02E9A4EC08F9A08958E9A089582
197:100C40008D9A08958C9A0895899A0895889A08959E 197:100C40008D9A08958C9A0895899A0895889A08959E
198:100C50005C9A08955D9A0895769A08952898089563 198:100C50005C9A08955D9A0895769A08952898089563
199:100C6000299808952A9808952B9808952F9838C0A8 199:100C6000299808952A9808952B9808952F9838C0A8
200:100C7000589826C0599808955A9808955B980895F1 200:100C7000589826C0599808955A9808955B980895F1
201:100C8000469834C0479838C05E9808955F983AC037 201:100C8000469834C0479838C05E9808955F983AC037
202:100C90002C9808952D9818C02E981CC08F980895F0 202:100C90002C9808952D9818C02E981CC08F980895F0
203:100CA0008E9808958D9808958C9808958998089540 203:100CA0008E9808958D9808958C9808958998089540
204:100CB000889808955C9808955D98089576980895A9 204:100CB000889808955C9808955D98089576980895A9
205:100CC000E4B5EF7DE4BD0895E0918000EF77E09317 205:100CC000E4B5EF7DE4BD0895E0918000EF77E09317
206:100CD00080000895E0918000EF7DE093800008950A 206:100CD00080000895E0918000EF7DE093800008950A
207:100CE000E0918000E77FE09380000895E09190001C 207:100CE000E0918000E77FE09380000895E09190001C
208:100CF000EF77E09390000895E091C000EF77E093E4 208:100CF000EF77E09390000895E091C000EF77E093E4
209:100D0000C0000895E091C200E77FE093C20008951B 209:100D0000C0000895E091C200E77FE093C20008951B
210:100D1000F89484B7877F84BF80916000806180935E 210:100D1000F89484B7877F84BF80916000806180935E
211:100D200060001092600080E29EE40197F1F781E09C 211:100D200060001092600080E29EE40197F1F781E09C
212:100D30008093E00080E28093D80080E69AEE0197ED 212:100D30008093E00080E28093D80080E69AEE0197ED
213:100D4000F1F7FDDE0C94003FFFCFF894F8DE80E66B 213:100D4000F1F7FDDE0C94003FFFCFF894F8DE80E66B
214:100D50009AEE0197F1F70C940000FFCF8F938FB7B5 214:100D50009AEE0197F1F70C940000FFCF8F938FB7B5
215:100D60008F93809143028D5F8D37D0F4809343023F 215:100D60008F93809143028D5F8D37D0F4809343023F
216:100D7000809144028F5F80934402D8F080914502B5 216:100D7000809144028F5F80934402D8F080914502B5
217:100D80008F4F80934502A8F0809146028F4F809349 217:100D80008F4F80934502A8F0809146028F4F809349
218:100D9000460278F0809147028F4F8093470209C046 218:100D9000460278F0809147028F4F8093470209C046
219:100DA0008D5780934302809144028E5F809344026A 219:100DA0008D5780934302809144028E5F809344026A
220:100DB00028F7809148028C5F8093480258F0809118 220:100DB00028F7809148028C5F8093480258F0809118
221:100DC00049028F4F8093490228F080914A028F4F49 221:100DC00049028F4F8093490228F080914A028F4F49
222:100DD00080934A028F918FBF8F911895CF92DF92A7 222:100DD00080934A028F918FBF8F911895CF92DF92A7
223:100DE000EF92FF926B017C0119D09B01C114D104D9 223:100DE000EF92FF926B017C0119D09B01C114D104D9
224:100DF000E104F10471F012D0621B730B683E734082 224:100DF000E104F10471F012D0621B730B683E734082
225:100E0000A8F381E0C81AD108E108F10828513C4F45 225:100E0000A8F381E0C81AD108E108F10828513C4F45
226:100E1000EDCFFF90EF90DF90CF9008950FB6F8944C 226:100E1000EDCFFF90EF90DF90CF9008950FB6F8944C
227:100E200066B515B2709148028091490290914A02CC 227:100E200066B515B2709148028091490290914A02CC
228:100E30000FBE10FE05C06F3F19F07C5F8F4F9F4FB4 228:100E30000FBE10FE05C06F3F19F07C5F8F4F9F4FB4
229:100E400011240024660F001C660F001C70290895F1 229:100E400011240024660F001C660F001C70290895F1
230:100E50008091E80080FFFCCF08958091D80087FF43 230:100E50008091E80080FFFCCF08958091D80087FF43
231:100E600002C085FF1BC081E08093D70080EA809399 231:100E600002C085FF1BC081E08093D70080EA809399
232:100E7000D80082E189BD09B400FEFDCF80E98093EE 232:100E7000D80082E189BD09B400FEFDCF80E98093EE
233:100E8000D8001092E00010925B0210925A02109269 233:100E8000D8001092E00010925B0210925A02109269
234:100E900059021092E1008DE08093E20008951F92C4 234:100E900059021092E1008DE08093E20008951F92C4
235:100EA0000F920FB60F9211242F933F934F935F939E 235:100EA0000F920FB60F9211242F933F934F935F939E
236:100EB0006F937F938F939F93AF93BF93EF93FF9322 236:100EB0006F937F938F939F93AF93BF93EF93FF9322
237:100EC0009091E1001092E10093FF11C01092E900AF 237:100EC0009091E1001092E10093FF11C01092E900AF
238:100ED00081E08093EB001092EC0082E28093ED00C1 238:100ED00081E08093EB001092EC0082E28093ED00C1
239:100EE00088E08093F00010925B021092590292FF0A 239:100EE00088E08093F00010925B021092590292FF0A
240:100EF0001DC080915B028823C9F080914E02882337 240:100EF0001DC080915B028823C9F080914E02882337
241:100F000059F0815080934E02811106C084E0809395 241:100F000059F0815080934E02811106C084E0809395
242:100F1000E9008AE38093E80080914D02882331F054 242:100F1000E9008AE38093E80080914D02882331F054
243:100F2000815080934D02811101C0F2DE90FF0CC010 243:100F2000815080934D02811101C0F2DE90FF0CC010
244:100F300080E18093E20010925B0281E080935A028C 244:100F300080E18093E20010925B0281E080935A028C
245:100F400080EA8093D80019BC80915A02882379F0F6 245:100F400080EA8093D80019BC80915A02882379F0F6
246:100F500094FF0DC082E189BD09B400FEFDCF80E998 246:100F500094FF0DC082E189BD09B400FEFDCF80E998
247:100F60008093D8008DE08093E20010925A02FF91A6 247:100F60008093D8008DE08093E20010925A02FF91A6
248:100F7000EF91BF91AF919F918F917F916F915F9111 248:100F7000EF91BF91AF919F918F917F916F915F9111
249:100F80004F913F912F910F900FBE0F901F9018958A 249:100F80004F913F912F910F900FBE0F901F9018958A
250:100F90001F920F920FB60F921124EF92FF920F93B0 250:100F90001F920F920FB60F921124EF92FF920F93B0
251:100FA0001F932F933F934F935F936F937F938F93F1 251:100FA0001F932F933F934F935F936F937F938F93F1
252:100FB0009F93AF93BF93CF93EF93FF931092E9006A 252:100FB0009F93AF93BF93CF93EF93FF931092E9006A
253:100FC0008091E80083FF30C1C091F1008091F10071 253:100FC0008091E80083FF30C1C091F1008091F10071
254:100FD000E090F100F090F1000091F1001091F1002B 254:100FD000E090F100F090F1000091F1001091F1002B
255:100FE0002091F1003091F10092EF9093E80086306B 255:100FE0002091F1003091F10092EF9093E80086306B
256:100FF00009F03FC086E0ECEAF0E0459155914E15CE 256:100FF00009F03FC086E0ECEAF0E0459155914E15CE
257:101000005F0511F0359615C0459155914017510770 257:101000005F0511F0359615C0459155914017510770
258:1010100011F033960EC04591559184912F3F3105C3 258:1010100011F033960EC04591559184912F3F3105C3
259:1010200019F010F02FEF30E0281708F4822F3EEF70 259:1010200019F010F02FEF30E0281708F4822F3EEF70
260:1010300008C0815011F7F8C0891B3093E80088235D 260:1010300008C0815011F7F8C0891B3093E80088235D
261:10104000A9F09091E800292F2570D9F392FDEFC007 261:10104000A9F09091E800292F2570D9F392FDEFC007
262:10105000982F813208F090E2292F222369F3FA01B8 262:10105000982F813208F090E2292F222369F3FA01B8
263:1010600045914093F100AF012150F7CF903249F301 263:1010600045914093F100AF012150F7CF903249F301
264:10107000DEC0853049F48EEF8093E800E9DE8E2DE6 264:10107000DEC0853049F48EEF8093E800E9DE8E2DE6
265:1010800080688093E300D3C0893001F5C111CCC0E2 265:1010800080688093E300D3C0893001F5C111CCC0E2
266:10109000E0925B021092590210924E028EEF809302 266:10109000E0925B021092590210924E028EEF809302
267:1010A000E80081E0EFE6F1E08093E900959190930C 267:1010A000E80081E0EFE6F1E08093E900959190930C
268:1010B000EB00992331F095919093EC0095919093EA 268:1010B000EB00992331F095919093EC0095919093EA
269:1010C000ED008F5F853081F78EE1A9C0883049F44B 269:1010C000ED008F5F853081F78EE1A9C0883049F44B
270:1010D000C03809F0A9C0BCDE80915B028093F100AA 270:1010D000C03809F0A9C0BCDE80915B028093F100AA
271:1010E0007DC0813279F4C13A09F09EC0B1DEE2E000 271:1010E0007DC0813279F4C13A09F09EC0B1DEE2E000
272:1010F000F1E087E08E0F90819093F10031968E138E 272:1010F000F1E087E08E0F90819093F10031968E138E
273:10110000FACF6CC0803209F047C0C13209F08CC000 273:10110000FACF6CC0803209F047C0C13209F08CC000
274:101110008091E80082FFFCCFE2E0F1E087E08E0FF3 274:101110008091E80082FFFCCFE2E0F1E087E08E0FF3
275:101120009091F100908331968E13FACF8BEF8093DC 275:101120009091F100908331968E13FACF8BEF8093DC
276:10113000E8008EEF8093E8003091020140910301B6 276:10113000E8008EEF8093E8003091020140910301B6
277:10114000809104012091050190E0A0E0B0E0DC0175 277:10114000809104012091050190E0A0E0B0E0DC0175
278:1011500099278827942B832BB22B86389105A105DC 278:1011500099278827942B832BB22B86389105A105DC
279:10116000B10521F48FE080934D0261C0863991056D 279:10116000B10521F48FE080934D0261C0863991056D
280:10117000A105B10509F05BC084E08093E9009FEF11 280:10117000A105B10509F05BC084E08093E9009FEF11
281:101180008091EE00837039F09093E8008091E80040 281:101180008091EE00837039F09093E8008091E80040
282:1011900082FDFCCFF5CFD9DD823231F4C13209F0C6 282:1011900082FDFCCFF5CFD9DD823231F4C13209F0C6
283:1011A00043C0E092590204C0833221F4C132E1F518 283:1011A00043C0E092590204C0833221F4C132E1F518
284:1011B0004FDE14C0811116C04BDEC23851F40093CB 284:1011B0004FDE14C0811116C04BDEC23851F40093CB
285:1011C000E9008091EB0085FB882780F91092E90007 285:1011C000E9008091EB0085FB882780F91092E90007
286:1011D00001C080E08093F1001092F1008EEF8093C7 286:1011D00001C080E08093F1001092F1008EEF8093C7
287:1011E000E80025C0982F9D7F9130F1F4C230E1F4E2 287:1011E000E80025C0982F9D7F9130F1F4C230E1F4E2
288:1011F000EF28D1F40F779FEF900F9630A8F49EEF71 288:1011F000EF28D1F40F779FEF900F9630A8F49EEF71
289:101200009093E8000093E900833071F089E18093C6 289:101200009093E8000093E900833071F089E18093C6
290:10121000EB0081E090E001C0880F0A95EAF7809327 290:10121000EB0081E090E001C0880F0A95EAF7809327
291:10122000EA001092EA0003C081E28093EB00FF9194 291:10122000EA001092EA0003C081E28093EB00FF9194
292:10123000EF91CF91BF91AF919F918F917F916F91DE 292:10123000EF91CF91BF91AF919F918F917F916F91DE
293:101240005F914F913F912F911F910F91FF90EF90E0 293:101240005F914F913F912F911F910F91FF90EF90E0
294:101250000F900FBE0F901F90189592DC36D843DC8C 294:101250000F900FBE0F901F90189592DC36D843DC8C
295:10126000FECFCF93DF931F92CDB7DEB76983DC014A 295:10126000FECFCF93DF931F92CDB7DEB76983DC014A
296:10127000ED91FC910280F381E02D41E050E0BE0150 296:10127000ED91FC910280F381E02D41E050E0BE0150
297:101280006F5F7F4F09950F90DF91CF910895FC011B 297:101280006F5F7F4F09950F90DF91CF910895FC011B
298:101290008FB7F89490915B02911102C090E010C05A 298:101290008FB7F89490915B02911102C090E010C05A
299:1012A00093E09093E9009091F200911109C0209190 299:1012A00093E09093E9009091F200911109C0209190
300:1012B000E80022FFF3CF25FDF1CF2BE62093E800D5 300:1012B000E80022FFF3CF25FDF1CF2BE62093E800D5
301:1012C0008FBF2085318537FD03C09F3F09F09F5FA9 301:1012C0008FBF2085318537FD03C09F3F09F09F5FA9
302:1012D000892F90E00895CF93DF93EC01888599855D 302:1012D000892F90E00895CF93DF93EC01888599855D
303:1012E00097FF09C0E881F9810680F781E02DCE01E2 303:1012E00097FF09C0E881F9810680F781E02DCE01E2
304:1012F00009959987888788859985DF91CF91089589 304:1012F00009959987888788859985DF91CF91089589
305:10130000FC012085318537FD07C04FEF5FEF518726 305:10130000FC012085318537FD07C04FEF5FEF518726
306:101310004087C901992708959FB7F89480915B028F 306:101310004087C901992708959FB7F89480915B028F
307:10132000882369F083E08093E9002BE68091E80050 307:10132000882369F083E08093E9002BE68091E80050
308:1013300085FD09C082FF03C02093E800F7CF9FBF5F 308:1013300085FD09C082FF03C02093E800F7CF9FBF5F
309:101340008FEF9FEF08958091F1002091E80025FD37 309:101340008FEF9FEF08958091F1002091E80025FD37
310:1013500003C02BE62093E8009FBF90E00895DF9242 310:1013500003C02BE62093E8009FBF90E00895DF9242
311:10136000EF92FF920F931F93CF93DF938C01EB01CA 311:10136000EF92FF920F931F93CF93DF938C01EB01CA
312:1013700080915B02882371F07FB7F89484E08093BA 312:1013700080915B02882371F07FB7F89484E08093BA
313:10138000E90080914C02882369F08091E80085FD96 313:10138000E90080914C02882369F08091E80085FD96
314:1013900007C07FBF81E0F801828320E030E0D1C048 314:1013900007C07FBF81E0F801828320E030E0D1C048
315:1013A00010924C0220E030E064E080E4F82EA1EFDF 315:1013A00010924C0220E030E064E080E4F82EA1EFDF
316:1013B000B0E09AE3E92EE3E0DE2E4115510509F491 316:1013B000B0E09AE3E92EE3E0DE2E4115510509F491
317:1013C000BFC08091E400815F9091E80095FD16C058 317:1013C000BFC08091E400815F9091E80095FD16C058
318:1013D0007FBF9091E400981304C081E080934C0299 318:1013D0007FBF9091E400981304C081E080934C0299
319:1013E00005C090915B02911104C081E0F8018283F5 319:1013E00005C090915B02911104C081E0F8018283F5
320:1013F000A8C07FB7F8946093E900E6CF8091F2002F 320:1013F000A8C07FB7F8946093E900E6CF8091F2002F
321:101400009F2D981BE92FF0E04E175F0708F4942FEB 321:101400009F2D981BE92FF0E04E175F0708F4942FEB
322:10141000E92FF0E04E1B5F0B2E0F3F1FE0E4E91BAE 322:10141000E92FF0E04E1B5F0B2E0F3F1FE0E4E91BAE
323:10142000E03428F4EE0FFF27E85EF54F099480C002 323:10142000E03428F4EE0FFF27E85EF54F099480C002
324:1014300099919C9399919C9399919C9399919C9348 324:1014300099919C9399919C9399919C9399919C9348
325:1014400099919C9399919C9399919C9399919C9338 325:1014400099919C9399919C9399919C9399919C9338
326:1014500099919C9399919C9399919C9399919C9328 326:1014500099919C9399919C9399919C9399919C9328
327:1014600099919C9399919C9399919C9399919C9318 327:1014600099919C9399919C9399919C9399919C9318
328:1014700099919C9399919C9399919C9399919C9308 328:1014700099919C9399919C9399919C9399919C9308
329:1014800099919C9399919C9399919C9399919C93F8 329:1014800099919C9399919C9399919C9399919C93F8
330:1014900099919C9399919C9399919C9399919C93E8 330:1014900099919C9399919C9399919C9399919C93E8
331:1014A00099919C9399919C9399919C9399919C93D8 331:1014A00099919C9399919C9399919C9399919C93D8
332:1014B00099919C9399919C9399919C9399919C93C8 332:1014B00099919C9399919C9399919C9399919C93C8
333:1014C00099919C9399919C9399919C9399919C93B8 333:1014C00099919C9399919C9399919C9399919C93B8
334:1014D00099919C9399919C9399919C9399919C93A8 334:1014D00099919C9399919C9399919C9399919C93A8
335:1014E00099919C9399919C9399919C9399919C9398 335:1014E00099919C9399919C9399919C9399919C9398
336:1014F00099919C9399919C9399919C9399919C9388 336:1014F00099919C9399919C9399919C9399919C9388
337:1015000099919C9399919C9399919C9399919C9377 337:1015000099919C9399919C9399919C9399919C9377
338:1015100099919C9399919C9399919C9399919C9367 338:1015100099919C9399919C9399919C9399919C9367
339:1015200099919C9399919C9399919C9399919C9357 339:1015200099919C9399919C9399919C9399919C9357
340:101530008091E80085FFE092E800D0924E023DCF16 340:101530008091E80085FFE092E800D0924E023DCF16
341:101540007FBFC901DF91CF911F910F91FF90EF9065 341:101540007FBFC901DF91CF911F910F91FF90EF9065
342:10155000DF9008952FEF3FEFFC01318720877DDC7E 342:10155000DF9008952FEF3FEFFC01318720877DDC7E
343:101560000FB6F8948091440290914502A0914602F2 343:101560000FB6F8948091440290914502A0914602F2
344:10157000B09147020FBE9C0180915B02882329F045 344:10157000B09147020FBE9C0180915B02882329F045
345:1015800068EC70E080E090E029CC80915A028823DA 345:1015800068EC70E080E090E029CC80915A028823DA
346:1015900001F10FB6F8948091440290914502A09118 346:1015900001F10FB6F8948091440290914502A09118
347:1015A0004602B09147020FBE40915A02442389F08F 347:1015A0004602B09147020FBE40915A02442389F08F
348:1015B0000FB6F89440914402509145026091460262 348:1015B0000FB6F89440914402509145026091460262
349:1015C000709147020FBE481B590B4B3F510560F30A 349:1015C000709147020FBE481B590B4B3F510560F30A
350:1015D00011C00FB6F8948091440290914502A091F9 350:1015D00011C00FB6F8948091440290914502A091F9
351:1015E0004602B09147020FBE821B930B853C994087 351:1015E0004602B09147020FBE821B930B853C994087
352:1015F00008F4C2CF08959FB7F89480915B028823C6 352:1015F00008F4C2CF08959FB7F89480915B028823C6
353:1016000021F080914E02811102C09FBF089584E0B5 353:1016000021F080914E02811102C09FBF089584E0B5
354:101610008093E9008AE38093E80010924E02F5CFB0 354:101610008093E9008AE38093E80010924E02F5CFB0
355:10162000EACFEFE4F2E08AE0DF011D928A95E9F764 355:10162000EACFEFE4F2E08AE0DF011D928A95E9F764
356:1016300088EE93E0A0E0B0E083839483A583B68333 356:1016300088EE93E0A0E0B0E083839483A583B68333
357:1016400085E191E0918380830895EE0FFF1F05905F 357:1016400085E191E0918380830895EE0FFF1F05905F
358:0A165000F491E02D0994F894FFCF07 358:0A165000F491E02D0994F894FFCF07
359:10165A00088000E10000000008415652204953501A 359:10165A00088000E10000000008415652204953501A
360:10166A0000000000003109AF09470980096B091021 360:10166A0000000000003109AF09470980096B091021
361:02167A000B0063 361:02167A000B0063
362:00000001FF 362:00000001FF