seongeun-lee commited on
Commit
c5a246d
·
0 Parent(s):

Release GLINT-CT

Browse files
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,407 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Attribution-NonCommercial 4.0 International
2
+
3
+ =======================================================================
4
+
5
+ Creative Commons Corporation ("Creative Commons") is not a law firm and
6
+ does not provide legal services or legal advice. Distribution of
7
+ Creative Commons public licenses does not create a lawyer-client or
8
+ other relationship. Creative Commons makes its licenses and related
9
+ information available on an "as-is" basis. Creative Commons gives no
10
+ warranties regarding its licenses, any material licensed under their
11
+ terms and conditions, or any related information. Creative Commons
12
+ disclaims all liability for damages resulting from their use to the
13
+ fullest extent possible.
14
+
15
+ Using Creative Commons Public Licenses
16
+
17
+ Creative Commons public licenses provide a standard set of terms and
18
+ conditions that creators and other rights holders may use to share
19
+ original works of authorship and other material subject to copyright
20
+ and certain other rights specified in the public license below. The
21
+ following considerations are for informational purposes only, are not
22
+ exhaustive, and do not form part of our licenses.
23
+
24
+ Considerations for licensors: Our public licenses are
25
+ intended for use by those authorized to give the public
26
+ permission to use material in ways otherwise restricted by
27
+ copyright and certain other rights. Our licenses are
28
+ irrevocable. Licensors should read and understand the terms
29
+ and conditions of the license they choose before applying it.
30
+ Licensors should also secure all rights necessary before
31
+ applying our licenses so that the public can reuse the
32
+ material as expected. Licensors should clearly mark any
33
+ material not subject to the license. This includes other CC-
34
+ licensed material, or material used under an exception or
35
+ limitation to copyright. More considerations for licensors:
36
+ wiki.creativecommons.org/Considerations_for_licensors
37
+
38
+ Considerations for the public: By using one of our public
39
+ licenses, a licensor grants the public permission to use the
40
+ licensed material under specified terms and conditions. If
41
+ the licensor's permission is not necessary for any reason--for
42
+ example, because of any applicable exception or limitation to
43
+ copyright--then that use is not regulated by the license. Our
44
+ licenses grant only permissions under copyright and certain
45
+ other rights that a licensor has authority to grant. Use of
46
+ the licensed material may still be restricted for other
47
+ reasons, including because others have copyright or other
48
+ rights in the material. A licensor may make special requests,
49
+ such as asking that all changes be marked or described.
50
+ Although not required by our licenses, you are encouraged to
51
+ respect those requests where reasonable. More considerations
52
+ for the public:
53
+ wiki.creativecommons.org/Considerations_for_licensees
54
+
55
+ =======================================================================
56
+
57
+ Creative Commons Attribution-NonCommercial 4.0 International Public
58
+ License
59
+
60
+ By exercising the Licensed Rights (defined below), You accept and agree
61
+ to be bound by the terms and conditions of this Creative Commons
62
+ Attribution-NonCommercial 4.0 International Public License ("Public
63
+ License"). To the extent this Public License may be interpreted as a
64
+ contract, You are granted the Licensed Rights in consideration of Your
65
+ acceptance of these terms and conditions, and the Licensor grants You
66
+ such rights in consideration of benefits the Licensor receives from
67
+ making the Licensed Material available under these terms and
68
+ conditions.
69
+
70
+
71
+ Section 1 -- Definitions.
72
+
73
+ a. Adapted Material means material subject to Copyright and Similar
74
+ Rights that is derived from or based upon the Licensed Material
75
+ and in which the Licensed Material is translated, altered,
76
+ arranged, transformed, or otherwise modified in a manner requiring
77
+ permission under the Copyright and Similar Rights held by the
78
+ Licensor. For purposes of this Public License, where the Licensed
79
+ Material is a musical work, performance, or sound recording,
80
+ Adapted Material is always produced where the Licensed Material is
81
+ synched in timed relation with a moving image.
82
+
83
+ b. Adapter's License means the license You apply to Your Copyright
84
+ and Similar Rights in Your contributions to Adapted Material in
85
+ accordance with the terms and conditions of this Public License.
86
+
87
+ c. Copyright and Similar Rights means copyright and/or similar rights
88
+ closely related to copyright including, without limitation,
89
+ performance, broadcast, sound recording, and Sui Generis Database
90
+ Rights, without regard to how the rights are labeled or
91
+ categorized. For purposes of this Public License, the rights
92
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
93
+ Rights.
94
+ d. Effective Technological Measures means those measures that, in the
95
+ absence of proper authority, may not be circumvented under laws
96
+ fulfilling obligations under Article 11 of the WIPO Copyright
97
+ Treaty adopted on December 20, 1996, and/or similar international
98
+ agreements.
99
+
100
+ e. Exceptions and Limitations means fair use, fair dealing, and/or
101
+ any other exception or limitation to Copyright and Similar Rights
102
+ that applies to Your use of the Licensed Material.
103
+
104
+ f. Licensed Material means the artistic or literary work, database,
105
+ or other material to which the Licensor applied this Public
106
+ License.
107
+
108
+ g. Licensed Rights means the rights granted to You subject to the
109
+ terms and conditions of this Public License, which are limited to
110
+ all Copyright and Similar Rights that apply to Your use of the
111
+ Licensed Material and that the Licensor has authority to license.
112
+
113
+ h. Licensor means the individual(s) or entity(ies) granting rights
114
+ under this Public License.
115
+
116
+ i. NonCommercial means not primarily intended for or directed towards
117
+ commercial advantage or monetary compensation. For purposes of
118
+ this Public License, the exchange of the Licensed Material for
119
+ other material subject to Copyright and Similar Rights by digital
120
+ file-sharing or similar means is NonCommercial provided there is
121
+ no payment of monetary compensation in connection with the
122
+ exchange.
123
+
124
+ j. Share means to provide material to the public by any means or
125
+ process that requires permission under the Licensed Rights, such
126
+ as reproduction, public display, public performance, distribution,
127
+ dissemination, communication, or importation, and to make material
128
+ available to the public including in ways that members of the
129
+ public may access the material from a place and at a time
130
+ individually chosen by them.
131
+
132
+ k. Sui Generis Database Rights means rights other than copyright
133
+ resulting from Directive 96/9/EC of the European Parliament and of
134
+ the Council of 11 March 1996 on the legal protection of databases,
135
+ as amended and/or succeeded, as well as other essentially
136
+ equivalent rights anywhere in the world.
137
+
138
+ l. You means the individual or entity exercising the Licensed Rights
139
+ under this Public License. Your has a corresponding meaning.
140
+
141
+
142
+ Section 2 -- Scope.
143
+
144
+ a. License grant.
145
+
146
+ 1. Subject to the terms and conditions of this Public License,
147
+ the Licensor hereby grants You a worldwide, royalty-free,
148
+ non-sublicensable, non-exclusive, irrevocable license to
149
+ exercise the Licensed Rights in the Licensed Material to:
150
+
151
+ a. reproduce and Share the Licensed Material, in whole or
152
+ in part, for NonCommercial purposes only; and
153
+
154
+ b. produce, reproduce, and Share Adapted Material for
155
+ NonCommercial purposes only.
156
+
157
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
158
+ Exceptions and Limitations apply to Your use, this Public
159
+ License does not apply, and You do not need to comply with
160
+ its terms and conditions.
161
+
162
+ 3. Term. The term of this Public License is specified in Section
163
+ 6(a).
164
+
165
+ 4. Media and formats; technical modifications allowed. The
166
+ Licensor authorizes You to exercise the Licensed Rights in
167
+ all media and formats whether now known or hereafter created,
168
+ and to make technical modifications necessary to do so. The
169
+ Licensor waives and/or agrees not to assert any right or
170
+ authority to forbid You from making technical modifications
171
+ necessary to exercise the Licensed Rights, including
172
+ technical modifications necessary to circumvent Effective
173
+ Technological Measures. For purposes of this Public License,
174
+ simply making modifications authorized by this Section 2(a)
175
+ (4) never produces Adapted Material.
176
+
177
+ 5. Downstream recipients.
178
+
179
+ a. Offer from the Licensor -- Licensed Material. Every
180
+ recipient of the Licensed Material automatically
181
+ receives an offer from the Licensor to exercise the
182
+ Licensed Rights under the terms and conditions of this
183
+ Public License.
184
+
185
+ b. No downstream restrictions. You may not offer or impose
186
+ any additional or different terms or conditions on, or
187
+ apply any Effective Technological Measures to, the
188
+ Licensed Material if doing so restricts exercise of the
189
+ Licensed Rights by any recipient of the Licensed
190
+ Material.
191
+
192
+ 6. No endorsement. Nothing in this Public License constitutes or
193
+ may be construed as permission to assert or imply that You
194
+ are, or that Your use of the Licensed Material is, connected
195
+ with, or sponsored, endorsed, or granted official status by,
196
+ the Licensor or others designated to receive attribution as
197
+ provided in Section 3(a)(1)(A)(i).
198
+
199
+ b. Other rights.
200
+
201
+ 1. Moral rights, such as the right of integrity, are not
202
+ licensed under this Public License, nor are publicity,
203
+ privacy, and/or other similar personality rights; however, to
204
+ the extent possible, the Licensor waives and/or agrees not to
205
+ assert any such rights held by the Licensor to the limited
206
+ extent necessary to allow You to exercise the Licensed
207
+ Rights, but not otherwise.
208
+
209
+ 2. Patent and trademark rights are not licensed under this
210
+ Public License.
211
+
212
+ 3. To the extent possible, the Licensor waives any right to
213
+ collect royalties from You for the exercise of the Licensed
214
+ Rights, whether directly or through a collecting society
215
+ under any voluntary or waivable statutory or compulsory
216
+ licensing scheme. In all other cases the Licensor expressly
217
+ reserves any right to collect such royalties, including when
218
+ the Licensed Material is used other than for NonCommercial
219
+ purposes.
220
+
221
+
222
+ Section 3 -- License Conditions.
223
+
224
+ Your exercise of the Licensed Rights is expressly made subject to the
225
+ following conditions.
226
+
227
+ a. Attribution.
228
+
229
+ 1. If You Share the Licensed Material (including in modified
230
+ form), You must:
231
+
232
+ a. retain the following if it is supplied by the Licensor
233
+ with the Licensed Material:
234
+
235
+ i. identification of the creator(s) of the Licensed
236
+ Material and any others designated to receive
237
+ attribution, in any reasonable manner requested by
238
+ the Licensor (including by pseudonym if
239
+ designated);
240
+
241
+ ii. a copyright notice;
242
+
243
+ iii. a notice that refers to this Public License;
244
+
245
+ iv. a notice that refers to the disclaimer of
246
+ warranties;
247
+
248
+ v. a URI or hyperlink to the Licensed Material to the
249
+ extent reasonably practicable;
250
+
251
+ b. indicate if You modified the Licensed Material and
252
+ retain an indication of any previous modifications; and
253
+
254
+ c. indicate the Licensed Material is licensed under this
255
+ Public License, and include the text of, or the URI or
256
+ hyperlink to, this Public License.
257
+
258
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
259
+ reasonable manner based on the medium, means, and context in
260
+ which You Share the Licensed Material. For example, it may be
261
+ reasonable to satisfy the conditions by providing a URI or
262
+ hyperlink to a resource that includes the required
263
+ information.
264
+
265
+ 3. If requested by the Licensor, You must remove any of the
266
+ information required by Section 3(a)(1)(A) to the extent
267
+ reasonably practicable.
268
+
269
+ 4. If You Share Adapted Material You produce, the Adapter's
270
+ License You apply must not prevent recipients of the Adapted
271
+ Material from complying with this Public License.
272
+
273
+
274
+ Section 4 -- Sui Generis Database Rights.
275
+
276
+ Where the Licensed Rights include Sui Generis Database Rights that
277
+ apply to Your use of the Licensed Material:
278
+
279
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
280
+ to extract, reuse, reproduce, and Share all or a substantial
281
+ portion of the contents of the database for NonCommercial purposes
282
+ only;
283
+
284
+ b. if You include all or a substantial portion of the database
285
+ contents in a database in which You have Sui Generis Database
286
+ Rights, then the database in which You have Sui Generis Database
287
+ Rights (but not its individual contents) is Adapted Material; and
288
+
289
+ c. You must comply with the conditions in Section 3(a) if You Share
290
+ all or a substantial portion of the contents of the database.
291
+
292
+ For the avoidance of doubt, this Section 4 supplements and does not
293
+ replace Your obligations under this Public License where the Licensed
294
+ Rights include other Copyright and Similar Rights.
295
+
296
+
297
+ Section 5 -- Disclaimer of Warranties and Limitation of Liability.
298
+
299
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
300
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
301
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
302
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
303
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
304
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
305
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
306
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
307
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
308
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
309
+
310
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
311
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
312
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
313
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
314
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
315
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
316
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
317
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
318
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
319
+
320
+ c. The disclaimer of warranties and limitation of liability provided
321
+ above shall be interpreted in a manner that, to the extent
322
+ possible, most closely approximates an absolute disclaimer and
323
+ waiver of all liability.
324
+
325
+
326
+ Section 6 -- Term and Termination.
327
+
328
+ a. This Public License applies for the term of the Copyright and
329
+ Similar Rights licensed here. However, if You fail to comply with
330
+ this Public License, then Your rights under this Public License
331
+ terminate automatically.
332
+
333
+ b. Where Your right to use the Licensed Material has terminated under
334
+ Section 6(a), it reinstates:
335
+
336
+ 1. automatically as of the date the violation is cured, provided
337
+ it is cured within 30 days of Your discovery of the
338
+ violation; or
339
+
340
+ 2. upon express reinstatement by the Licensor.
341
+
342
+ For the avoidance of doubt, this Section 6(b) does not affect any
343
+ right the Licensor may have to seek remedies for Your violations
344
+ of this Public License.
345
+
346
+ c. For the avoidance of doubt, the Licensor may also offer the
347
+ Licensed Material under separate terms or conditions or stop
348
+ distributing the Licensed Material at any time; however, doing so
349
+ will not terminate this Public License.
350
+
351
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
352
+ License.
353
+
354
+
355
+ Section 7 -- Other Terms and Conditions.
356
+
357
+ a. The Licensor shall not be bound by any additional or different
358
+ terms or conditions communicated by You unless expressly agreed.
359
+
360
+ b. Any arrangements, understandings, or agreements regarding the
361
+ Licensed Material not stated herein are separate from and
362
+ independent of the terms and conditions of this Public License.
363
+
364
+
365
+ Section 8 -- Interpretation.
366
+
367
+ a. For the avoidance of doubt, this Public License does not, and
368
+ shall not be interpreted to, reduce, limit, restrict, or impose
369
+ conditions on any use of the Licensed Material that could lawfully
370
+ be made without permission under this Public License.
371
+
372
+ b. To the extent possible, if any provision of this Public License is
373
+ deemed unenforceable, it shall be automatically reformed to the
374
+ minimum extent necessary to make it enforceable. If the provision
375
+ cannot be reformed, it shall be severed from this Public License
376
+ without affecting the enforceability of the remaining terms and
377
+ conditions.
378
+
379
+ c. No term or condition of this Public License will be waived and no
380
+ failure to comply consented to unless expressly agreed to by the
381
+ Licensor.
382
+
383
+ d. Nothing in this Public License constitutes or may be interpreted
384
+ as a limitation upon, or waiver of, any privileges and immunities
385
+ that apply to the Licensor or You, including from the legal
386
+ processes of any jurisdiction or authority.
387
+
388
+ =======================================================================
389
+
390
+ Creative Commons is not a party to its public
391
+ licenses. Notwithstanding, Creative Commons may elect to apply one of
392
+ its public licenses to material it publishes and in those instances
393
+ will be considered the "Licensor." The text of the Creative Commons
394
+ public licenses is dedicated to the public domain under the CC0 Public
395
+ Domain Dedication. Except for the limited purpose of indicating that
396
+ material is shared under a Creative Commons public license or as
397
+ otherwise permitted by the Creative Commons policies published at
398
+ creativecommons.org/policies, Creative Commons does not authorize the
399
+ use of the trademark "Creative Commons" or any other trademark or logo
400
+ of Creative Commons without its prior written consent including,
401
+ without limitation, in connection with any unauthorized modifications
402
+ to any of its public licenses or any other arrangements,
403
+ understandings, or agreements concerning use of licensed material. For
404
+ the avoidance of doubt, this paragraph does not form part of the
405
+ public licenses.
406
+
407
+ Creative Commons may be contacted at creativecommons.org.
LICENSES/Apache-2.0.txt ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
LICENSES/MIT.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) Meta Platforms, Inc. and affiliates.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ license: cc-by-nc-4.0
4
+ tags:
5
+ - medical
6
+ - radiology
7
+ - vision-language
8
+ - chest-ct
9
+ - 3d-medical-imaging
10
+ - glint
11
+ - custom_code
12
+ - arxiv:2606.03180
13
+ datasets:
14
+ - ibrahimhamamci/CT-RATE
15
+ ---
16
+
17
+ # GLINT-CT
18
+
19
+ <p>
20
+ 📝 <a href="https://arxiv.org/abs/2606.03180">Paper</a> •
21
+ 💻 <a href="https://github.com/deepnoid-ai/GLINT">Code</a> •
22
+ 🌐 <a href="https://deepnoid-ai.github.io/GLINT/">Project page</a> •
23
+ 🤗 <a href="https://huggingface.co/Deepnoid/GLINT-CXR">GLINT-CXR</a>
24
+ </p>
25
+
26
+ GLINT-CT is the chest CT model of **GLINT** (*GLINT: Sparsely Gated Vision-Language Alignment for Fine-Grained
27
+ Radiology Representations*, NeurIPS 2026).
28
+
29
+ - **Vision encoder:** V-JEPA 2.1 ViT-L/16, 384×384, 80 frames / 240 slices
30
+ - **Text encoder:** `sentence-transformers/all-mpnet-base-v2` (fine-tuned)
31
+ - **Alignment:** linear projection (1024→768) + LayerNorm, mean-pooled text + LayerNorm, SGA similarity head
32
+ - **Training:** CT-RATE, with Sparsely Gated Alignment (SGA) and Dense Feature Regularization (DFR) from a frozen
33
+ V-JEPA 2.1 ViT-G teacher
34
+
35
+ > ⚠️ GLINT is released for research purposes only and is not intended for clinical use, including the diagnosis or treatment of any medical condition.
36
+
37
+ ## Usage
38
+
39
+ Both examples use the bundled `inference.py` / `utils.py`; run them from the downloaded repo.
40
+
41
+ ### Full pipeline
42
+
43
+ ```bash
44
+ hf download Deepnoid/GLINT-CT --local-dir glint-ct && cd glint-ct
45
+ python inference.py --volume volume.nii.gz --text "There is a lung nodule."
46
+ # prints the sentence probability and the 18 CT-RATE findings,
47
+ # saves similarity_map.nii.gz and ct_preprocessed.nii.gz
48
+ ```
49
+
50
+ Both files share one affine, so the map overlays the CT in ITK-SNAP / 3D Slicer.
51
+
52
+ ### AutoModel
53
+
54
+ ```python
55
+ import torch
56
+ from transformers import AutoModel, AutoTokenizer
57
+ from utils import load_ct_volume, model_inference, save_similarity_map, similarity_scores_to_volume # bundled helpers
58
+
59
+ repo = "Deepnoid/GLINT-CT"
60
+ device = "cuda" if torch.cuda.is_available() else "cpu"
61
+
62
+ model = AutoModel.from_pretrained(repo, trust_remote_code=True, dtype=torch.float32).to(device).eval()
63
+ tokenizer = AutoTokenizer.from_pretrained(repo)
64
+
65
+ pixel_values, affine = load_ct_volume("volume.nii.gz", return_affine=True) # [1, 80, 3, 384, 384]
66
+ prob, scores = model_inference(pixel_values, "There is a lung nodule.", model=model, tokenizer=tokenizer)
67
+ volume = similarity_scores_to_volume(scores, model) # (240, 384, 384)
68
+ save_similarity_map(volume, affine, "similarity_map.nii.gz", pixel_values, "ct_preprocessed.nii.gz")
69
+ ```
70
+
71
+ - **Outputs:** `prob` is the sentence probability (sigmoid); `scores` is the per-token similarity in [0, 1]
72
+ (40 × 24 × 24 tokens).
73
+ - **Inputs:** `utils.load_ct_volume` applies the training preprocessing (IPL, HU [-1000, 1000] → [-1, 1],
74
+ 1.5 × 0.75 × 0.75 mm, crop/pad to 240×480×480, resize to 240×384×384) and returns `[1, 80, 3, 384, 384]`.
75
+ - **Unreliable NIfTI affine:** pass `raw_spacing=(sx, sy, sz)` to `load_ct_volume` (`--raw_spacing` in the script).
76
+ - **Underlying call:** `model.compute_logits(pixel_values, [encoded_text])` returns `logits` and `similarity_scores`.
77
+
78
+ Vision encoder only (`vision_only=True`):
79
+
80
+ ```python
81
+ import torch
82
+ from transformers import AutoModel
83
+ from utils import load_ct_volume # bundled helper
84
+
85
+ repo = "Deepnoid/GLINT-CT"
86
+ vision = AutoModel.from_pretrained(repo, trust_remote_code=True, vision_only=True, dtype=torch.float32).eval()
87
+
88
+ pixel_values = load_ct_volume("volume.nii.gz") # [1, 80, 3, 384, 384]
89
+ with torch.no_grad():
90
+ out = vision(pixel_values)
91
+ print(out.last_hidden_state.shape) # (1, 23040, 1024)
92
+ ```
93
+
94
+ ## Requirements
95
+
96
+ `transformers==4.56.1`, `torch`, `entmax`, `monai`, `nibabel`.
97
+
98
+ > ⚠️ Keep `transformers==4.56.1`, the version the bundled code was validated with.
99
+
100
+ ## Notes
101
+
102
+ - Training and fine-tuning code: [GitHub](https://github.com/deepnoid-ai/GLINT); split ID lists: [`data/`](./tree/main/data).
103
+ - `dfr.py` and its projector weights are used only in training; the V-JEPA 2.1 ViT-G teacher is not included.
104
+ - `vision_only=True` still downloads the full checkpoint; `save_pretrained` on the loaded model keeps a vision-only copy.
105
+
106
+ ## Acknowledgments
107
+
108
+ This work was supported by the Technology Innovation Program (RS-2025-02221011,
109
+ Development of Medical-Specialized Multimodal Hyperscale Generative AI Technology
110
+ for Global Integration) funded by the Ministry of Trade, Industry & Energy (MOTIE,
111
+ South Korea), and by the Advanced GPU Utilization Support Program funded by the
112
+ Korean government (Ministry of Science and ICT) (Project No. 02-26-91-0330).
113
+
114
+ ## License
115
+
116
+ - **Weights and code:** [CC BY-NC 4.0](LICENSE).
117
+ - **Vision encoder:** fine-tuned from V-JEPA 2.1 ViT-L (© Meta Platforms, Inc., MIT); `vjepa21_encoder.py` adapts
118
+ [facebookresearch/vjepa2](https://github.com/facebookresearch/vjepa2) (MIT, `LICENSES/MIT.txt`).
119
+ - **Text encoder:** fine-tuned from
120
+ [sentence-transformers/all-mpnet-base-v2](https://huggingface.co/sentence-transformers/all-mpnet-base-v2)
121
+ (Apache-2.0, modified; `LICENSES/Apache-2.0.txt`).
122
+
123
+ ## Citation
124
+
125
+ ```bibtex
126
+ @inproceedings{park2026glint,
127
+ title = {{GLINT}: Sparsely Gated Vision-Language Alignment for Fine-Grained Radiology Representations},
128
+ author = {Park, Jonggwon and Lee, Seongeun and Park, Junhyun and
129
+ Yun, Hannah and Kim, Hyunwoong and Jeong, Sohyun and
130
+ Kang, Hyewon and Yoon, Byungmu and Choi, Kyoyun},
131
+ booktitle = {The Fortieth Annual Conference on Neural Information Processing Systems},
132
+ year = {2026},
133
+ url = {https://arxiv.org/abs/2606.03180}
134
+ }
135
+ ```
align_layers.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from torch import nn
2
+ from transformers import PreTrainedModel
3
+ from transformers.models.dinov2.modeling_dinov2 import Dinov2Encoder
4
+
5
+ from .configuration_glint import AlignLayerConfig
6
+
7
+
8
+ def build_align_layer(config):
9
+ if config.model_type == "align_transformer":
10
+ model = AlignTransformer(config)
11
+ elif config.model_type == "identity":
12
+ model = Identity()
13
+ elif config.model_type == "mlp":
14
+ model = MLP(config)
15
+ elif config.model_type == "linear":
16
+ model = Linear(config)
17
+ else:
18
+ raise NotImplementedError()
19
+
20
+ return model
21
+
22
+
23
+ class AlignTransformer(PreTrainedModel):
24
+ def __init__(self, config: AlignLayerConfig):
25
+ super().__init__(config)
26
+
27
+ self.linear = nn.Linear(config.input_dim, config.hidden_size)
28
+
29
+ if config.num_hidden_layers:
30
+ self.transformer_layers = Dinov2Encoder(config)
31
+ else:
32
+ self.transformer_layers = None
33
+
34
+ if config.use_layer_norm:
35
+ self.layer_norm = nn.LayerNorm(config.hidden_size)
36
+ else:
37
+ self.layer_norm = None
38
+
39
+ def forward(self, vision_tokens):
40
+ if self.transformer_layers is not None:
41
+ vision_tokens = self.linear(vision_tokens)
42
+ vision_tokens = self.transformer_layers(vision_tokens)["last_hidden_state"]
43
+
44
+ if self.layer_norm is not None:
45
+ vision_tokens = self.layer_norm(vision_tokens)
46
+
47
+ return vision_tokens
48
+
49
+
50
+ class Identity(nn.Module):
51
+ def __init__(self):
52
+ super().__init__()
53
+
54
+ def forward(self, x):
55
+ return x
56
+
57
+
58
+ class Linear(nn.Module):
59
+ def __init__(self, config):
60
+ super().__init__()
61
+ self.config = config
62
+ self.linear = nn.Linear(config.input_dim, config.hidden_size)
63
+
64
+ def forward(self, x):
65
+ return self.linear(x)
66
+
67
+
68
+ class MLP(nn.Module):
69
+ def __init__(self, config):
70
+ super().__init__()
71
+ self.config = config
72
+ self.mlp_layer = nn.Sequential(
73
+ nn.Linear(config.input_dim, config.input_dim),
74
+ nn.ReLU(inplace=True),
75
+ nn.Dropout(config.dropout),
76
+ nn.Linear(config.input_dim, config.input_dim),
77
+ nn.ReLU(inplace=True),
78
+ nn.Dropout(config.dropout),
79
+ nn.Linear(config.input_dim, config.hidden_size),
80
+ )
81
+
82
+ def forward(self, x):
83
+ return self.mlp_layer(x)
common_layers.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from torch import nn
2
+ from transformers.modeling_utils import PreTrainedModel
3
+
4
+
5
+ class BasePreTrainedModel(PreTrainedModel):
6
+ supports_gradient_checkpointing = True
7
+
8
+ def _init_weights(self, module):
9
+ if (
10
+ isinstance(module, nn.Conv2d) # noqa: SIM101
11
+ or isinstance(module, nn.Embedding)
12
+ or isinstance(module, nn.Linear)
13
+ ):
14
+ module.weight.data.normal_(mean=0.0, std=0.02)
15
+ if hasattr(module, "bias") and module.bias is not None:
16
+ module.bias.data.zero_()
17
+
18
+ elif isinstance(module, nn.LayerNorm):
19
+ module.bias.data.zero_()
20
+ module.weight.data.fill_(1.0)
21
+ elif isinstance(module, nn.Parameter):
22
+ raise ValueError()
config.json ADDED
@@ -0,0 +1,408 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "align_layer_config": {
3
+ "_name_or_path": "",
4
+ "add_cross_attention": false,
5
+ "architectures": null,
6
+ "bad_words_ids": null,
7
+ "begin_suppress_tokens": null,
8
+ "bos_token_id": null,
9
+ "chunk_size_feed_forward": 0,
10
+ "cross_attention_hidden_size": null,
11
+ "decoder_start_token_id": null,
12
+ "diversity_penalty": 0.0,
13
+ "do_sample": false,
14
+ "dtype": null,
15
+ "early_stopping": false,
16
+ "encoder_no_repeat_ngram_size": 0,
17
+ "eos_token_id": null,
18
+ "exponential_decay_length_penalty": null,
19
+ "finetuning_task": null,
20
+ "forced_bos_token_id": null,
21
+ "forced_eos_token_id": null,
22
+ "hidden_size": 768,
23
+ "id2label": {
24
+ "0": "LABEL_0",
25
+ "1": "LABEL_1"
26
+ },
27
+ "input_dim": 1024,
28
+ "is_decoder": false,
29
+ "is_encoder_decoder": false,
30
+ "label2id": {
31
+ "LABEL_0": 0,
32
+ "LABEL_1": 1
33
+ },
34
+ "length_penalty": 1.0,
35
+ "max_length": 20,
36
+ "min_length": 0,
37
+ "model_type": "linear",
38
+ "no_repeat_ngram_size": 0,
39
+ "num_beam_groups": 1,
40
+ "num_beams": 1,
41
+ "num_return_sequences": 1,
42
+ "output_attentions": false,
43
+ "output_hidden_states": false,
44
+ "output_scores": false,
45
+ "pad_token_id": null,
46
+ "prefix": null,
47
+ "problem_type": null,
48
+ "projector_config": null,
49
+ "pruned_heads": {},
50
+ "remove_invalid_values": false,
51
+ "repetition_penalty": 1.0,
52
+ "return_dict": true,
53
+ "return_dict_in_generate": false,
54
+ "sep_token_id": null,
55
+ "suppress_tokens": null,
56
+ "task_specific_params": null,
57
+ "temperature": 1.0,
58
+ "tf_legacy_loss": false,
59
+ "tie_encoder_decoder": false,
60
+ "tie_word_embeddings": true,
61
+ "tokenizer_class": null,
62
+ "top_k": 50,
63
+ "top_p": 1.0,
64
+ "torchscript": false,
65
+ "typical_p": 1.0,
66
+ "use_bfloat16": false
67
+ },
68
+ "architectures": [
69
+ "GLINTModel"
70
+ ],
71
+ "auto_map": {
72
+ "AutoConfig": "configuration_glint.GLINTConfig",
73
+ "AutoModel": "modeling_glint.GLINTModel"
74
+ },
75
+ "can_return_loss": true,
76
+ "compute_logits_type": "vl_alignment",
77
+ "dfr_config": {
78
+ "_name_or_path": "",
79
+ "add_cross_attention": false,
80
+ "architectures": null,
81
+ "bad_words_ids": null,
82
+ "begin_suppress_tokens": null,
83
+ "bos_token_id": null,
84
+ "chunk_size_feed_forward": 0,
85
+ "cross_attention_hidden_size": null,
86
+ "decoder_start_token_id": null,
87
+ "diversity_penalty": 0.0,
88
+ "do_sample": false,
89
+ "dtype": null,
90
+ "early_stopping": false,
91
+ "encoder_no_repeat_ngram_size": 0,
92
+ "eos_token_id": null,
93
+ "exponential_decay_length_penalty": null,
94
+ "finetuning_task": null,
95
+ "forced_bos_token_id": null,
96
+ "forced_eos_token_id": null,
97
+ "id2label": {
98
+ "0": "LABEL_0",
99
+ "1": "LABEL_1"
100
+ },
101
+ "is_decoder": false,
102
+ "is_encoder_decoder": false,
103
+ "label2id": {
104
+ "LABEL_0": 0,
105
+ "LABEL_1": 1
106
+ },
107
+ "layer_mapping": {
108
+ "student_layers": [
109
+ 22
110
+ ],
111
+ "teacher_layers": [
112
+ 44
113
+ ],
114
+ "use_multiple_projectors": true
115
+ },
116
+ "length_penalty": 1.0,
117
+ "max_length": 20,
118
+ "min_length": 0,
119
+ "model_type": "",
120
+ "no_repeat_ngram_size": 0,
121
+ "num_beam_groups": 1,
122
+ "num_beams": 1,
123
+ "num_return_sequences": 1,
124
+ "output_attentions": false,
125
+ "output_hidden_states": false,
126
+ "output_scores": false,
127
+ "pad_token_id": null,
128
+ "prefix": null,
129
+ "problem_type": null,
130
+ "projector_config": {
131
+ "_name_or_path": "",
132
+ "activation": "silu",
133
+ "add_cross_attention": false,
134
+ "architectures": null,
135
+ "bad_words_ids": null,
136
+ "begin_suppress_tokens": null,
137
+ "bos_token_id": null,
138
+ "chunk_size_feed_forward": 0,
139
+ "cross_attention_hidden_size": null,
140
+ "decoder_start_token_id": null,
141
+ "diversity_penalty": 0.0,
142
+ "do_sample": false,
143
+ "dropout": 0.0,
144
+ "dtype": null,
145
+ "early_stopping": false,
146
+ "encoder_no_repeat_ngram_size": 0,
147
+ "eos_token_id": null,
148
+ "exponential_decay_length_penalty": null,
149
+ "finetuning_task": null,
150
+ "forced_bos_token_id": null,
151
+ "forced_eos_token_id": null,
152
+ "hidden_dim": 2048,
153
+ "id2label": {
154
+ "0": "LABEL_0",
155
+ "1": "LABEL_1"
156
+ },
157
+ "input_dim": 1024,
158
+ "is_decoder": false,
159
+ "is_encoder_decoder": false,
160
+ "label2id": {
161
+ "LABEL_0": 0,
162
+ "LABEL_1": 1
163
+ },
164
+ "length_penalty": 1.0,
165
+ "max_length": 20,
166
+ "min_length": 0,
167
+ "model_type": "mlp",
168
+ "no_repeat_ngram_size": 0,
169
+ "num_beam_groups": 1,
170
+ "num_beams": 1,
171
+ "num_layers": 3,
172
+ "num_return_sequences": 1,
173
+ "out_dim": 1664,
174
+ "output_attentions": false,
175
+ "output_hidden_states": false,
176
+ "output_scores": false,
177
+ "pad_token_id": null,
178
+ "prefix": null,
179
+ "problem_type": null,
180
+ "pruned_heads": {},
181
+ "remove_invalid_values": false,
182
+ "repetition_penalty": 1.0,
183
+ "return_dict": true,
184
+ "return_dict_in_generate": false,
185
+ "sep_token_id": null,
186
+ "suppress_tokens": null,
187
+ "task_specific_params": null,
188
+ "temperature": 1.0,
189
+ "tf_legacy_loss": false,
190
+ "tie_encoder_decoder": false,
191
+ "tie_word_embeddings": true,
192
+ "tokenizer_class": null,
193
+ "top_k": 50,
194
+ "top_p": 1.0,
195
+ "torchscript": false,
196
+ "typical_p": 1.0,
197
+ "use_bfloat16": false
198
+ },
199
+ "pruned_heads": {},
200
+ "remove_invalid_values": false,
201
+ "repetition_penalty": 1.0,
202
+ "return_dict": true,
203
+ "return_dict_in_generate": false,
204
+ "sep_token_id": null,
205
+ "suppress_tokens": null,
206
+ "task_specific_params": null,
207
+ "temperature": 1.0,
208
+ "tf_legacy_loss": false,
209
+ "tie_encoder_decoder": false,
210
+ "tie_word_embeddings": true,
211
+ "tokenizer_class": null,
212
+ "top_k": 50,
213
+ "top_p": 1.0,
214
+ "torchscript": false,
215
+ "typical_p": 1.0,
216
+ "use_bfloat16": false,
217
+ "use_cache": true,
218
+ "vfm_teacher_config": null
219
+ },
220
+ "dtype": "float32",
221
+ "loss": {
222
+ "AlignmentLoss": {
223
+ "local_loss": true,
224
+ "loss_kwargs": {
225
+ "temperature": 0.07
226
+ },
227
+ "loss_type": "mpnce",
228
+ "rank": 0,
229
+ "vl_logit_kwargs": {
230
+ "embed_dim": 768,
231
+ "gate_hidden_dim": 768,
232
+ "gate_log_temperature": 2.302585,
233
+ "gate_proj_mode": "mlp",
234
+ "sem_hidden_dim": 768,
235
+ "sem_proj_mode": "identity"
236
+ },
237
+ "vl_logit_type": "gate_confidence_shift",
238
+ "world_size": 1
239
+ },
240
+ "DFRLoss": {
241
+ "rank": 0,
242
+ "use_token_wise": true,
243
+ "world_size": 1
244
+ },
245
+ "apply": [
246
+ "AlignmentLoss",
247
+ "DFRLoss"
248
+ ],
249
+ "ratio": [
250
+ 1.0,
251
+ 8.0
252
+ ]
253
+ },
254
+ "text_config": {
255
+ "_name_or_path": "sentence-transformers/all-mpnet-base-v2",
256
+ "add_cross_attention": false,
257
+ "architectures": [
258
+ "MPNetForMaskedLM"
259
+ ],
260
+ "attention_probs_dropout_prob": 0.1,
261
+ "bad_words_ids": null,
262
+ "begin_suppress_tokens": null,
263
+ "bos_token_id": 0,
264
+ "chunk_size_feed_forward": 0,
265
+ "cross_attention_hidden_size": null,
266
+ "decoder_start_token_id": null,
267
+ "diversity_penalty": 0.0,
268
+ "do_sample": false,
269
+ "dtype": null,
270
+ "early_stopping": false,
271
+ "encoder_no_repeat_ngram_size": 0,
272
+ "eos_token_id": 2,
273
+ "exponential_decay_length_penalty": null,
274
+ "finetuning_task": null,
275
+ "forced_bos_token_id": null,
276
+ "forced_eos_token_id": null,
277
+ "hidden_act": "gelu",
278
+ "hidden_dropout_prob": 0.1,
279
+ "hidden_size": 768,
280
+ "id2label": {
281
+ "0": "LABEL_0",
282
+ "1": "LABEL_1"
283
+ },
284
+ "initializer_range": 0.02,
285
+ "intermediate_size": 3072,
286
+ "is_decoder": false,
287
+ "is_encoder_decoder": false,
288
+ "label2id": {
289
+ "LABEL_0": 0,
290
+ "LABEL_1": 1
291
+ },
292
+ "layer_norm_eps": 1e-05,
293
+ "length_penalty": 1.0,
294
+ "max_length": 20,
295
+ "max_position_embeddings": 514,
296
+ "min_length": 0,
297
+ "model_type": "mpnet",
298
+ "no_repeat_ngram_size": 0,
299
+ "num_attention_heads": 12,
300
+ "num_beam_groups": 1,
301
+ "num_beams": 1,
302
+ "num_hidden_layers": 12,
303
+ "num_return_sequences": 1,
304
+ "output_attentions": false,
305
+ "output_hidden_states": false,
306
+ "output_scores": false,
307
+ "pad_token_id": 1,
308
+ "prefix": null,
309
+ "problem_type": null,
310
+ "pruned_heads": {},
311
+ "relative_attention_num_buckets": 32,
312
+ "remove_invalid_values": false,
313
+ "repetition_penalty": 1.0,
314
+ "return_dict": true,
315
+ "return_dict_in_generate": false,
316
+ "sep_token_id": null,
317
+ "suppress_tokens": null,
318
+ "task_specific_params": null,
319
+ "temperature": 1.0,
320
+ "tf_legacy_loss": false,
321
+ "tie_encoder_decoder": false,
322
+ "tie_word_embeddings": true,
323
+ "tokenizer_class": null,
324
+ "top_k": 50,
325
+ "top_p": 1.0,
326
+ "torchscript": false,
327
+ "typical_p": 1.0,
328
+ "use_bfloat16": false,
329
+ "use_cls_token": false,
330
+ "vocab_size": 30527
331
+ },
332
+ "transformers_version": "4.56.1",
333
+ "use_text_layer_norm": true,
334
+ "use_vision_layer_norm": true,
335
+ "vision_config": {
336
+ "_name_or_path": "",
337
+ "add_cross_attention": false,
338
+ "arch": "vjepa2_1_vit_large_384",
339
+ "architectures": null,
340
+ "bad_words_ids": null,
341
+ "begin_suppress_tokens": null,
342
+ "bos_token_id": null,
343
+ "chunk_size_feed_forward": 0,
344
+ "cross_attention_hidden_size": null,
345
+ "decoder_start_token_id": null,
346
+ "diversity_penalty": 0.0,
347
+ "do_sample": false,
348
+ "dtype": null,
349
+ "early_stopping": false,
350
+ "encoder_no_repeat_ngram_size": 0,
351
+ "eos_token_id": null,
352
+ "exponential_decay_length_penalty": null,
353
+ "finetuning_task": null,
354
+ "forced_bos_token_id": null,
355
+ "forced_eos_token_id": null,
356
+ "hidden_size": 1024,
357
+ "id2label": {
358
+ "0": "LABEL_0",
359
+ "1": "LABEL_1"
360
+ },
361
+ "img_size": 384,
362
+ "input_modality": 3,
363
+ "input_slices": 240,
364
+ "is_decoder": false,
365
+ "is_encoder_decoder": false,
366
+ "label2id": {
367
+ "LABEL_0": 0,
368
+ "LABEL_1": 1
369
+ },
370
+ "length_penalty": 1.0,
371
+ "max_length": 20,
372
+ "min_length": 0,
373
+ "model_type": "vjepa2.1",
374
+ "no_repeat_ngram_size": 0,
375
+ "num_beam_groups": 1,
376
+ "num_beams": 1,
377
+ "num_channels": 3,
378
+ "num_frames": 80,
379
+ "num_return_sequences": 1,
380
+ "output_attentions": false,
381
+ "output_hidden_states": false,
382
+ "output_scores": false,
383
+ "pad_token_id": null,
384
+ "prefix": null,
385
+ "pretrained_checkpoint": null,
386
+ "problem_type": null,
387
+ "pruned_heads": {},
388
+ "remove_invalid_values": false,
389
+ "repetition_penalty": 1.0,
390
+ "return_dict": true,
391
+ "return_dict_in_generate": false,
392
+ "sep_token_id": null,
393
+ "suppress_tokens": null,
394
+ "task_specific_params": null,
395
+ "temperature": 1.0,
396
+ "tf_legacy_loss": false,
397
+ "tie_encoder_decoder": false,
398
+ "tie_word_embeddings": true,
399
+ "tokenizer_class": null,
400
+ "top_k": 50,
401
+ "top_p": 1.0,
402
+ "torchscript": false,
403
+ "typical_p": 1.0,
404
+ "use_bfloat16": false,
405
+ "use_hierarchical": false
406
+ },
407
+ "vision_only": false
408
+ }
configuration_glint.py ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers.configuration_utils import PretrainedConfig
2
+
3
+
4
+ class SubConfig(PretrainedConfig):
5
+ # PretrainedConfig.to_dict() emits the class-level model_type (""), breaking save/load round-trips
6
+ def to_dict(self):
7
+ output = super().to_dict()
8
+ output["model_type"] = self.model_type
9
+ return output
10
+
11
+
12
+ class VisionConfig(SubConfig):
13
+ def __init__(
14
+ self,
15
+ **kwargs,
16
+ ):
17
+ super().__init__(**kwargs)
18
+
19
+ @staticmethod
20
+ def from_exp_config(vision_config: dict):
21
+ model_type = vision_config["model_type"]
22
+
23
+ if model_type == "vjepa2.1":
24
+ from .vjepa21_encoder import ARCH_MAP, VIT_EMBED_DIMS
25
+
26
+ arch = vision_config.get("arch", "vjepa2_1_vit_large_384")
27
+ factory_name = ARCH_MAP[arch][0].__name__
28
+ embed_dim = VIT_EMBED_DIMS.get(factory_name, 1024)
29
+ use_hierarchical = vision_config.get("use_hierarchical", False)
30
+ n_levels = ARCH_MAP[arch][1]
31
+ vision_config["hidden_size"] = embed_dim * n_levels if use_hierarchical else embed_dim
32
+ elif model_type not in ["vjepa2", "dinov2", "dinov3_vit"]:
33
+ raise NotImplementedError()
34
+
35
+ vision_config = VisionConfig(**vision_config)
36
+
37
+ return vision_config
38
+
39
+
40
+ class TextConfig(SubConfig):
41
+ def __init__(
42
+ self,
43
+ model_type,
44
+ **kwargs,
45
+ ):
46
+ super().__init__(**kwargs)
47
+ self.model_type = model_type
48
+
49
+ @staticmethod
50
+ def from_exp_config(
51
+ text_config: dict,
52
+ ):
53
+ if text_config["model_type"] not in ["mpnet", "modernbert", "cxr-bert"]:
54
+ raise NotImplementedError()
55
+
56
+ return TextConfig(**text_config)
57
+
58
+
59
+ class AlignLayerConfig(SubConfig):
60
+ def __init__(
61
+ self,
62
+ model_type: str = "align_transformer",
63
+ projector_config=None,
64
+ **kwargs,
65
+ ):
66
+ super().__init__(**kwargs)
67
+ self.model_type = model_type
68
+ self.projector_config = projector_config
69
+
70
+ @staticmethod
71
+ def from_exp_config(
72
+ align_layer_config: dict,
73
+ ):
74
+ if align_layer_config["model_type"] == "align_transformer":
75
+ from transformers.models.dinov2.configuration_dinov2 import Dinov2Config
76
+
77
+ config = Dinov2Config(**align_layer_config)
78
+ config = config.to_dict()
79
+ align_layer_config.update(config)
80
+ align_layer_config["model_type"] = "align_transformer"
81
+
82
+ align_layer_config = AlignLayerConfig(
83
+ **align_layer_config,
84
+ )
85
+
86
+ return align_layer_config
87
+
88
+
89
+ class ProjectorConfig(SubConfig):
90
+ def __init__(self, **kwargs):
91
+ super().__init__(**kwargs)
92
+
93
+
94
+ class DFRConfig(SubConfig):
95
+ def __init__(
96
+ self,
97
+ vfm_teacher_config: dict = None,
98
+ projector_config: dict = None,
99
+ layer_mapping: dict = None,
100
+ **kwargs,
101
+ ):
102
+ super().__init__(**kwargs)
103
+ self.vfm_teacher_config = vfm_teacher_config
104
+ self.projector_config = projector_config
105
+ self.layer_mapping = layer_mapping
106
+
107
+ @staticmethod
108
+ def from_exp_config(dfr_config: dict):
109
+ if "vfm_teacher_config" in dfr_config and dfr_config["vfm_teacher_config"] is not None:
110
+ dfr_config["vfm_teacher_config"] = VisionConfig.from_exp_config(dfr_config["vfm_teacher_config"])
111
+
112
+ if "projector_config" in dfr_config and dfr_config["projector_config"] is not None:
113
+ dfr_config["projector_config"] = ProjectorConfig(**dfr_config["projector_config"])
114
+
115
+ return DFRConfig(**dfr_config)
116
+
117
+
118
+ class GLINTConfig(PretrainedConfig):
119
+ is_composition = True
120
+
121
+ def __init__(
122
+ self,
123
+ vision_config: dict = None,
124
+ text_config: dict = None,
125
+ align_layer_config: dict = None,
126
+ predictor_config: dict = None,
127
+ prototype_head_config: dict = None,
128
+ dfr_config: dict = None,
129
+ vision_only: bool = False,
130
+ **kwargs,
131
+ ):
132
+ super().__init__(**kwargs)
133
+ self.vision_only = vision_only
134
+
135
+ if vision_config is not None:
136
+ pretrained_dir = kwargs.get("pretrained_dir")
137
+ if pretrained_dir and "pretrained_dir" not in vision_config:
138
+ vision_config["pretrained_dir"] = pretrained_dir
139
+ self.vision_config = VisionConfig.from_exp_config(vision_config)
140
+
141
+ if text_config is not None:
142
+ self.text_config = TextConfig.from_exp_config(text_config)
143
+
144
+ if align_layer_config is not None:
145
+ self.align_layer_config = AlignLayerConfig.from_exp_config(align_layer_config)
146
+
147
+ if dfr_config is not None:
148
+ pretrained_dir = kwargs.get("pretrained_dir")
149
+ teacher = dfr_config.get("vfm_teacher_config")
150
+ if pretrained_dir and teacher is not None:
151
+ teacher.setdefault("pretrained_dir", pretrained_dir)
152
+ self.dfr_config = DFRConfig.from_exp_config(dfr_config)
153
+
154
+ self.kwargs = kwargs
data/README.md ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Data splits (chest CT)
2
+
3
+ - Split ID lists; download each dataset from its source under its own terms.
4
+ - `val` is for model selection; `test` is official unless noted.
5
+
6
+ | Dataset | Files | ID format | Train / Val / Test | Notes |
7
+ |---|---|---|---|---|
8
+ | LIDC-IDRI | `splits/lidc_idri/` | `PatientID/StudyUID/SeriesUID` | 705 / 148 / 157 | Patient-disjoint |
9
+ | RSNA-PE | `splits/rsna_pe/` | `StudyUID/SeriesUID` | 4,983 / 1,062 / 1,060 | Study-level (Ke et al., MIDL 2024) |
10
+ | MSD-Lung | `splits/msd_lung/` | MSD case id | 44 / 6 / 13 | Holdout of 63 cases |
11
+ | NSCLC-Radiomics | `splits/nsclc_radiomics/` | `LUNG1-XXX` | 294 / 42 / 84 | LUNG1-035/128 excluded (corrupt) |
12
+ | CT-RATE | `splits/ct_rate/` | volume name | 43,400 / 2,994 / 3,002 | `test` = official validation (1,304 patients); `val` = 1,304 patients from the official train |
13
+
14
+ CT-RATE notes (the lists already exclude CT-RATE's non-chest volumes and 3 unreadable ones):
15
+ - **Pretraining:** also excludes `pretrain_exclusions.txt` (ReXGroundingCT overlap) and volumes with an empty report decomposition → 43,337 / 2,990 / 3,002.
16
+ - **Fine-tuning:** also excludes 11 unusable volumes (`ft/chest_ct/*/dataset/ct_rate.py`) → 43,390 / 2,993 / 3,002.
data/splits/ct_rate/pretrain_exclusions.txt ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ train_1267_a_4
2
+ train_11755_a_3
3
+ train_11755_a_4
4
+ train_13082_a_1
5
+ train_13591_a_1
6
+ train_13035_a_1
7
+ train_13177_a_2
8
+ train_13301_a_2
9
+ train_13583_d_2
10
+ train_13113_a_1
11
+ train_13256_b_2
12
+ train_13119_c_1
13
+ train_13492_b_2
14
+ train_13155_a_2
15
+ train_13417_d_1
16
+ train_13076_a_1
17
+ train_13102_a_1
18
+ train_13111_a_2
19
+ train_13075_a_2
20
+ train_13440_a_1
21
+ train_13624_a_2
22
+ train_13426_a_2
23
+ train_13013_a_1
24
+ train_13471_a_1
25
+ train_13141_a_1
26
+ train_13479_j_1
27
+ train_12991_a_1
28
+ train_13288_a_2
29
+ train_13447_a_1
30
+ train_13577_a_2
31
+ train_13430_a_2
32
+ train_13497_a_1
33
+ train_13292_a_2
34
+ train_13431_a_1
35
+ train_13020_a_2
36
+ train_13278_b_2
37
+ train_13252_b_2
38
+ train_13098_a_2
39
+ train_12994_a_1
40
+ train_13572_a_2
41
+ train_13166_a_2
42
+ train_13479_e_1
43
+ train_13481_a_2
44
+ train_13092_a_2
45
+ train_13631_a_1
46
+ train_13398_a_1
47
+ train_13189_a_1
48
+ train_13284_a_2
49
+ train_13148_a_2
50
+ train_13249_b_2
51
+ train_13444_a_2
52
+ train_13316_a_2
53
+ train_13339_a_1
data/splits/ct_rate/test.txt ADDED
@@ -0,0 +1,3002 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ valid_1_a_1
2
+ valid_1_a_2
3
+ valid_2_a_1
4
+ valid_2_a_2
5
+ valid_3_a_1
6
+ valid_3_a_2
7
+ valid_4_a_1
8
+ valid_4_a_2
9
+ valid_4_b_1
10
+ valid_4_b_2
11
+ valid_5_a_1
12
+ valid_5_a_2
13
+ valid_6_a_1
14
+ valid_6_a_2
15
+ valid_7_a_1
16
+ valid_7_a_2
17
+ valid_7_b_1
18
+ valid_7_b_2
19
+ valid_8_a_1
20
+ valid_8_a_2
21
+ valid_9_a_1
22
+ valid_9_a_2
23
+ valid_10_a_1
24
+ valid_10_a_2
25
+ valid_11_a_1
26
+ valid_11_a_2
27
+ valid_12_a_1
28
+ valid_12_a_2
29
+ valid_13_a_1
30
+ valid_13_a_2
31
+ valid_14_a_1
32
+ valid_14_a_2
33
+ valid_15_a_1
34
+ valid_15_a_2
35
+ valid_16_a_1
36
+ valid_16_a_2
37
+ valid_17_a_1
38
+ valid_17_a_2
39
+ valid_18_a_1
40
+ valid_18_a_2
41
+ valid_19_a_1
42
+ valid_20_a_1
43
+ valid_20_a_2
44
+ valid_20_b_1
45
+ valid_20_b_2
46
+ valid_21_a_1
47
+ valid_21_a_2
48
+ valid_22_a_1
49
+ valid_22_a_2
50
+ valid_23_a_1
51
+ valid_23_a_2
52
+ valid_24_a_1
53
+ valid_24_a_2
54
+ valid_25_a_1
55
+ valid_25_a_2
56
+ valid_26_a_1
57
+ valid_26_a_2
58
+ valid_27_a_1
59
+ valid_27_a_2
60
+ valid_27_b_1
61
+ valid_27_b_2
62
+ valid_28_a_1
63
+ valid_28_a_2
64
+ valid_29_a_1
65
+ valid_29_a_2
66
+ valid_30_a_1
67
+ valid_31_a_1
68
+ valid_31_a_2
69
+ valid_32_a_1
70
+ valid_33_a_1
71
+ valid_33_a_2
72
+ valid_34_a_1
73
+ valid_34_a_2
74
+ valid_35_a_1
75
+ valid_35_a_2
76
+ valid_36_a_1
77
+ valid_37_a_1
78
+ valid_38_a_1
79
+ valid_38_a_2
80
+ valid_39_a_1
81
+ valid_39_a_2
82
+ valid_40_a_1
83
+ valid_40_a_2
84
+ valid_41_a_1
85
+ valid_41_a_2
86
+ valid_41_b_1
87
+ valid_41_b_2
88
+ valid_42_a_1
89
+ valid_43_a_1
90
+ valid_43_a_2
91
+ valid_44_a_1
92
+ valid_44_a_2
93
+ valid_45_a_1
94
+ valid_45_a_2
95
+ valid_46_a_1
96
+ valid_46_a_2
97
+ valid_47_a_1
98
+ valid_47_a_2
99
+ valid_48_a_1
100
+ valid_48_a_2
101
+ valid_49_a_1
102
+ valid_49_a_2
103
+ valid_50_a_1
104
+ valid_50_a_2
105
+ valid_51_a_1
106
+ valid_51_a_2
107
+ valid_52_a_1
108
+ valid_52_a_2
109
+ valid_53_a_1
110
+ valid_53_a_2
111
+ valid_53_b_1
112
+ valid_53_b_2
113
+ valid_54_a_1
114
+ valid_54_a_2
115
+ valid_55_a_1
116
+ valid_55_a_2
117
+ valid_56_a_1
118
+ valid_56_a_2
119
+ valid_57_a_1
120
+ valid_57_a_2
121
+ valid_58_a_1
122
+ valid_58_a_2
123
+ valid_59_a_1
124
+ valid_59_a_2
125
+ valid_60_a_1
126
+ valid_60_a_2
127
+ valid_60_b_1
128
+ valid_60_b_2
129
+ valid_60_c_1
130
+ valid_60_c_2
131
+ valid_61_a_1
132
+ valid_61_a_2
133
+ valid_62_a_1
134
+ valid_62_a_2
135
+ valid_62_b_1
136
+ valid_62_b_2
137
+ valid_62_c_1
138
+ valid_62_c_2
139
+ valid_63_a_1
140
+ valid_63_a_2
141
+ valid_63_b_1
142
+ valid_63_b_2
143
+ valid_64_a_1
144
+ valid_64_a_2
145
+ valid_64_a_3
146
+ valid_64_b_1
147
+ valid_64_b_2
148
+ valid_64_c_1
149
+ valid_64_c_2
150
+ valid_65_a_1
151
+ valid_66_a_1
152
+ valid_67_a_1
153
+ valid_68_a_1
154
+ valid_69_a_1
155
+ valid_69_a_2
156
+ valid_70_a_1
157
+ valid_70_a_2
158
+ valid_71_a_1
159
+ valid_71_a_2
160
+ valid_71_b_1
161
+ valid_71_b_2
162
+ valid_72_a_1
163
+ valid_72_a_2
164
+ valid_73_a_1
165
+ valid_73_a_2
166
+ valid_74_a_1
167
+ valid_74_a_2
168
+ valid_75_a_1
169
+ valid_75_a_2
170
+ valid_76_a_1
171
+ valid_77_a_1
172
+ valid_77_a_2
173
+ valid_78_a_1
174
+ valid_78_a_2
175
+ valid_79_a_1
176
+ valid_79_a_2
177
+ valid_80_a_1
178
+ valid_80_a_2
179
+ valid_81_a_1
180
+ valid_81_a_2
181
+ valid_82_a_1
182
+ valid_82_a_2
183
+ valid_83_a_1
184
+ valid_83_a_2
185
+ valid_84_a_1
186
+ valid_84_a_2
187
+ valid_85_a_1
188
+ valid_85_a_2
189
+ valid_86_a_1
190
+ valid_86_a_2
191
+ valid_87_a_1
192
+ valid_87_a_2
193
+ valid_88_a_1
194
+ valid_88_a_2
195
+ valid_89_a_1
196
+ valid_89_a_2
197
+ valid_90_a_1
198
+ valid_90_a_2
199
+ valid_90_b_1
200
+ valid_90_b_2
201
+ valid_90_c_1
202
+ valid_90_c_2
203
+ valid_91_a_1
204
+ valid_91_a_2
205
+ valid_92_a_1
206
+ valid_92_a_2
207
+ valid_93_a_1
208
+ valid_93_a_2
209
+ valid_94_a_1
210
+ valid_94_a_2
211
+ valid_95_a_1
212
+ valid_95_a_2
213
+ valid_96_a_1
214
+ valid_96_a_2
215
+ valid_96_b_1
216
+ valid_96_b_2
217
+ valid_97_a_1
218
+ valid_97_a_2
219
+ valid_98_a_1
220
+ valid_98_a_2
221
+ valid_99_a_1
222
+ valid_99_a_2
223
+ valid_100_a_1
224
+ valid_100_a_2
225
+ valid_101_a_1
226
+ valid_101_b_1
227
+ valid_101_b_2
228
+ valid_102_a_1
229
+ valid_102_a_2
230
+ valid_103_a_1
231
+ valid_103_a_2
232
+ valid_104_a_1
233
+ valid_104_a_2
234
+ valid_105_a_1
235
+ valid_105_a_2
236
+ valid_106_a_1
237
+ valid_106_a_2
238
+ valid_106_a_3
239
+ valid_106_a_4
240
+ valid_107_a_1
241
+ valid_107_a_2
242
+ valid_107_b_1
243
+ valid_107_b_2
244
+ valid_108_a_1
245
+ valid_108_a_2
246
+ valid_109_a_3
247
+ valid_109_a_5
248
+ valid_110_a_1
249
+ valid_111_a_1
250
+ valid_111_a_2
251
+ valid_112_a_1
252
+ valid_112_a_2
253
+ valid_113_a_1
254
+ valid_113_a_2
255
+ valid_114_a_1
256
+ valid_114_a_2
257
+ valid_114_b_1
258
+ valid_114_b_2
259
+ valid_115_a_1
260
+ valid_115_a_2
261
+ valid_116_a_1
262
+ valid_116_a_2
263
+ valid_117_a_1
264
+ valid_117_a_2
265
+ valid_117_b_1
266
+ valid_117_b_2
267
+ valid_118_a_1
268
+ valid_118_a_2
269
+ valid_118_b_1
270
+ valid_118_b_2
271
+ valid_118_c_1
272
+ valid_118_c_2
273
+ valid_118_d_1
274
+ valid_118_d_2
275
+ valid_119_a_1
276
+ valid_119_a_2
277
+ valid_120_a_1
278
+ valid_120_a_2
279
+ valid_121_a_1
280
+ valid_121_a_2
281
+ valid_122_a_1
282
+ valid_122_a_2
283
+ valid_123_a_1
284
+ valid_123_a_2
285
+ valid_124_a_1
286
+ valid_124_a_2
287
+ valid_125_a_1
288
+ valid_125_a_2
289
+ valid_126_a_1
290
+ valid_126_a_2
291
+ valid_127_a_1
292
+ valid_127_a_2
293
+ valid_128_a_1
294
+ valid_128_a_2
295
+ valid_129_a_1
296
+ valid_130_a_1
297
+ valid_130_a_2
298
+ valid_131_a_1
299
+ valid_131_a_2
300
+ valid_132_a_1
301
+ valid_132_a_2
302
+ valid_133_a_1
303
+ valid_133_a_2
304
+ valid_134_a_1
305
+ valid_134_a_2
306
+ valid_135_a_1
307
+ valid_135_a_2
308
+ valid_136_a_1
309
+ valid_136_a_2
310
+ valid_137_a_1
311
+ valid_137_a_2
312
+ valid_138_a_1
313
+ valid_138_a_2
314
+ valid_139_a_1
315
+ valid_139_a_2
316
+ valid_140_a_1
317
+ valid_140_a_2
318
+ valid_141_a_1
319
+ valid_141_a_2
320
+ valid_142_a_1
321
+ valid_143_a_1
322
+ valid_143_a_2
323
+ valid_144_a_1
324
+ valid_145_a_1
325
+ valid_145_a_2
326
+ valid_146_a_1
327
+ valid_146_a_2
328
+ valid_147_a_1
329
+ valid_147_a_2
330
+ valid_148_a_1
331
+ valid_148_a_2
332
+ valid_149_a_1
333
+ valid_149_a_2
334
+ valid_150_a_1
335
+ valid_150_a_2
336
+ valid_151_a_1
337
+ valid_151_a_2
338
+ valid_151_b_1
339
+ valid_151_b_2
340
+ valid_151_c_1
341
+ valid_151_c_2
342
+ valid_152_a_1
343
+ valid_153_a_1
344
+ valid_153_a_2
345
+ valid_154_a_1
346
+ valid_154_a_2
347
+ valid_155_a_1
348
+ valid_155_a_2
349
+ valid_156_a_1
350
+ valid_156_a_2
351
+ valid_157_a_1
352
+ valid_157_a_2
353
+ valid_158_a_1
354
+ valid_158_a_2
355
+ valid_159_a_1
356
+ valid_159_a_2
357
+ valid_160_a_1
358
+ valid_160_a_2
359
+ valid_161_a_1
360
+ valid_161_a_2
361
+ valid_162_a_1
362
+ valid_162_a_2
363
+ valid_162_b_1
364
+ valid_162_b_2
365
+ valid_163_a_1
366
+ valid_163_a_2
367
+ valid_163_b_1
368
+ valid_163_b_2
369
+ valid_163_c_1
370
+ valid_163_c_2
371
+ valid_163_d_1
372
+ valid_163_d_2
373
+ valid_164_a_1
374
+ valid_164_a_2
375
+ valid_165_a_1
376
+ valid_165_a_2
377
+ valid_166_a_1
378
+ valid_166_a_2
379
+ valid_167_a_1
380
+ valid_167_a_2
381
+ valid_168_a_1
382
+ valid_168_a_2
383
+ valid_168_b_1
384
+ valid_168_b_2
385
+ valid_169_a_1
386
+ valid_169_a_2
387
+ valid_170_a_1
388
+ valid_170_a_2
389
+ valid_170_b_1
390
+ valid_170_b_2
391
+ valid_171_a_1
392
+ valid_171_a_2
393
+ valid_172_a_1
394
+ valid_172_a_2
395
+ valid_173_a_1
396
+ valid_173_a_2
397
+ valid_174_a_1
398
+ valid_174_a_2
399
+ valid_175_a_1
400
+ valid_175_a_2
401
+ valid_176_a_1
402
+ valid_176_a_2
403
+ valid_177_a_1
404
+ valid_177_a_2
405
+ valid_178_a_1
406
+ valid_178_a_2
407
+ valid_179_a_1
408
+ valid_179_a_2
409
+ valid_180_a_1
410
+ valid_180_a_2
411
+ valid_180_b_1
412
+ valid_180_b_2
413
+ valid_181_a_1
414
+ valid_181_a_2
415
+ valid_182_a_1
416
+ valid_182_a_2
417
+ valid_183_a_1
418
+ valid_183_a_2
419
+ valid_184_a_1
420
+ valid_184_a_2
421
+ valid_185_a_1
422
+ valid_185_a_2
423
+ valid_186_a_1
424
+ valid_186_a_2
425
+ valid_187_a_1
426
+ valid_187_a_2
427
+ valid_188_a_1
428
+ valid_188_a_2
429
+ valid_188_b_1
430
+ valid_188_b_2
431
+ valid_189_a_1
432
+ valid_189_a_2
433
+ valid_190_a_1
434
+ valid_190_a_2
435
+ valid_191_a_1
436
+ valid_191_a_2
437
+ valid_191_b_1
438
+ valid_191_b_2
439
+ valid_192_a_1
440
+ valid_192_a_2
441
+ valid_193_a_1
442
+ valid_193_a_2
443
+ valid_194_a_1
444
+ valid_194_a_2
445
+ valid_194_b_1
446
+ valid_194_b_2
447
+ valid_195_a_1
448
+ valid_195_a_2
449
+ valid_196_a_1
450
+ valid_196_a_2
451
+ valid_197_a_1
452
+ valid_197_a_2
453
+ valid_198_a_1
454
+ valid_198_a_2
455
+ valid_199_a_1
456
+ valid_199_a_2
457
+ valid_200_a_1
458
+ valid_200_a_2
459
+ valid_201_a_1
460
+ valid_201_a_2
461
+ valid_202_a_1
462
+ valid_202_a_2
463
+ valid_202_b_1
464
+ valid_202_b_2
465
+ valid_203_a_1
466
+ valid_203_a_2
467
+ valid_204_a_1
468
+ valid_204_a_2
469
+ valid_205_a_1
470
+ valid_205_a_2
471
+ valid_206_a_1
472
+ valid_206_a_2
473
+ valid_207_a_1
474
+ valid_207_a_2
475
+ valid_208_a_3
476
+ valid_208_a_5
477
+ valid_209_a_1
478
+ valid_209_a_2
479
+ valid_210_a_1
480
+ valid_210_a_2
481
+ valid_210_b_1
482
+ valid_211_a_1
483
+ valid_211_a_2
484
+ valid_212_a_1
485
+ valid_212_a_2
486
+ valid_212_b_1
487
+ valid_212_b_2
488
+ valid_213_a_1
489
+ valid_213_a_2
490
+ valid_214_a_1
491
+ valid_214_a_2
492
+ valid_215_a_1
493
+ valid_215_a_2
494
+ valid_215_b_1
495
+ valid_215_b_2
496
+ valid_215_c_1
497
+ valid_215_c_2
498
+ valid_216_a_1
499
+ valid_216_a_2
500
+ valid_217_a_1
501
+ valid_217_a_2
502
+ valid_218_a_1
503
+ valid_218_a_2
504
+ valid_219_a_1
505
+ valid_219_a_2
506
+ valid_220_a_1
507
+ valid_220_a_2
508
+ valid_221_a_1
509
+ valid_221_a_2
510
+ valid_222_a_1
511
+ valid_222_a_2
512
+ valid_223_a_1
513
+ valid_223_a_2
514
+ valid_224_a_1
515
+ valid_224_a_2
516
+ valid_225_a_1
517
+ valid_225_a_2
518
+ valid_225_b_1
519
+ valid_225_b_2
520
+ valid_226_a_1
521
+ valid_226_a_2
522
+ valid_227_a_1
523
+ valid_227_a_2
524
+ valid_228_a_1
525
+ valid_229_a_1
526
+ valid_229_a_2
527
+ valid_229_b_1
528
+ valid_229_b_2
529
+ valid_230_a_1
530
+ valid_230_a_2
531
+ valid_231_a_1
532
+ valid_231_a_2
533
+ valid_232_a_1
534
+ valid_232_a_2
535
+ valid_233_a_1
536
+ valid_234_a_1
537
+ valid_234_a_2
538
+ valid_235_a_1
539
+ valid_236_a_1
540
+ valid_236_a_2
541
+ valid_237_a_1
542
+ valid_237_a_2
543
+ valid_238_a_1
544
+ valid_239_a_1
545
+ valid_239_a_2
546
+ valid_240_a_1
547
+ valid_240_a_2
548
+ valid_241_a_1
549
+ valid_241_a_2
550
+ valid_242_a_1
551
+ valid_242_a_2
552
+ valid_243_a_1
553
+ valid_243_a_2
554
+ valid_244_a_1
555
+ valid_244_a_2
556
+ valid_245_a_1
557
+ valid_245_a_2
558
+ valid_246_a_1
559
+ valid_246_a_2
560
+ valid_247_a_1
561
+ valid_247_a_2
562
+ valid_248_a_1
563
+ valid_248_a_2
564
+ valid_249_a_1
565
+ valid_249_a_2
566
+ valid_250_a_1
567
+ valid_250_a_2
568
+ valid_250_b_1
569
+ valid_250_b_2
570
+ valid_250_c_1
571
+ valid_250_c_2
572
+ valid_250_d_1
573
+ valid_250_d_2
574
+ valid_250_e_1
575
+ valid_250_e_2
576
+ valid_250_f_1
577
+ valid_250_f_2
578
+ valid_251_a_1
579
+ valid_251_a_2
580
+ valid_252_a_1
581
+ valid_252_a_2
582
+ valid_253_a_1
583
+ valid_254_a_1
584
+ valid_254_a_2
585
+ valid_255_a_1
586
+ valid_255_a_2
587
+ valid_256_a_1
588
+ valid_256_a_2
589
+ valid_257_a_3
590
+ valid_257_a_5
591
+ valid_258_a_1
592
+ valid_258_a_2
593
+ valid_258_b_1
594
+ valid_258_b_2
595
+ valid_258_c_1
596
+ valid_258_d_1
597
+ valid_258_d_2
598
+ valid_259_a_1
599
+ valid_259_a_2
600
+ valid_260_a_1
601
+ valid_260_a_2
602
+ valid_261_a_1
603
+ valid_261_a_2
604
+ valid_262_a_1
605
+ valid_262_a_2
606
+ valid_263_a_1
607
+ valid_263_a_2
608
+ valid_263_b_1
609
+ valid_263_b_2
610
+ valid_264_a_1
611
+ valid_264_a_2
612
+ valid_265_a_1
613
+ valid_265_a_2
614
+ valid_266_a_1
615
+ valid_266_a_2
616
+ valid_267_a_1
617
+ valid_267_a_2
618
+ valid_268_a_1
619
+ valid_268_a_2
620
+ valid_269_a_1
621
+ valid_270_a_1
622
+ valid_270_a_2
623
+ valid_271_a_1
624
+ valid_271_a_2
625
+ valid_272_a_1
626
+ valid_273_a_1
627
+ valid_274_a_1
628
+ valid_274_b_1
629
+ valid_274_b_2
630
+ valid_274_c_1
631
+ valid_274_c_2
632
+ valid_275_a_1
633
+ valid_275_a_2
634
+ valid_276_a_1
635
+ valid_276_a_2
636
+ valid_277_a_1
637
+ valid_277_a_2
638
+ valid_277_b_1
639
+ valid_277_b_2
640
+ valid_277_c_1
641
+ valid_277_c_2
642
+ valid_277_d_1
643
+ valid_277_d_2
644
+ valid_277_e_1
645
+ valid_277_e_2
646
+ valid_277_f_1
647
+ valid_277_f_2
648
+ valid_277_g_1
649
+ valid_277_g_2
650
+ valid_278_a_1
651
+ valid_278_a_2
652
+ valid_278_b_1
653
+ valid_278_b_2
654
+ valid_279_a_1
655
+ valid_279_a_2
656
+ valid_280_a_1
657
+ valid_280_a_2
658
+ valid_281_a_1
659
+ valid_281_a_2
660
+ valid_282_a_1
661
+ valid_282_a_2
662
+ valid_283_a_1
663
+ valid_284_a_1
664
+ valid_284_a_2
665
+ valid_285_a_1
666
+ valid_285_a_2
667
+ valid_286_a_1
668
+ valid_286_a_2
669
+ valid_287_a_1
670
+ valid_287_a_2
671
+ valid_288_a_1
672
+ valid_288_a_2
673
+ valid_289_a_1
674
+ valid_289_a_2
675
+ valid_290_a_1
676
+ valid_290_a_2
677
+ valid_291_a_1
678
+ valid_291_a_2
679
+ valid_292_a_1
680
+ valid_293_a_1
681
+ valid_293_a_2
682
+ valid_294_a_1
683
+ valid_294_a_2
684
+ valid_295_a_1
685
+ valid_295_a_2
686
+ valid_296_a_1
687
+ valid_297_a_1
688
+ valid_298_a_1
689
+ valid_298_a_2
690
+ valid_299_a_1
691
+ valid_299_a_2
692
+ valid_300_a_1
693
+ valid_300_a_2
694
+ valid_301_a_1
695
+ valid_301_a_2
696
+ valid_302_a_1
697
+ valid_302_a_2
698
+ valid_303_a_1
699
+ valid_303_a_2
700
+ valid_304_a_1
701
+ valid_304_a_2
702
+ valid_305_a_1
703
+ valid_305_a_2
704
+ valid_306_a_1
705
+ valid_306_a_2
706
+ valid_307_a_1
707
+ valid_307_a_2
708
+ valid_308_a_1
709
+ valid_308_a_2
710
+ valid_309_a_1
711
+ valid_309_a_2
712
+ valid_310_a_1
713
+ valid_310_a_2
714
+ valid_311_a_1
715
+ valid_312_a_1
716
+ valid_312_a_2
717
+ valid_313_a_1
718
+ valid_313_a_2
719
+ valid_314_a_1
720
+ valid_314_a_2
721
+ valid_315_a_1
722
+ valid_315_a_2
723
+ valid_316_a_1
724
+ valid_316_a_2
725
+ valid_317_a_1
726
+ valid_317_a_2
727
+ valid_318_a_1
728
+ valid_318_a_2
729
+ valid_319_a_1
730
+ valid_319_a_2
731
+ valid_320_a_1
732
+ valid_320_a_2
733
+ valid_321_a_1
734
+ valid_321_a_2
735
+ valid_322_a_1
736
+ valid_322_a_2
737
+ valid_323_a_1
738
+ valid_323_a_2
739
+ valid_324_a_1
740
+ valid_324_a_2
741
+ valid_325_a_1
742
+ valid_325_a_2
743
+ valid_326_a_1
744
+ valid_326_a_2
745
+ valid_327_a_1
746
+ valid_327_a_2
747
+ valid_328_a_1
748
+ valid_328_a_2
749
+ valid_329_a_1
750
+ valid_329_a_2
751
+ valid_330_a_1
752
+ valid_330_a_2
753
+ valid_331_a_1
754
+ valid_331_a_2
755
+ valid_331_b_1
756
+ valid_331_b_2
757
+ valid_331_c_1
758
+ valid_331_c_2
759
+ valid_331_d_1
760
+ valid_331_d_2
761
+ valid_331_e_1
762
+ valid_331_e_2
763
+ valid_332_a_1
764
+ valid_332_a_2
765
+ valid_332_b_1
766
+ valid_332_b_2
767
+ valid_333_a_1
768
+ valid_333_a_2
769
+ valid_333_b_1
770
+ valid_333_b_2
771
+ valid_334_a_1
772
+ valid_334_a_2
773
+ valid_334_a_3
774
+ valid_335_a_1
775
+ valid_335_a_2
776
+ valid_336_a_1
777
+ valid_336_a_2
778
+ valid_337_a_1
779
+ valid_337_a_2
780
+ valid_338_a_1
781
+ valid_338_a_2
782
+ valid_339_a_1
783
+ valid_339_a_2
784
+ valid_340_a_3
785
+ valid_340_a_5
786
+ valid_341_a_1
787
+ valid_341_a_2
788
+ valid_342_a_1
789
+ valid_342_a_2
790
+ valid_343_a_1
791
+ valid_343_a_2
792
+ valid_344_a_1
793
+ valid_344_a_2
794
+ valid_345_a_1
795
+ valid_345_a_2
796
+ valid_346_a_1
797
+ valid_346_a_2
798
+ valid_347_a_1
799
+ valid_347_a_2
800
+ valid_348_a_1
801
+ valid_348_a_2
802
+ valid_349_a_1
803
+ valid_349_a_2
804
+ valid_350_a_1
805
+ valid_350_a_2
806
+ valid_351_a_1
807
+ valid_351_a_2
808
+ valid_351_b_1
809
+ valid_351_b_2
810
+ valid_352_a_1
811
+ valid_352_a_2
812
+ valid_353_a_1
813
+ valid_353_a_2
814
+ valid_354_a_1
815
+ valid_354_a_2
816
+ valid_355_a_1
817
+ valid_355_a_2
818
+ valid_355_b_1
819
+ valid_355_b_2
820
+ valid_356_a_1
821
+ valid_356_a_2
822
+ valid_357_a_1
823
+ valid_357_a_2
824
+ valid_357_b_1
825
+ valid_357_b_2
826
+ valid_357_c_1
827
+ valid_357_c_2
828
+ valid_357_d_1
829
+ valid_357_d_2
830
+ valid_357_e_1
831
+ valid_357_e_2
832
+ valid_358_a_1
833
+ valid_359_a_1
834
+ valid_359_a_2
835
+ valid_360_a_1
836
+ valid_360_a_2
837
+ valid_361_a_1
838
+ valid_361_a_2
839
+ valid_362_a_1
840
+ valid_362_a_2
841
+ valid_362_b_1
842
+ valid_362_b_2
843
+ valid_363_a_1
844
+ valid_363_a_2
845
+ valid_364_a_1
846
+ valid_364_a_2
847
+ valid_365_a_3
848
+ valid_365_a_5
849
+ valid_366_a_1
850
+ valid_366_a_2
851
+ valid_367_a_1
852
+ valid_367_a_2
853
+ valid_368_a_1
854
+ valid_368_a_2
855
+ valid_369_a_1
856
+ valid_369_a_2
857
+ valid_370_a_1
858
+ valid_370_a_2
859
+ valid_371_a_1
860
+ valid_371_a_2
861
+ valid_372_a_1
862
+ valid_373_a_1
863
+ valid_373_a_2
864
+ valid_373_b_1
865
+ valid_373_b_2
866
+ valid_374_a_1
867
+ valid_374_a_2
868
+ valid_375_a_1
869
+ valid_376_a_1
870
+ valid_376_a_2
871
+ valid_377_a_1
872
+ valid_377_a_2
873
+ valid_378_a_1
874
+ valid_378_a_2
875
+ valid_379_a_1
876
+ valid_379_a_2
877
+ valid_380_a_1
878
+ valid_380_a_2
879
+ valid_381_a_1
880
+ valid_381_a_2
881
+ valid_382_a_1
882
+ valid_382_a_2
883
+ valid_382_b_1
884
+ valid_382_b_2
885
+ valid_382_c_1
886
+ valid_382_c_2
887
+ valid_383_a_1
888
+ valid_384_a_1
889
+ valid_385_a_1
890
+ valid_386_a_1
891
+ valid_386_a_2
892
+ valid_387_a_1
893
+ valid_387_a_2
894
+ valid_387_b_1
895
+ valid_387_b_2
896
+ valid_388_a_1
897
+ valid_388_a_2
898
+ valid_388_b_1
899
+ valid_388_b_2
900
+ valid_389_a_1
901
+ valid_389_a_2
902
+ valid_389_b_1
903
+ valid_389_b_2
904
+ valid_390_a_1
905
+ valid_390_a_2
906
+ valid_391_a_1
907
+ valid_391_a_2
908
+ valid_392_a_1
909
+ valid_392_a_2
910
+ valid_393_a_1
911
+ valid_393_a_2
912
+ valid_394_a_1
913
+ valid_394_a_2
914
+ valid_395_a_1
915
+ valid_396_a_1
916
+ valid_397_a_1
917
+ valid_397_a_2
918
+ valid_398_a_1
919
+ valid_399_a_1
920
+ valid_399_a_2
921
+ valid_400_a_1
922
+ valid_400_a_2
923
+ valid_401_a_1
924
+ valid_401_a_2
925
+ valid_402_a_1
926
+ valid_403_a_1
927
+ valid_403_b_1
928
+ valid_403_b_2
929
+ valid_404_a_1
930
+ valid_404_a_2
931
+ valid_405_a_1
932
+ valid_406_a_1
933
+ valid_406_a_2
934
+ valid_407_a_1
935
+ valid_407_a_2
936
+ valid_408_a_1
937
+ valid_408_a_2
938
+ valid_409_a_1
939
+ valid_409_a_2
940
+ valid_410_a_1
941
+ valid_410_a_2
942
+ valid_410_b_1
943
+ valid_410_b_2
944
+ valid_410_c_1
945
+ valid_410_c_2
946
+ valid_411_a_1
947
+ valid_412_a_1
948
+ valid_412_a_2
949
+ valid_413_a_1
950
+ valid_413_a_2
951
+ valid_414_a_1
952
+ valid_414_a_2
953
+ valid_414_b_1
954
+ valid_414_b_2
955
+ valid_415_a_1
956
+ valid_415_a_2
957
+ valid_416_a_1
958
+ valid_416_a_2
959
+ valid_416_b_1
960
+ valid_416_b_2
961
+ valid_417_a_3
962
+ valid_417_a_5
963
+ valid_418_a_1
964
+ valid_418_a_2
965
+ valid_419_a_1
966
+ valid_419_a_2
967
+ valid_420_a_1
968
+ valid_420_a_2
969
+ valid_421_a_1
970
+ valid_421_a_2
971
+ valid_422_a_1
972
+ valid_422_a_2
973
+ valid_423_a_1
974
+ valid_423_a_2
975
+ valid_423_b_1
976
+ valid_423_b_2
977
+ valid_423_c_1
978
+ valid_423_c_2
979
+ valid_424_a_1
980
+ valid_424_a_2
981
+ valid_425_a_1
982
+ valid_425_a_2
983
+ valid_426_a_1
984
+ valid_426_a_2
985
+ valid_427_a_1
986
+ valid_427_a_2
987
+ valid_428_a_1
988
+ valid_428_a_2
989
+ valid_429_a_1
990
+ valid_429_a_2
991
+ valid_429_b_1
992
+ valid_429_b_2
993
+ valid_430_a_1
994
+ valid_430_a_2
995
+ valid_431_a_1
996
+ valid_432_a_1
997
+ valid_432_a_2
998
+ valid_433_a_1
999
+ valid_433_a_2
1000
+ valid_434_a_1
1001
+ valid_435_a_1
1002
+ valid_435_a_2
1003
+ valid_436_a_1
1004
+ valid_436_a_2
1005
+ valid_437_a_1
1006
+ valid_437_a_2
1007
+ valid_437_b_1
1008
+ valid_437_b_2
1009
+ valid_438_a_1
1010
+ valid_438_a_2
1011
+ valid_439_a_1
1012
+ valid_439_a_2
1013
+ valid_440_a_1
1014
+ valid_441_a_1
1015
+ valid_441_a_2
1016
+ valid_442_a_1
1017
+ valid_442_a_2
1018
+ valid_443_a_1
1019
+ valid_443_a_2
1020
+ valid_444_a_1
1021
+ valid_444_a_2
1022
+ valid_445_a_1
1023
+ valid_445_a_2
1024
+ valid_446_a_1
1025
+ valid_446_a_2
1026
+ valid_446_b_1
1027
+ valid_446_b_2
1028
+ valid_447_a_1
1029
+ valid_447_a_2
1030
+ valid_448_a_1
1031
+ valid_448_a_2
1032
+ valid_449_a_1
1033
+ valid_449_a_2
1034
+ valid_449_b_1
1035
+ valid_449_b_2
1036
+ valid_450_a_1
1037
+ valid_451_a_1
1038
+ valid_451_a_2
1039
+ valid_452_a_1
1040
+ valid_452_a_2
1041
+ valid_453_a_1
1042
+ valid_453_a_2
1043
+ valid_454_a_1
1044
+ valid_454_b_1
1045
+ valid_454_c_1
1046
+ valid_454_c_2
1047
+ valid_455_a_1
1048
+ valid_455_a_2
1049
+ valid_456_a_1
1050
+ valid_456_a_2
1051
+ valid_456_b_1
1052
+ valid_456_b_2
1053
+ valid_457_a_1
1054
+ valid_457_a_2
1055
+ valid_457_b_1
1056
+ valid_457_b_2
1057
+ valid_457_c_1
1058
+ valid_457_c_2
1059
+ valid_457_d_1
1060
+ valid_457_d_2
1061
+ valid_458_a_1
1062
+ valid_458_a_2
1063
+ valid_459_a_1
1064
+ valid_459_a_2
1065
+ valid_460_a_1
1066
+ valid_460_a_2
1067
+ valid_461_a_1
1068
+ valid_461_a_2
1069
+ valid_462_a_1
1070
+ valid_462_a_2
1071
+ valid_463_a_1
1072
+ valid_463_a_2
1073
+ valid_464_a_1
1074
+ valid_464_a_2
1075
+ valid_465_a_1
1076
+ valid_465_a_2
1077
+ valid_466_a_1
1078
+ valid_466_a_2
1079
+ valid_467_a_1
1080
+ valid_467_a_2
1081
+ valid_468_a_1
1082
+ valid_468_a_2
1083
+ valid_469_a_1
1084
+ valid_469_a_2
1085
+ valid_470_a_1
1086
+ valid_470_a_2
1087
+ valid_471_a_1
1088
+ valid_471_a_2
1089
+ valid_472_a_1
1090
+ valid_472_a_2
1091
+ valid_473_a_1
1092
+ valid_473_a_2
1093
+ valid_474_a_1
1094
+ valid_474_a_2
1095
+ valid_475_a_1
1096
+ valid_475_a_2
1097
+ valid_475_b_1
1098
+ valid_475_b_2
1099
+ valid_475_c_1
1100
+ valid_475_c_2
1101
+ valid_475_d_1
1102
+ valid_475_d_2
1103
+ valid_475_e_1
1104
+ valid_475_e_2
1105
+ valid_476_a_1
1106
+ valid_476_a_2
1107
+ valid_477_a_1
1108
+ valid_477_a_2
1109
+ valid_478_a_1
1110
+ valid_478_a_2
1111
+ valid_479_a_1
1112
+ valid_479_a_2
1113
+ valid_480_a_1
1114
+ valid_480_a_2
1115
+ valid_481_a_1
1116
+ valid_481_a_2
1117
+ valid_482_a_1
1118
+ valid_482_a_2
1119
+ valid_482_b_1
1120
+ valid_482_b_2
1121
+ valid_482_c_1
1122
+ valid_482_c_2
1123
+ valid_482_d_1
1124
+ valid_482_d_2
1125
+ valid_482_e_1
1126
+ valid_482_e_2
1127
+ valid_482_f_1
1128
+ valid_482_f_2
1129
+ valid_482_g_1
1130
+ valid_482_g_2
1131
+ valid_482_h_1
1132
+ valid_482_h_2
1133
+ valid_483_a_1
1134
+ valid_483_a_2
1135
+ valid_484_a_1
1136
+ valid_484_a_2
1137
+ valid_484_b_1
1138
+ valid_484_b_2
1139
+ valid_485_a_1
1140
+ valid_485_a_2
1141
+ valid_486_a_1
1142
+ valid_486_a_2
1143
+ valid_487_a_1
1144
+ valid_487_a_2
1145
+ valid_487_b_1
1146
+ valid_487_b_2
1147
+ valid_488_a_1
1148
+ valid_488_a_2
1149
+ valid_489_a_1
1150
+ valid_489_a_2
1151
+ valid_490_a_1
1152
+ valid_490_a_2
1153
+ valid_491_a_1
1154
+ valid_491_a_2
1155
+ valid_492_a_1
1156
+ valid_492_a_2
1157
+ valid_492_b_1
1158
+ valid_492_b_2
1159
+ valid_493_a_1
1160
+ valid_493_a_2
1161
+ valid_493_b_1
1162
+ valid_493_b_2
1163
+ valid_493_c_1
1164
+ valid_493_c_2
1165
+ valid_494_a_1
1166
+ valid_494_a_2
1167
+ valid_495_a_1
1168
+ valid_495_a_2
1169
+ valid_496_a_1
1170
+ valid_496_a_2
1171
+ valid_497_a_1
1172
+ valid_497_a_2
1173
+ valid_498_a_1
1174
+ valid_498_a_2
1175
+ valid_499_a_1
1176
+ valid_499_a_2
1177
+ valid_500_a_1
1178
+ valid_500_a_2
1179
+ valid_500_b_1
1180
+ valid_500_b_2
1181
+ valid_500_c_1
1182
+ valid_500_c_2
1183
+ valid_500_d_1
1184
+ valid_500_d_2
1185
+ valid_501_a_1
1186
+ valid_501_a_2
1187
+ valid_502_a_1
1188
+ valid_502_a_2
1189
+ valid_503_a_1
1190
+ valid_503_a_2
1191
+ valid_503_b_1
1192
+ valid_503_b_2
1193
+ valid_504_a_1
1194
+ valid_504_a_2
1195
+ valid_505_a_1
1196
+ valid_505_a_2
1197
+ valid_506_a_1
1198
+ valid_506_a_2
1199
+ valid_507_a_1
1200
+ valid_507_a_2
1201
+ valid_508_a_1
1202
+ valid_509_a_1
1203
+ valid_509_a_2
1204
+ valid_509_b_1
1205
+ valid_509_b_2
1206
+ valid_510_a_1
1207
+ valid_510_a_2
1208
+ valid_511_a_1
1209
+ valid_512_a_1
1210
+ valid_512_a_2
1211
+ valid_512_b_1
1212
+ valid_512_b_2
1213
+ valid_513_a_1
1214
+ valid_513_a_2
1215
+ valid_514_a_1
1216
+ valid_514_a_2
1217
+ valid_515_a_1
1218
+ valid_515_a_2
1219
+ valid_516_a_1
1220
+ valid_517_a_1
1221
+ valid_517_a_2
1222
+ valid_518_a_1
1223
+ valid_518_a_2
1224
+ valid_519_a_1
1225
+ valid_519_a_2
1226
+ valid_520_a_1
1227
+ valid_520_a_3
1228
+ valid_521_a_1
1229
+ valid_521_a_2
1230
+ valid_522_a_1
1231
+ valid_523_a_1
1232
+ valid_523_a_2
1233
+ valid_524_a_1
1234
+ valid_524_a_2
1235
+ valid_525_a_1
1236
+ valid_526_a_1
1237
+ valid_526_a_2
1238
+ valid_527_a_1
1239
+ valid_527_a_2
1240
+ valid_528_a_1
1241
+ valid_528_a_2
1242
+ valid_529_a_1
1243
+ valid_529_a_2
1244
+ valid_530_a_1
1245
+ valid_530_a_2
1246
+ valid_531_a_1
1247
+ valid_531_a_2
1248
+ valid_531_b_1
1249
+ valid_531_b_2
1250
+ valid_532_a_1
1251
+ valid_532_a_2
1252
+ valid_533_a_1
1253
+ valid_533_a_2
1254
+ valid_534_a_1
1255
+ valid_534_b_1
1256
+ valid_534_b_2
1257
+ valid_535_a_1
1258
+ valid_535_a_2
1259
+ valid_535_b_1
1260
+ valid_535_c_1
1261
+ valid_535_c_2
1262
+ valid_536_a_1
1263
+ valid_536_a_2
1264
+ valid_536_b_1
1265
+ valid_536_b_2
1266
+ valid_537_a_1
1267
+ valid_537_a_2
1268
+ valid_537_b_1
1269
+ valid_537_b_2
1270
+ valid_538_a_1
1271
+ valid_538_a_2
1272
+ valid_538_b_1
1273
+ valid_538_b_2
1274
+ valid_538_c_1
1275
+ valid_538_c_2
1276
+ valid_539_a_1
1277
+ valid_539_a_2
1278
+ valid_540_a_1
1279
+ valid_540_a_2
1280
+ valid_541_a_1
1281
+ valid_541_a_2
1282
+ valid_542_a_1
1283
+ valid_542_a_2
1284
+ valid_543_a_1
1285
+ valid_543_a_2
1286
+ valid_544_a_1
1287
+ valid_544_a_2
1288
+ valid_545_a_1
1289
+ valid_545_a_2
1290
+ valid_546_a_1
1291
+ valid_546_a_2
1292
+ valid_547_a_1
1293
+ valid_547_a_2
1294
+ valid_548_a_1
1295
+ valid_548_a_2
1296
+ valid_549_a_1
1297
+ valid_549_a_2
1298
+ valid_550_a_1
1299
+ valid_550_a_2
1300
+ valid_551_a_1
1301
+ valid_551_a_2
1302
+ valid_552_a_1
1303
+ valid_552_a_2
1304
+ valid_553_a_1
1305
+ valid_553_a_2
1306
+ valid_554_a_1
1307
+ valid_554_a_2
1308
+ valid_555_a_1
1309
+ valid_555_a_2
1310
+ valid_556_a_1
1311
+ valid_556_a_2
1312
+ valid_557_a_1
1313
+ valid_557_a_2
1314
+ valid_558_a_1
1315
+ valid_558_a_2
1316
+ valid_559_a_1
1317
+ valid_559_a_2
1318
+ valid_560_a_1
1319
+ valid_560_a_2
1320
+ valid_561_a_1
1321
+ valid_561_a_2
1322
+ valid_561_b_1
1323
+ valid_562_a_1
1324
+ valid_562_a_2
1325
+ valid_563_a_1
1326
+ valid_563_a_2
1327
+ valid_564_a_1
1328
+ valid_564_a_2
1329
+ valid_564_b_1
1330
+ valid_564_b_2
1331
+ valid_565_a_1
1332
+ valid_565_a_2
1333
+ valid_565_b_1
1334
+ valid_565_b_2
1335
+ valid_566_a_1
1336
+ valid_566_a_2
1337
+ valid_566_b_1
1338
+ valid_566_b_2
1339
+ valid_567_a_1
1340
+ valid_567_a_2
1341
+ valid_568_a_1
1342
+ valid_568_a_2
1343
+ valid_569_a_1
1344
+ valid_569_a_2
1345
+ valid_569_b_3
1346
+ valid_569_b_5
1347
+ valid_569_c_1
1348
+ valid_569_c_2
1349
+ valid_570_a_1
1350
+ valid_571_a_1
1351
+ valid_571_a_2
1352
+ valid_572_a_1
1353
+ valid_572_a_2
1354
+ valid_573_a_1
1355
+ valid_573_a_2
1356
+ valid_574_a_1
1357
+ valid_575_a_1
1358
+ valid_575_a_2
1359
+ valid_575_b_1
1360
+ valid_575_b_2
1361
+ valid_576_a_1
1362
+ valid_577_a_1
1363
+ valid_577_a_2
1364
+ valid_578_a_1
1365
+ valid_578_a_2
1366
+ valid_579_a_1
1367
+ valid_579_a_2
1368
+ valid_580_a_1
1369
+ valid_580_a_2
1370
+ valid_581_a_1
1371
+ valid_581_a_2
1372
+ valid_582_a_1
1373
+ valid_582_a_2
1374
+ valid_583_a_1
1375
+ valid_583_a_2
1376
+ valid_584_a_1
1377
+ valid_584_a_2
1378
+ valid_585_a_1
1379
+ valid_585_a_2
1380
+ valid_586_a_1
1381
+ valid_586_a_2
1382
+ valid_587_a_1
1383
+ valid_587_a_2
1384
+ valid_588_a_1
1385
+ valid_588_a_2
1386
+ valid_589_a_1
1387
+ valid_589_a_2
1388
+ valid_589_b_1
1389
+ valid_589_b_2
1390
+ valid_590_a_1
1391
+ valid_590_a_2
1392
+ valid_591_a_1
1393
+ valid_591_a_2
1394
+ valid_592_a_1
1395
+ valid_593_a_1
1396
+ valid_593_a_2
1397
+ valid_594_a_1
1398
+ valid_595_a_1
1399
+ valid_595_a_2
1400
+ valid_596_a_1
1401
+ valid_596_a_2
1402
+ valid_597_a_1
1403
+ valid_597_a_2
1404
+ valid_598_a_1
1405
+ valid_598_a_2
1406
+ valid_599_a_1
1407
+ valid_600_a_1
1408
+ valid_600_a_2
1409
+ valid_601_a_1
1410
+ valid_601_a_2
1411
+ valid_602_a_1
1412
+ valid_602_a_2
1413
+ valid_603_a_1
1414
+ valid_603_a_2
1415
+ valid_604_a_1
1416
+ valid_604_a_2
1417
+ valid_605_a_1
1418
+ valid_605_a_2
1419
+ valid_606_a_1
1420
+ valid_606_a_2
1421
+ valid_606_b_1
1422
+ valid_606_b_2
1423
+ valid_607_a_1
1424
+ valid_607_a_2
1425
+ valid_608_a_1
1426
+ valid_608_a_2
1427
+ valid_609_a_1
1428
+ valid_609_a_2
1429
+ valid_610_a_1
1430
+ valid_610_a_2
1431
+ valid_611_a_1
1432
+ valid_611_a_2
1433
+ valid_611_b_1
1434
+ valid_611_b_2
1435
+ valid_612_a_1
1436
+ valid_612_a_2
1437
+ valid_613_a_1
1438
+ valid_613_a_2
1439
+ valid_614_a_1
1440
+ valid_614_a_2
1441
+ valid_615_a_1
1442
+ valid_615_a_2
1443
+ valid_616_a_1
1444
+ valid_617_a_1
1445
+ valid_617_a_2
1446
+ valid_618_a_1
1447
+ valid_618_a_2
1448
+ valid_619_a_1
1449
+ valid_619_a_2
1450
+ valid_620_a_1
1451
+ valid_620_a_2
1452
+ valid_621_a_1
1453
+ valid_621_a_2
1454
+ valid_622_a_1
1455
+ valid_622_a_2
1456
+ valid_623_a_1
1457
+ valid_623_a_2
1458
+ valid_624_a_1
1459
+ valid_624_a_2
1460
+ valid_624_b_1
1461
+ valid_624_b_2
1462
+ valid_625_a_1
1463
+ valid_625_a_2
1464
+ valid_626_a_1
1465
+ valid_626_a_2
1466
+ valid_627_a_1
1467
+ valid_627_a_2
1468
+ valid_628_a_1
1469
+ valid_628_a_2
1470
+ valid_629_a_1
1471
+ valid_629_a_2
1472
+ valid_630_a_1
1473
+ valid_630_a_2
1474
+ valid_631_a_1
1475
+ valid_631_a_2
1476
+ valid_632_a_1
1477
+ valid_633_a_1
1478
+ valid_633_a_2
1479
+ valid_634_a_1
1480
+ valid_634_a_2
1481
+ valid_635_a_1
1482
+ valid_635_a_2
1483
+ valid_636_a_1
1484
+ valid_636_a_2
1485
+ valid_636_b_1
1486
+ valid_636_b_2
1487
+ valid_636_c_1
1488
+ valid_636_c_2
1489
+ valid_637_a_1
1490
+ valid_637_a_2
1491
+ valid_638_a_1
1492
+ valid_638_a_2
1493
+ valid_639_a_1
1494
+ valid_639_a_2
1495
+ valid_640_a_1
1496
+ valid_640_a_2
1497
+ valid_641_a_1
1498
+ valid_642_a_1
1499
+ valid_643_a_1
1500
+ valid_643_a_2
1501
+ valid_643_b_1
1502
+ valid_643_b_2
1503
+ valid_644_a_1
1504
+ valid_644_a_2
1505
+ valid_645_a_1
1506
+ valid_645_a_2
1507
+ valid_645_b_1
1508
+ valid_645_b_2
1509
+ valid_645_c_1
1510
+ valid_645_c_2
1511
+ valid_646_a_1
1512
+ valid_646_a_2
1513
+ valid_647_a_1
1514
+ valid_647_a_2
1515
+ valid_648_a_1
1516
+ valid_648_a_2
1517
+ valid_649_a_1
1518
+ valid_649_a_2
1519
+ valid_650_a_1
1520
+ valid_650_a_2
1521
+ valid_651_a_1
1522
+ valid_651_b_1
1523
+ valid_651_b_2
1524
+ valid_652_a_1
1525
+ valid_652_a_2
1526
+ valid_653_a_1
1527
+ valid_653_a_2
1528
+ valid_654_a_1
1529
+ valid_654_a_2
1530
+ valid_655_a_1
1531
+ valid_655_a_2
1532
+ valid_655_b_1
1533
+ valid_655_b_2
1534
+ valid_656_a_1
1535
+ valid_656_a_2
1536
+ valid_657_a_1
1537
+ valid_657_a_2
1538
+ valid_658_a_1
1539
+ valid_658_a_2
1540
+ valid_659_a_1
1541
+ valid_660_a_1
1542
+ valid_660_a_2
1543
+ valid_661_a_1
1544
+ valid_661_a_2
1545
+ valid_662_a_1
1546
+ valid_662_a_2
1547
+ valid_663_a_1
1548
+ valid_663_a_2
1549
+ valid_664_a_1
1550
+ valid_664_a_2
1551
+ valid_665_a_1
1552
+ valid_665_a_2
1553
+ valid_666_a_1
1554
+ valid_666_a_2
1555
+ valid_667_a_1
1556
+ valid_667_a_2
1557
+ valid_667_b_1
1558
+ valid_667_b_2
1559
+ valid_667_c_1
1560
+ valid_667_c_2
1561
+ valid_668_a_1
1562
+ valid_668_a_2
1563
+ valid_668_b_1
1564
+ valid_668_b_2
1565
+ valid_669_a_1
1566
+ valid_669_a_2
1567
+ valid_670_a_1
1568
+ valid_670_a_2
1569
+ valid_671_a_1
1570
+ valid_671_a_2
1571
+ valid_672_a_1
1572
+ valid_672_a_2
1573
+ valid_673_a_1
1574
+ valid_673_a_2
1575
+ valid_674_a_1
1576
+ valid_674_a_2
1577
+ valid_675_a_1
1578
+ valid_675_a_2
1579
+ valid_675_b_1
1580
+ valid_675_b_2
1581
+ valid_675_c_1
1582
+ valid_675_c_2
1583
+ valid_676_a_1
1584
+ valid_676_a_2
1585
+ valid_677_a_1
1586
+ valid_677_a_2
1587
+ valid_678_a_1
1588
+ valid_678_a_2
1589
+ valid_679_a_1
1590
+ valid_679_a_2
1591
+ valid_680_a_1
1592
+ valid_680_a_2
1593
+ valid_681_a_1
1594
+ valid_681_a_2
1595
+ valid_682_a_1
1596
+ valid_682_a_2
1597
+ valid_683_a_1
1598
+ valid_683_a_2
1599
+ valid_684_a_1
1600
+ valid_684_a_2
1601
+ valid_685_a_1
1602
+ valid_685_a_2
1603
+ valid_686_a_1
1604
+ valid_686_a_2
1605
+ valid_687_a_1
1606
+ valid_687_a_2
1607
+ valid_688_a_1
1608
+ valid_688_a_2
1609
+ valid_689_a_1
1610
+ valid_689_a_2
1611
+ valid_690_a_1
1612
+ valid_690_a_2
1613
+ valid_691_a_1
1614
+ valid_691_a_2
1615
+ valid_692_a_1
1616
+ valid_693_a_1
1617
+ valid_693_a_2
1618
+ valid_694_a_1
1619
+ valid_694_a_2
1620
+ valid_694_b_1
1621
+ valid_694_b_2
1622
+ valid_695_a_1
1623
+ valid_695_a_2
1624
+ valid_696_a_1
1625
+ valid_696_a_2
1626
+ valid_697_a_1
1627
+ valid_697_a_2
1628
+ valid_698_a_1
1629
+ valid_699_a_1
1630
+ valid_699_a_2
1631
+ valid_700_a_1
1632
+ valid_700_a_2
1633
+ valid_701_a_1
1634
+ valid_701_a_2
1635
+ valid_702_a_1
1636
+ valid_702_a_2
1637
+ valid_703_a_1
1638
+ valid_703_a_2
1639
+ valid_704_a_1
1640
+ valid_704_a_2
1641
+ valid_705_a_1
1642
+ valid_705_a_2
1643
+ valid_706_a_1
1644
+ valid_706_a_2
1645
+ valid_707_a_1
1646
+ valid_707_a_2
1647
+ valid_708_a_1
1648
+ valid_708_a_2
1649
+ valid_709_a_1
1650
+ valid_709_a_2
1651
+ valid_710_a_1
1652
+ valid_710_a_2
1653
+ valid_711_a_1
1654
+ valid_711_a_2
1655
+ valid_712_a_1
1656
+ valid_712_a_2
1657
+ valid_713_a_1
1658
+ valid_713_a_2
1659
+ valid_713_b_1
1660
+ valid_713_b_2
1661
+ valid_713_c_1
1662
+ valid_713_c_2
1663
+ valid_714_a_1
1664
+ valid_715_a_1
1665
+ valid_715_a_2
1666
+ valid_715_b_1
1667
+ valid_715_b_2
1668
+ valid_716_a_1
1669
+ valid_716_a_2
1670
+ valid_717_a_1
1671
+ valid_717_a_2
1672
+ valid_717_b_1
1673
+ valid_717_b_2
1674
+ valid_717_c_1
1675
+ valid_717_c_2
1676
+ valid_718_a_1
1677
+ valid_718_a_2
1678
+ valid_719_a_1
1679
+ valid_719_a_2
1680
+ valid_720_a_1
1681
+ valid_720_a_2
1682
+ valid_721_a_1
1683
+ valid_721_a_2
1684
+ valid_722_a_1
1685
+ valid_722_a_2
1686
+ valid_722_b_1
1687
+ valid_722_b_2
1688
+ valid_723_a_1
1689
+ valid_723_a_2
1690
+ valid_724_a_1
1691
+ valid_724_a_2
1692
+ valid_725_a_1
1693
+ valid_725_a_2
1694
+ valid_726_a_3
1695
+ valid_726_a_5
1696
+ valid_727_a_1
1697
+ valid_727_a_2
1698
+ valid_728_a_1
1699
+ valid_728_a_2
1700
+ valid_729_a_1
1701
+ valid_729_a_2
1702
+ valid_730_a_1
1703
+ valid_730_a_2
1704
+ valid_731_a_1
1705
+ valid_731_a_2
1706
+ valid_732_a_1
1707
+ valid_732_a_2
1708
+ valid_733_a_1
1709
+ valid_733_a_2
1710
+ valid_734_a_1
1711
+ valid_734_a_2
1712
+ valid_735_a_1
1713
+ valid_735_a_2
1714
+ valid_736_a_1
1715
+ valid_736_a_2
1716
+ valid_737_a_1
1717
+ valid_737_a_2
1718
+ valid_738_a_1
1719
+ valid_738_a_2
1720
+ valid_739_a_1
1721
+ valid_739_a_2
1722
+ valid_740_a_1
1723
+ valid_740_a_2
1724
+ valid_741_a_1
1725
+ valid_741_a_2
1726
+ valid_741_b_1
1727
+ valid_741_b_2
1728
+ valid_742_a_1
1729
+ valid_743_a_1
1730
+ valid_743_a_2
1731
+ valid_744_a_1
1732
+ valid_744_a_2
1733
+ valid_745_a_1
1734
+ valid_746_a_1
1735
+ valid_746_a_2
1736
+ valid_747_a_1
1737
+ valid_747_a_2
1738
+ valid_748_a_1
1739
+ valid_748_a_2
1740
+ valid_749_a_1
1741
+ valid_749_a_2
1742
+ valid_750_a_1
1743
+ valid_750_a_2
1744
+ valid_751_a_1
1745
+ valid_751_a_2
1746
+ valid_752_a_1
1747
+ valid_752_a_2
1748
+ valid_752_b_1
1749
+ valid_752_b_2
1750
+ valid_753_a_1
1751
+ valid_753_a_2
1752
+ valid_754_a_1
1753
+ valid_754_a_2
1754
+ valid_755_a_1
1755
+ valid_755_a_2
1756
+ valid_756_a_1
1757
+ valid_756_a_2
1758
+ valid_757_a_1
1759
+ valid_757_a_2
1760
+ valid_758_a_1
1761
+ valid_758_a_2
1762
+ valid_759_a_1
1763
+ valid_759_a_2
1764
+ valid_760_a_1
1765
+ valid_760_a_2
1766
+ valid_761_a_1
1767
+ valid_761_a_2
1768
+ valid_762_a_1
1769
+ valid_762_a_2
1770
+ valid_763_a_1
1771
+ valid_763_a_2
1772
+ valid_764_a_1
1773
+ valid_764_a_2
1774
+ valid_765_a_1
1775
+ valid_765_a_2
1776
+ valid_766_a_1
1777
+ valid_766_a_2
1778
+ valid_767_a_1
1779
+ valid_767_a_2
1780
+ valid_768_a_1
1781
+ valid_768_a_2
1782
+ valid_769_a_1
1783
+ valid_769_a_2
1784
+ valid_770_a_1
1785
+ valid_770_a_2
1786
+ valid_770_b_1
1787
+ valid_770_c_1
1788
+ valid_771_a_1
1789
+ valid_771_a_2
1790
+ valid_771_b_1
1791
+ valid_771_b_2
1792
+ valid_772_a_1
1793
+ valid_772_a_2
1794
+ valid_773_a_1
1795
+ valid_773_a_2
1796
+ valid_774_a_1
1797
+ valid_774_a_2
1798
+ valid_774_b_1
1799
+ valid_774_b_2
1800
+ valid_775_a_1
1801
+ valid_775_a_2
1802
+ valid_776_a_1
1803
+ valid_776_a_2
1804
+ valid_777_a_1
1805
+ valid_777_a_2
1806
+ valid_778_a_1
1807
+ valid_778_a_2
1808
+ valid_778_b_1
1809
+ valid_778_b_2
1810
+ valid_779_a_1
1811
+ valid_779_a_2
1812
+ valid_780_a_1
1813
+ valid_780_a_2
1814
+ valid_781_a_1
1815
+ valid_781_a_2
1816
+ valid_782_a_1
1817
+ valid_782_a_2
1818
+ valid_783_a_1
1819
+ valid_783_a_2
1820
+ valid_784_a_1
1821
+ valid_784_a_2
1822
+ valid_785_a_1
1823
+ valid_785_a_2
1824
+ valid_786_a_1
1825
+ valid_786_a_2
1826
+ valid_787_a_1
1827
+ valid_787_a_2
1828
+ valid_787_b_1
1829
+ valid_787_b_2
1830
+ valid_787_c_1
1831
+ valid_787_c_2
1832
+ valid_787_d_1
1833
+ valid_787_d_2
1834
+ valid_788_a_1
1835
+ valid_788_a_2
1836
+ valid_789_a_1
1837
+ valid_789_a_2
1838
+ valid_790_a_1
1839
+ valid_790_a_2
1840
+ valid_791_a_1
1841
+ valid_791_a_2
1842
+ valid_792_a_1
1843
+ valid_792_a_2
1844
+ valid_793_a_1
1845
+ valid_794_a_1
1846
+ valid_794_a_2
1847
+ valid_795_a_1
1848
+ valid_795_a_2
1849
+ valid_796_a_1
1850
+ valid_796_a_2
1851
+ valid_797_a_1
1852
+ valid_797_a_2
1853
+ valid_798_a_1
1854
+ valid_798_a_2
1855
+ valid_799_a_1
1856
+ valid_799_a_2
1857
+ valid_800_a_1
1858
+ valid_801_a_1
1859
+ valid_801_a_2
1860
+ valid_802_a_1
1861
+ valid_802_a_2
1862
+ valid_803_a_1
1863
+ valid_803_a_2
1864
+ valid_804_a_1
1865
+ valid_804_a_2
1866
+ valid_804_b_1
1867
+ valid_804_b_2
1868
+ valid_805_a_1
1869
+ valid_805_a_2
1870
+ valid_806_a_1
1871
+ valid_806_a_2
1872
+ valid_807_a_1
1873
+ valid_807_a_2
1874
+ valid_808_a_1
1875
+ valid_808_a_2
1876
+ valid_809_a_1
1877
+ valid_809_a_2
1878
+ valid_810_a_1
1879
+ valid_810_a_2
1880
+ valid_810_b_1
1881
+ valid_810_b_2
1882
+ valid_811_a_1
1883
+ valid_811_a_2
1884
+ valid_812_a_1
1885
+ valid_812_a_2
1886
+ valid_813_a_1
1887
+ valid_813_a_2
1888
+ valid_814_a_1
1889
+ valid_814_a_2
1890
+ valid_815_a_1
1891
+ valid_815_a_2
1892
+ valid_815_b_1
1893
+ valid_815_b_2
1894
+ valid_815_c_1
1895
+ valid_815_c_2
1896
+ valid_816_a_1
1897
+ valid_816_a_2
1898
+ valid_817_a_1
1899
+ valid_817_a_2
1900
+ valid_818_a_1
1901
+ valid_818_a_2
1902
+ valid_819_a_1
1903
+ valid_819_a_2
1904
+ valid_820_a_1
1905
+ valid_820_a_2
1906
+ valid_821_a_1
1907
+ valid_821_a_2
1908
+ valid_822_a_1
1909
+ valid_822_a_2
1910
+ valid_823_a_1
1911
+ valid_823_a_2
1912
+ valid_824_a_1
1913
+ valid_824_a_2
1914
+ valid_824_b_1
1915
+ valid_824_b_2
1916
+ valid_825_a_1
1917
+ valid_825_a_2
1918
+ valid_825_b_1
1919
+ valid_825_b_2
1920
+ valid_826_a_1
1921
+ valid_826_a_2
1922
+ valid_827_a_1
1923
+ valid_827_a_2
1924
+ valid_828_a_1
1925
+ valid_828_a_2
1926
+ valid_829_a_1
1927
+ valid_829_a_2
1928
+ valid_829_b_1
1929
+ valid_829_b_2
1930
+ valid_830_a_1
1931
+ valid_830_a_2
1932
+ valid_830_b_1
1933
+ valid_830_b_2
1934
+ valid_830_c_1
1935
+ valid_830_c_2
1936
+ valid_831_a_1
1937
+ valid_831_a_2
1938
+ valid_832_a_1
1939
+ valid_832_a_2
1940
+ valid_832_b_1
1941
+ valid_832_b_2
1942
+ valid_833_a_1
1943
+ valid_833_a_2
1944
+ valid_834_a_1
1945
+ valid_834_a_2
1946
+ valid_835_a_1
1947
+ valid_835_a_2
1948
+ valid_836_a_1
1949
+ valid_836_a_2
1950
+ valid_837_a_1
1951
+ valid_837_a_2
1952
+ valid_838_a_1
1953
+ valid_838_a_2
1954
+ valid_839_a_1
1955
+ valid_839_a_2
1956
+ valid_840_a_1
1957
+ valid_840_a_2
1958
+ valid_841_a_1
1959
+ valid_841_a_2
1960
+ valid_842_a_1
1961
+ valid_842_a_2
1962
+ valid_843_a_1
1963
+ valid_843_a_2
1964
+ valid_844_a_1
1965
+ valid_844_a_2
1966
+ valid_844_b_1
1967
+ valid_844_b_2
1968
+ valid_845_a_1
1969
+ valid_845_a_2
1970
+ valid_846_a_1
1971
+ valid_846_a_2
1972
+ valid_847_a_1
1973
+ valid_847_a_2
1974
+ valid_848_a_1
1975
+ valid_848_a_2
1976
+ valid_849_a_1
1977
+ valid_849_a_2
1978
+ valid_850_a_1
1979
+ valid_850_a_2
1980
+ valid_850_b_1
1981
+ valid_850_b_2
1982
+ valid_850_c_1
1983
+ valid_850_c_2
1984
+ valid_850_d_1
1985
+ valid_850_d_2
1986
+ valid_850_e_1
1987
+ valid_850_e_2
1988
+ valid_850_f_1
1989
+ valid_850_f_2
1990
+ valid_851_a_1
1991
+ valid_851_a_2
1992
+ valid_852_a_1
1993
+ valid_852_a_2
1994
+ valid_853_a_1
1995
+ valid_853_a_2
1996
+ valid_854_a_1
1997
+ valid_854_a_2
1998
+ valid_855_a_1
1999
+ valid_855_a_2
2000
+ valid_856_a_1
2001
+ valid_857_a_1
2002
+ valid_857_a_2
2003
+ valid_858_a_1
2004
+ valid_858_a_2
2005
+ valid_859_a_1
2006
+ valid_859_a_2
2007
+ valid_860_a_1
2008
+ valid_861_a_1
2009
+ valid_861_a_2
2010
+ valid_862_a_1
2011
+ valid_862_a_2
2012
+ valid_863_a_1
2013
+ valid_863_a_2
2014
+ valid_863_a_3
2015
+ valid_864_a_1
2016
+ valid_864_a_2
2017
+ valid_865_a_1
2018
+ valid_866_a_1
2019
+ valid_866_a_2
2020
+ valid_867_a_1
2021
+ valid_867_a_2
2022
+ valid_868_a_1
2023
+ valid_868_a_2
2024
+ valid_869_a_1
2025
+ valid_869_a_2
2026
+ valid_869_b_1
2027
+ valid_869_b_2
2028
+ valid_870_a_1
2029
+ valid_870_a_2
2030
+ valid_871_a_1
2031
+ valid_871_a_2
2032
+ valid_872_a_1
2033
+ valid_872_a_2
2034
+ valid_873_a_1
2035
+ valid_873_a_2
2036
+ valid_874_a_1
2037
+ valid_874_a_2
2038
+ valid_875_a_1
2039
+ valid_875_a_2
2040
+ valid_876_a_1
2041
+ valid_876_a_2
2042
+ valid_876_b_1
2043
+ valid_876_b_2
2044
+ valid_877_a_1
2045
+ valid_877_a_2
2046
+ valid_878_a_1
2047
+ valid_878_a_2
2048
+ valid_879_a_1
2049
+ valid_879_a_2
2050
+ valid_880_a_1
2051
+ valid_880_a_2
2052
+ valid_881_a_1
2053
+ valid_881_a_2
2054
+ valid_882_a_1
2055
+ valid_882_a_2
2056
+ valid_883_a_1
2057
+ valid_883_a_2
2058
+ valid_884_a_3
2059
+ valid_884_a_5
2060
+ valid_884_b_1
2061
+ valid_884_b_2
2062
+ valid_885_a_1
2063
+ valid_885_a_2
2064
+ valid_886_a_1
2065
+ valid_886_a_2
2066
+ valid_887_a_1
2067
+ valid_887_a_2
2068
+ valid_888_a_1
2069
+ valid_888_a_2
2070
+ valid_889_a_1
2071
+ valid_889_a_2
2072
+ valid_890_a_1
2073
+ valid_890_a_2
2074
+ valid_891_a_1
2075
+ valid_892_a_1
2076
+ valid_893_a_1
2077
+ valid_893_a_2
2078
+ valid_894_a_1
2079
+ valid_894_a_2
2080
+ valid_895_a_1
2081
+ valid_895_a_2
2082
+ valid_896_a_1
2083
+ valid_896_a_2
2084
+ valid_897_a_1
2085
+ valid_897_a_2
2086
+ valid_898_a_1
2087
+ valid_898_a_2
2088
+ valid_898_b_1
2089
+ valid_898_b_2
2090
+ valid_899_a_1
2091
+ valid_899_a_2
2092
+ valid_900_a_1
2093
+ valid_900_a_2
2094
+ valid_901_a_1
2095
+ valid_901_a_2
2096
+ valid_902_a_1
2097
+ valid_902_a_2
2098
+ valid_903_a_1
2099
+ valid_904_a_1
2100
+ valid_904_a_2
2101
+ valid_905_a_1
2102
+ valid_905_a_2
2103
+ valid_906_a_1
2104
+ valid_906_a_2
2105
+ valid_906_b_1
2106
+ valid_907_a_1
2107
+ valid_908_a_1
2108
+ valid_908_a_2
2109
+ valid_909_a_1
2110
+ valid_909_a_2
2111
+ valid_910_a_1
2112
+ valid_910_a_2
2113
+ valid_911_a_1
2114
+ valid_911_a_2
2115
+ valid_912_a_1
2116
+ valid_912_a_2
2117
+ valid_913_a_1
2118
+ valid_913_a_2
2119
+ valid_914_a_1
2120
+ valid_914_a_2
2121
+ valid_915_a_1
2122
+ valid_915_a_2
2123
+ valid_915_b_1
2124
+ valid_915_b_2
2125
+ valid_915_c_1
2126
+ valid_915_c_2
2127
+ valid_916_a_1
2128
+ valid_916_a_2
2129
+ valid_916_b_1
2130
+ valid_916_b_2
2131
+ valid_916_c_1
2132
+ valid_916_c_2
2133
+ valid_917_a_1
2134
+ valid_917_a_2
2135
+ valid_918_a_1
2136
+ valid_918_a_2
2137
+ valid_919_a_1
2138
+ valid_919_a_2
2139
+ valid_920_a_1
2140
+ valid_920_a_2
2141
+ valid_921_a_1
2142
+ valid_921_a_2
2143
+ valid_922_a_1
2144
+ valid_922_a_2
2145
+ valid_923_a_1
2146
+ valid_923_a_2
2147
+ valid_924_a_1
2148
+ valid_924_a_2
2149
+ valid_925_a_1
2150
+ valid_925_a_2
2151
+ valid_926_a_1
2152
+ valid_926_a_2
2153
+ valid_927_a_1
2154
+ valid_927_a_2
2155
+ valid_928_a_1
2156
+ valid_928_a_2
2157
+ valid_928_b_1
2158
+ valid_928_b_2
2159
+ valid_929_a_1
2160
+ valid_929_a_2
2161
+ valid_930_a_1
2162
+ valid_930_a_2
2163
+ valid_931_a_1
2164
+ valid_931_a_2
2165
+ valid_931_b_1
2166
+ valid_931_b_2
2167
+ valid_932_a_1
2168
+ valid_932_a_2
2169
+ valid_933_a_1
2170
+ valid_933_b_1
2171
+ valid_933_b_2
2172
+ valid_934_a_1
2173
+ valid_934_a_2
2174
+ valid_935_a_1
2175
+ valid_935_a_2
2176
+ valid_936_a_1
2177
+ valid_936_a_2
2178
+ valid_936_b_1
2179
+ valid_937_a_1
2180
+ valid_937_a_2
2181
+ valid_937_b_1
2182
+ valid_937_b_2
2183
+ valid_937_c_1
2184
+ valid_937_c_2
2185
+ valid_937_d_1
2186
+ valid_937_d_2
2187
+ valid_937_e_1
2188
+ valid_937_e_2
2189
+ valid_937_f_1
2190
+ valid_937_f_2
2191
+ valid_937_g_1
2192
+ valid_937_g_2
2193
+ valid_937_h_1
2194
+ valid_937_h_2
2195
+ valid_938_a_1
2196
+ valid_939_a_1
2197
+ valid_939_a_2
2198
+ valid_940_a_1
2199
+ valid_940_a_2
2200
+ valid_941_a_1
2201
+ valid_941_a_2
2202
+ valid_942_a_1
2203
+ valid_942_a_2
2204
+ valid_943_a_1
2205
+ valid_943_a_2
2206
+ valid_944_a_1
2207
+ valid_944_a_2
2208
+ valid_945_a_1
2209
+ valid_945_a_2
2210
+ valid_945_b_1
2211
+ valid_945_b_2
2212
+ valid_946_a_1
2213
+ valid_947_a_1
2214
+ valid_947_a_2
2215
+ valid_948_a_1
2216
+ valid_948_a_2
2217
+ valid_949_a_1
2218
+ valid_949_a_2
2219
+ valid_950_a_1
2220
+ valid_950_a_2
2221
+ valid_951_a_1
2222
+ valid_951_a_2
2223
+ valid_952_a_1
2224
+ valid_952_a_2
2225
+ valid_953_a_1
2226
+ valid_953_a_2
2227
+ valid_954_a_1
2228
+ valid_954_a_2
2229
+ valid_955_a_1
2230
+ valid_956_a_1
2231
+ valid_956_a_2
2232
+ valid_957_a_1
2233
+ valid_957_a_2
2234
+ valid_958_a_1
2235
+ valid_958_a_2
2236
+ valid_959_a_1
2237
+ valid_959_a_2
2238
+ valid_960_a_1
2239
+ valid_960_a_2
2240
+ valid_961_a_1
2241
+ valid_961_a_2
2242
+ valid_962_a_1
2243
+ valid_962_a_2
2244
+ valid_963_a_1
2245
+ valid_963_a_2
2246
+ valid_964_a_1
2247
+ valid_964_a_2
2248
+ valid_965_a_1
2249
+ valid_965_a_2
2250
+ valid_966_a_1
2251
+ valid_966_a_2
2252
+ valid_967_a_1
2253
+ valid_967_a_2
2254
+ valid_968_a_1
2255
+ valid_968_a_2
2256
+ valid_968_b_1
2257
+ valid_968_b_2
2258
+ valid_968_c_1
2259
+ valid_968_c_2
2260
+ valid_968_d_1
2261
+ valid_968_d_2
2262
+ valid_969_a_1
2263
+ valid_969_a_2
2264
+ valid_969_b_1
2265
+ valid_969_b_2
2266
+ valid_970_a_1
2267
+ valid_970_a_2
2268
+ valid_971_a_1
2269
+ valid_971_a_2
2270
+ valid_971_b_1
2271
+ valid_971_b_2
2272
+ valid_972_a_1
2273
+ valid_972_a_2
2274
+ valid_973_a_1
2275
+ valid_973_a_2
2276
+ valid_974_a_1
2277
+ valid_974_a_2
2278
+ valid_975_a_1
2279
+ valid_975_a_2
2280
+ valid_976_a_1
2281
+ valid_976_a_2
2282
+ valid_977_a_1
2283
+ valid_977_a_2
2284
+ valid_978_a_1
2285
+ valid_978_a_2
2286
+ valid_979_a_1
2287
+ valid_979_a_2
2288
+ valid_979_b_1
2289
+ valid_979_b_2
2290
+ valid_980_a_1
2291
+ valid_980_a_2
2292
+ valid_981_a_1
2293
+ valid_982_a_1
2294
+ valid_982_a_2
2295
+ valid_983_a_1
2296
+ valid_983_a_2
2297
+ valid_984_a_1
2298
+ valid_984_a_2
2299
+ valid_985_a_1
2300
+ valid_985_a_2
2301
+ valid_986_a_1
2302
+ valid_986_a_2
2303
+ valid_987_a_1
2304
+ valid_987_a_2
2305
+ valid_988_a_1
2306
+ valid_988_a_2
2307
+ valid_989_a_1
2308
+ valid_989_a_2
2309
+ valid_990_a_1
2310
+ valid_990_a_2
2311
+ valid_991_a_1
2312
+ valid_991_a_2
2313
+ valid_991_b_1
2314
+ valid_991_b_2
2315
+ valid_992_a_1
2316
+ valid_993_a_1
2317
+ valid_993_a_2
2318
+ valid_994_a_3
2319
+ valid_994_a_5
2320
+ valid_995_a_1
2321
+ valid_995_a_2
2322
+ valid_996_a_1
2323
+ valid_996_a_2
2324
+ valid_997_a_1
2325
+ valid_997_a_2
2326
+ valid_998_a_1
2327
+ valid_998_a_2
2328
+ valid_999_a_1
2329
+ valid_999_a_2
2330
+ valid_1000_a_1
2331
+ valid_1000_a_2
2332
+ valid_1001_a_1
2333
+ valid_1001_a_2
2334
+ valid_1002_a_1
2335
+ valid_1002_a_2
2336
+ valid_1003_a_1
2337
+ valid_1003_a_2
2338
+ valid_1004_a_1
2339
+ valid_1004_a_2
2340
+ valid_1005_a_1
2341
+ valid_1005_a_2
2342
+ valid_1005_b_1
2343
+ valid_1005_b_2
2344
+ valid_1006_a_1
2345
+ valid_1006_a_2
2346
+ valid_1006_b_1
2347
+ valid_1006_b_2
2348
+ valid_1006_c_1
2349
+ valid_1006_c_2
2350
+ valid_1007_a_1
2351
+ valid_1007_a_2
2352
+ valid_1008_a_1
2353
+ valid_1008_a_2
2354
+ valid_1009_a_1
2355
+ valid_1010_a_1
2356
+ valid_1010_a_2
2357
+ valid_1011_a_1
2358
+ valid_1011_a_2
2359
+ valid_1012_a_1
2360
+ valid_1012_a_2
2361
+ valid_1013_a_1
2362
+ valid_1013_a_2
2363
+ valid_1014_a_1
2364
+ valid_1014_a_2
2365
+ valid_1015_a_1
2366
+ valid_1015_a_2
2367
+ valid_1016_a_1
2368
+ valid_1016_a_2
2369
+ valid_1016_b_1
2370
+ valid_1016_b_2
2371
+ valid_1016_c_1
2372
+ valid_1016_c_2
2373
+ valid_1016_d_1
2374
+ valid_1016_d_2
2375
+ valid_1016_e_1
2376
+ valid_1016_e_2
2377
+ valid_1016_f_1
2378
+ valid_1016_f_2
2379
+ valid_1017_a_1
2380
+ valid_1018_a_1
2381
+ valid_1018_a_2
2382
+ valid_1019_a_1
2383
+ valid_1019_b_1
2384
+ valid_1019_b_2
2385
+ valid_1019_c_1
2386
+ valid_1019_c_2
2387
+ valid_1019_d_1
2388
+ valid_1020_a_1
2389
+ valid_1020_a_2
2390
+ valid_1021_a_1
2391
+ valid_1021_a_2
2392
+ valid_1022_a_1
2393
+ valid_1022_a_2
2394
+ valid_1023_a_1
2395
+ valid_1023_a_2
2396
+ valid_1024_a_1
2397
+ valid_1025_a_1
2398
+ valid_1025_a_2
2399
+ valid_1025_b_1
2400
+ valid_1025_b_2
2401
+ valid_1025_c_1
2402
+ valid_1025_c_2
2403
+ valid_1026_a_1
2404
+ valid_1026_a_2
2405
+ valid_1027_a_1
2406
+ valid_1028_a_1
2407
+ valid_1028_a_2
2408
+ valid_1029_a_1
2409
+ valid_1030_a_1
2410
+ valid_1030_a_2
2411
+ valid_1031_a_1
2412
+ valid_1031_a_2
2413
+ valid_1032_a_1
2414
+ valid_1032_a_2
2415
+ valid_1033_a_1
2416
+ valid_1033_a_2
2417
+ valid_1034_a_1
2418
+ valid_1034_a_2
2419
+ valid_1035_a_1
2420
+ valid_1035_a_2
2421
+ valid_1036_a_1
2422
+ valid_1036_a_2
2423
+ valid_1037_a_1
2424
+ valid_1037_a_2
2425
+ valid_1038_a_1
2426
+ valid_1038_a_2
2427
+ valid_1039_a_1
2428
+ valid_1040_a_1
2429
+ valid_1040_a_2
2430
+ valid_1041_a_1
2431
+ valid_1041_a_2
2432
+ valid_1041_b_1
2433
+ valid_1041_b_2
2434
+ valid_1041_c_1
2435
+ valid_1041_c_2
2436
+ valid_1041_d_1
2437
+ valid_1041_d_2
2438
+ valid_1042_a_1
2439
+ valid_1042_a_2
2440
+ valid_1043_a_1
2441
+ valid_1043_a_2
2442
+ valid_1044_a_1
2443
+ valid_1044_a_2
2444
+ valid_1045_a_1
2445
+ valid_1045_a_2
2446
+ valid_1046_a_1
2447
+ valid_1046_a_2
2448
+ valid_1047_a_1
2449
+ valid_1047_a_2
2450
+ valid_1048_a_1
2451
+ valid_1048_a_2
2452
+ valid_1049_a_1
2453
+ valid_1049_a_2
2454
+ valid_1050_a_1
2455
+ valid_1050_a_2
2456
+ valid_1051_a_1
2457
+ valid_1051_a_2
2458
+ valid_1052_a_1
2459
+ valid_1053_a_1
2460
+ valid_1053_a_2
2461
+ valid_1054_a_1
2462
+ valid_1054_a_2
2463
+ valid_1055_a_1
2464
+ valid_1055_a_2
2465
+ valid_1056_a_1
2466
+ valid_1056_a_2
2467
+ valid_1057_a_1
2468
+ valid_1057_a_2
2469
+ valid_1057_b_1
2470
+ valid_1057_b_2
2471
+ valid_1058_a_1
2472
+ valid_1058_a_2
2473
+ valid_1059_a_1
2474
+ valid_1059_a_2
2475
+ valid_1060_a_1
2476
+ valid_1060_a_2
2477
+ valid_1061_a_1
2478
+ valid_1061_a_2
2479
+ valid_1062_a_1
2480
+ valid_1062_a_2
2481
+ valid_1063_a_1
2482
+ valid_1063_a_2
2483
+ valid_1064_a_1
2484
+ valid_1064_a_2
2485
+ valid_1065_a_1
2486
+ valid_1065_a_2
2487
+ valid_1066_a_1
2488
+ valid_1066_a_2
2489
+ valid_1067_a_1
2490
+ valid_1067_a_2
2491
+ valid_1067_b_1
2492
+ valid_1067_b_2
2493
+ valid_1067_c_1
2494
+ valid_1067_c_2
2495
+ valid_1067_d_1
2496
+ valid_1067_d_2
2497
+ valid_1068_a_1
2498
+ valid_1068_a_2
2499
+ valid_1069_a_1
2500
+ valid_1069_a_2
2501
+ valid_1069_b_1
2502
+ valid_1069_b_2
2503
+ valid_1070_a_1
2504
+ valid_1070_a_2
2505
+ valid_1071_a_1
2506
+ valid_1071_a_2
2507
+ valid_1072_a_1
2508
+ valid_1073_a_1
2509
+ valid_1074_a_1
2510
+ valid_1074_a_2
2511
+ valid_1075_a_1
2512
+ valid_1075_a_2
2513
+ valid_1076_a_1
2514
+ valid_1076_a_2
2515
+ valid_1077_a_1
2516
+ valid_1077_a_2
2517
+ valid_1078_a_1
2518
+ valid_1078_a_2
2519
+ valid_1079_a_1
2520
+ valid_1079_a_2
2521
+ valid_1080_a_1
2522
+ valid_1081_a_1
2523
+ valid_1081_a_2
2524
+ valid_1081_b_1
2525
+ valid_1081_b_2
2526
+ valid_1082_a_1
2527
+ valid_1082_a_2
2528
+ valid_1082_b_1
2529
+ valid_1082_b_2
2530
+ valid_1083_a_1
2531
+ valid_1083_a_2
2532
+ valid_1084_a_1
2533
+ valid_1084_a_2
2534
+ valid_1085_a_1
2535
+ valid_1085_a_2
2536
+ valid_1086_a_1
2537
+ valid_1086_a_2
2538
+ valid_1087_a_1
2539
+ valid_1087_a_2
2540
+ valid_1088_a_1
2541
+ valid_1088_a_2
2542
+ valid_1089_a_1
2543
+ valid_1089_a_2
2544
+ valid_1090_a_1
2545
+ valid_1090_a_2
2546
+ valid_1091_a_1
2547
+ valid_1091_a_2
2548
+ valid_1092_a_1
2549
+ valid_1092_a_2
2550
+ valid_1093_a_1
2551
+ valid_1093_a_2
2552
+ valid_1094_a_1
2553
+ valid_1094_a_2
2554
+ valid_1095_a_1
2555
+ valid_1096_a_1
2556
+ valid_1096_a_2
2557
+ valid_1097_a_1
2558
+ valid_1097_a_2
2559
+ valid_1097_b_1
2560
+ valid_1097_b_2
2561
+ valid_1097_c_1
2562
+ valid_1097_c_2
2563
+ valid_1098_a_1
2564
+ valid_1098_a_2
2565
+ valid_1099_a_1
2566
+ valid_1099_a_2
2567
+ valid_1100_a_1
2568
+ valid_1100_a_2
2569
+ valid_1101_a_1
2570
+ valid_1101_a_2
2571
+ valid_1102_a_1
2572
+ valid_1102_a_2
2573
+ valid_1103_a_1
2574
+ valid_1103_a_2
2575
+ valid_1103_b_1
2576
+ valid_1103_b_2
2577
+ valid_1104_a_1
2578
+ valid_1104_a_2
2579
+ valid_1105_a_1
2580
+ valid_1105_a_2
2581
+ valid_1106_a_1
2582
+ valid_1106_a_2
2583
+ valid_1107_a_1
2584
+ valid_1107_a_2
2585
+ valid_1108_a_1
2586
+ valid_1109_a_1
2587
+ valid_1109_a_2
2588
+ valid_1110_a_1
2589
+ valid_1110_a_2
2590
+ valid_1111_a_1
2591
+ valid_1112_a_3
2592
+ valid_1112_a_5
2593
+ valid_1113_a_1
2594
+ valid_1113_a_2
2595
+ valid_1114_a_1
2596
+ valid_1114_a_2
2597
+ valid_1115_a_1
2598
+ valid_1116_a_1
2599
+ valid_1116_a_2
2600
+ valid_1117_a_1
2601
+ valid_1117_a_2
2602
+ valid_1118_a_1
2603
+ valid_1118_a_2
2604
+ valid_1119_a_1
2605
+ valid_1119_a_2
2606
+ valid_1120_a_1
2607
+ valid_1120_a_2
2608
+ valid_1121_a_1
2609
+ valid_1121_a_2
2610
+ valid_1122_a_1
2611
+ valid_1122_a_2
2612
+ valid_1123_a_1
2613
+ valid_1123_a_2
2614
+ valid_1124_a_1
2615
+ valid_1124_a_2
2616
+ valid_1125_a_1
2617
+ valid_1125_a_2
2618
+ valid_1126_a_1
2619
+ valid_1126_a_2
2620
+ valid_1126_b_1
2621
+ valid_1126_b_2
2622
+ valid_1126_c_1
2623
+ valid_1126_c_2
2624
+ valid_1127_a_1
2625
+ valid_1127_a_2
2626
+ valid_1128_a_1
2627
+ valid_1128_a_2
2628
+ valid_1129_a_1
2629
+ valid_1129_a_2
2630
+ valid_1130_a_1
2631
+ valid_1130_a_2
2632
+ valid_1131_a_1
2633
+ valid_1131_a_2
2634
+ valid_1131_b_1
2635
+ valid_1131_b_2
2636
+ valid_1132_a_1
2637
+ valid_1132_a_2
2638
+ valid_1133_a_1
2639
+ valid_1133_a_2
2640
+ valid_1134_a_1
2641
+ valid_1134_a_2
2642
+ valid_1135_a_1
2643
+ valid_1135_a_2
2644
+ valid_1136_a_1
2645
+ valid_1136_a_2
2646
+ valid_1137_a_1
2647
+ valid_1138_a_1
2648
+ valid_1138_a_2
2649
+ valid_1139_a_1
2650
+ valid_1139_a_2
2651
+ valid_1140_a_1
2652
+ valid_1140_a_2
2653
+ valid_1141_a_1
2654
+ valid_1141_a_2
2655
+ valid_1142_a_1
2656
+ valid_1142_a_2
2657
+ valid_1143_a_1
2658
+ valid_1143_a_2
2659
+ valid_1144_a_1
2660
+ valid_1144_a_2
2661
+ valid_1145_a_1
2662
+ valid_1145_a_2
2663
+ valid_1146_a_1
2664
+ valid_1147_a_1
2665
+ valid_1147_a_2
2666
+ valid_1147_b_1
2667
+ valid_1147_b_2
2668
+ valid_1148_a_1
2669
+ valid_1148_a_2
2670
+ valid_1148_b_1
2671
+ valid_1148_b_2
2672
+ valid_1149_a_1
2673
+ valid_1150_a_1
2674
+ valid_1150_a_2
2675
+ valid_1151_a_1
2676
+ valid_1151_a_2
2677
+ valid_1152_a_1
2678
+ valid_1152_a_2
2679
+ valid_1153_a_1
2680
+ valid_1153_a_2
2681
+ valid_1154_a_1
2682
+ valid_1154_a_2
2683
+ valid_1155_a_1
2684
+ valid_1155_a_2
2685
+ valid_1156_a_1
2686
+ valid_1156_a_2
2687
+ valid_1156_b_1
2688
+ valid_1156_b_2
2689
+ valid_1157_a_1
2690
+ valid_1157_a_2
2691
+ valid_1158_a_1
2692
+ valid_1158_a_2
2693
+ valid_1159_a_1
2694
+ valid_1160_a_1
2695
+ valid_1160_a_2
2696
+ valid_1161_a_1
2697
+ valid_1161_a_2
2698
+ valid_1162_a_1
2699
+ valid_1162_a_2
2700
+ valid_1163_a_1
2701
+ valid_1163_a_2
2702
+ valid_1164_a_1
2703
+ valid_1165_a_1
2704
+ valid_1165_a_2
2705
+ valid_1166_a_1
2706
+ valid_1167_a_1
2707
+ valid_1167_a_2
2708
+ valid_1168_a_1
2709
+ valid_1168_a_2
2710
+ valid_1169_a_1
2711
+ valid_1169_a_2
2712
+ valid_1170_a_3
2713
+ valid_1170_a_4
2714
+ valid_1170_a_6
2715
+ valid_1170_b_1
2716
+ valid_1170_b_2
2717
+ valid_1170_c_1
2718
+ valid_1170_c_2
2719
+ valid_1171_a_1
2720
+ valid_1171_a_2
2721
+ valid_1171_b_1
2722
+ valid_1171_b_2
2723
+ valid_1172_a_1
2724
+ valid_1172_a_2
2725
+ valid_1173_a_1
2726
+ valid_1173_a_2
2727
+ valid_1174_a_1
2728
+ valid_1174_a_2
2729
+ valid_1175_a_1
2730
+ valid_1175_a_2
2731
+ valid_1176_a_1
2732
+ valid_1176_a_2
2733
+ valid_1177_a_1
2734
+ valid_1177_a_2
2735
+ valid_1178_a_1
2736
+ valid_1178_a_2
2737
+ valid_1179_a_1
2738
+ valid_1179_a_2
2739
+ valid_1180_a_1
2740
+ valid_1181_a_1
2741
+ valid_1181_a_2
2742
+ valid_1182_a_1
2743
+ valid_1182_a_2
2744
+ valid_1183_a_1
2745
+ valid_1184_a_1
2746
+ valid_1184_a_2
2747
+ valid_1184_b_1
2748
+ valid_1184_b_2
2749
+ valid_1184_c_1
2750
+ valid_1184_c_2
2751
+ valid_1185_a_1
2752
+ valid_1185_a_2
2753
+ valid_1186_a_1
2754
+ valid_1186_a_2
2755
+ valid_1187_a_1
2756
+ valid_1187_a_2
2757
+ valid_1188_a_1
2758
+ valid_1188_a_2
2759
+ valid_1189_a_1
2760
+ valid_1189_a_2
2761
+ valid_1190_a_1
2762
+ valid_1190_a_2
2763
+ valid_1191_a_1
2764
+ valid_1191_a_2
2765
+ valid_1192_a_1
2766
+ valid_1192_a_2
2767
+ valid_1192_b_1
2768
+ valid_1192_b_2
2769
+ valid_1193_a_1
2770
+ valid_1193_a_2
2771
+ valid_1194_a_1
2772
+ valid_1194_a_2
2773
+ valid_1195_a_1
2774
+ valid_1196_a_1
2775
+ valid_1196_a_2
2776
+ valid_1197_a_1
2777
+ valid_1197_a_2
2778
+ valid_1198_a_1
2779
+ valid_1198_a_2
2780
+ valid_1199_a_1
2781
+ valid_1199_a_2
2782
+ valid_1200_a_1
2783
+ valid_1200_a_2
2784
+ valid_1201_a_1
2785
+ valid_1201_a_2
2786
+ valid_1202_a_1
2787
+ valid_1202_a_2
2788
+ valid_1203_a_1
2789
+ valid_1203_a_2
2790
+ valid_1204_a_1
2791
+ valid_1204_a_2
2792
+ valid_1205_a_1
2793
+ valid_1205_a_2
2794
+ valid_1206_a_1
2795
+ valid_1206_a_2
2796
+ valid_1207_a_1
2797
+ valid_1207_a_2
2798
+ valid_1208_a_1
2799
+ valid_1208_a_2
2800
+ valid_1209_a_1
2801
+ valid_1209_a_2
2802
+ valid_1209_b_1
2803
+ valid_1209_b_2
2804
+ valid_1210_a_1
2805
+ valid_1210_a_2
2806
+ valid_1211_a_1
2807
+ valid_1211_a_2
2808
+ valid_1212_a_1
2809
+ valid_1212_a_2
2810
+ valid_1213_a_1
2811
+ valid_1213_a_2
2812
+ valid_1214_a_1
2813
+ valid_1214_b_1
2814
+ valid_1214_b_2
2815
+ valid_1215_a_1
2816
+ valid_1215_a_2
2817
+ valid_1216_a_1
2818
+ valid_1216_a_2
2819
+ valid_1217_a_1
2820
+ valid_1217_a_2
2821
+ valid_1218_a_1
2822
+ valid_1219_a_1
2823
+ valid_1219_a_2
2824
+ valid_1220_a_1
2825
+ valid_1220_a_2
2826
+ valid_1221_a_1
2827
+ valid_1221_a_2
2828
+ valid_1222_a_1
2829
+ valid_1222_a_2
2830
+ valid_1223_a_1
2831
+ valid_1223_a_2
2832
+ valid_1224_a_1
2833
+ valid_1224_a_2
2834
+ valid_1225_a_1
2835
+ valid_1225_a_2
2836
+ valid_1226_a_1
2837
+ valid_1226_a_2
2838
+ valid_1227_a_1
2839
+ valid_1227_a_2
2840
+ valid_1228_a_1
2841
+ valid_1228_a_2
2842
+ valid_1229_a_1
2843
+ valid_1229_a_2
2844
+ valid_1230_a_1
2845
+ valid_1230_a_2
2846
+ valid_1231_a_1
2847
+ valid_1231_a_2
2848
+ valid_1232_a_1
2849
+ valid_1232_a_2
2850
+ valid_1233_a_1
2851
+ valid_1233_a_2
2852
+ valid_1234_a_1
2853
+ valid_1234_a_2
2854
+ valid_1235_a_1
2855
+ valid_1235_a_2
2856
+ valid_1235_b_1
2857
+ valid_1235_b_2
2858
+ valid_1236_a_1
2859
+ valid_1237_a_1
2860
+ valid_1237_a_2
2861
+ valid_1238_a_1
2862
+ valid_1238_a_2
2863
+ valid_1239_a_1
2864
+ valid_1239_a_2
2865
+ valid_1240_a_1
2866
+ valid_1240_b_1
2867
+ valid_1240_b_2
2868
+ valid_1241_a_1
2869
+ valid_1241_a_2
2870
+ valid_1242_a_1
2871
+ valid_1242_a_2
2872
+ valid_1243_a_1
2873
+ valid_1243_a_2
2874
+ valid_1243_b_1
2875
+ valid_1243_b_2
2876
+ valid_1244_a_1
2877
+ valid_1244_a_2
2878
+ valid_1245_a_1
2879
+ valid_1245_a_2
2880
+ valid_1246_a_1
2881
+ valid_1246_a_2
2882
+ valid_1247_a_1
2883
+ valid_1247_a_2
2884
+ valid_1247_b_1
2885
+ valid_1247_b_2
2886
+ valid_1248_a_1
2887
+ valid_1248_a_2
2888
+ valid_1249_a_1
2889
+ valid_1249_a_2
2890
+ valid_1250_a_1
2891
+ valid_1250_a_2
2892
+ valid_1250_b_1
2893
+ valid_1250_b_2
2894
+ valid_1251_a_1
2895
+ valid_1251_a_2
2896
+ valid_1252_a_1
2897
+ valid_1252_a_2
2898
+ valid_1253_a_1
2899
+ valid_1253_a_2
2900
+ valid_1254_a_1
2901
+ valid_1254_a_2
2902
+ valid_1255_a_1
2903
+ valid_1256_a_1
2904
+ valid_1256_a_2
2905
+ valid_1257_a_1
2906
+ valid_1257_a_2
2907
+ valid_1258_a_1
2908
+ valid_1258_a_2
2909
+ valid_1258_b_1
2910
+ valid_1258_b_2
2911
+ valid_1259_a_1
2912
+ valid_1259_a_2
2913
+ valid_1260_a_1
2914
+ valid_1261_a_1
2915
+ valid_1261_a_2
2916
+ valid_1262_a_1
2917
+ valid_1262_a_2
2918
+ valid_1263_a_1
2919
+ valid_1263_a_2
2920
+ valid_1264_a_1
2921
+ valid_1264_a_2
2922
+ valid_1265_a_1
2923
+ valid_1265_a_2
2924
+ valid_1266_a_1
2925
+ valid_1266_a_2
2926
+ valid_1267_a_1
2927
+ valid_1267_a_2
2928
+ valid_1267_b_1
2929
+ valid_1267_b_2
2930
+ valid_1267_c_1
2931
+ valid_1267_c_2
2932
+ valid_1268_a_1
2933
+ valid_1268_a_2
2934
+ valid_1269_a_1
2935
+ valid_1269_a_2
2936
+ valid_1270_a_1
2937
+ valid_1271_a_1
2938
+ valid_1272_a_1
2939
+ valid_1272_a_2
2940
+ valid_1273_a_1
2941
+ valid_1273_a_2
2942
+ valid_1274_a_1
2943
+ valid_1274_a_2
2944
+ valid_1275_a_1
2945
+ valid_1275_a_2
2946
+ valid_1276_a_1
2947
+ valid_1276_a_2
2948
+ valid_1277_a_1
2949
+ valid_1277_a_2
2950
+ valid_1278_a_1
2951
+ valid_1278_a_2
2952
+ valid_1279_a_1
2953
+ valid_1279_a_2
2954
+ valid_1280_a_1
2955
+ valid_1281_a_1
2956
+ valid_1281_a_2
2957
+ valid_1282_a_1
2958
+ valid_1282_a_2
2959
+ valid_1283_a_1
2960
+ valid_1283_a_2
2961
+ valid_1284_a_1
2962
+ valid_1284_a_2
2963
+ valid_1285_a_1
2964
+ valid_1286_a_1
2965
+ valid_1286_a_2
2966
+ valid_1286_b_1
2967
+ valid_1286_b_2
2968
+ valid_1287_a_1
2969
+ valid_1287_a_2
2970
+ valid_1288_a_1
2971
+ valid_1288_a_2
2972
+ valid_1289_a_1
2973
+ valid_1290_a_1
2974
+ valid_1290_a_2
2975
+ valid_1291_a_1
2976
+ valid_1291_a_2
2977
+ valid_1292_a_1
2978
+ valid_1292_a_2
2979
+ valid_1293_a_1
2980
+ valid_1293_a_2
2981
+ valid_1294_a_1
2982
+ valid_1294_a_2
2983
+ valid_1295_a_1
2984
+ valid_1295_a_2
2985
+ valid_1296_a_1
2986
+ valid_1296_a_2
2987
+ valid_1297_a_1
2988
+ valid_1297_a_2
2989
+ valid_1298_a_1
2990
+ valid_1298_a_2
2991
+ valid_1299_a_1
2992
+ valid_1299_a_2
2993
+ valid_1300_a_1
2994
+ valid_1300_a_2
2995
+ valid_1301_a_1
2996
+ valid_1301_a_2
2997
+ valid_1302_a_1
2998
+ valid_1302_a_2
2999
+ valid_1303_a_1
3000
+ valid_1303_a_2
3001
+ valid_1304_a_1
3002
+ valid_1304_a_2
data/splits/ct_rate/train.txt ADDED
The diff for this file is too large to render. See raw diff
 
data/splits/ct_rate/val.txt ADDED
@@ -0,0 +1,2994 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ train_17_a_1
2
+ train_17_a_2
3
+ train_34_a_1
4
+ train_34_a_2
5
+ train_46_a_1
6
+ train_46_a_2
7
+ train_46_b_1
8
+ train_46_b_2
9
+ train_100_a_1
10
+ train_100_a_2
11
+ train_104_a_1
12
+ train_104_a_2
13
+ train_118_a_1
14
+ train_118_a_2
15
+ train_134_a_1
16
+ train_134_a_2
17
+ train_135_a_1
18
+ train_135_a_2
19
+ train_162_a_1
20
+ train_162_a_2
21
+ train_181_a_1
22
+ train_181_a_2
23
+ train_216_a_1
24
+ train_216_a_2
25
+ train_217_a_1
26
+ train_217_a_2
27
+ train_241_a_1
28
+ train_241_a_2
29
+ train_242_a_1
30
+ train_242_a_2
31
+ train_327_a_1
32
+ train_327_a_2
33
+ train_334_a_1
34
+ train_334_a_2
35
+ train_343_a_1
36
+ train_343_a_2
37
+ train_346_a_1
38
+ train_346_a_2
39
+ train_376_a_1
40
+ train_376_a_2
41
+ train_394_a_1
42
+ train_394_a_2
43
+ train_424_a_1
44
+ train_424_a_2
45
+ train_431_a_3
46
+ train_431_a_5
47
+ train_431_b_1
48
+ train_431_b_2
49
+ train_432_a_1
50
+ train_432_a_2
51
+ train_448_a_1
52
+ train_448_a_2
53
+ train_455_a_1
54
+ train_455_a_2
55
+ train_473_a_1
56
+ train_473_a_2
57
+ train_484_a_1
58
+ train_484_a_2
59
+ train_499_a_1
60
+ train_543_a_1
61
+ train_543_a_2
62
+ train_558_a_1
63
+ train_558_a_2
64
+ train_575_a_1
65
+ train_575_a_2
66
+ train_597_a_1
67
+ train_686_a_1
68
+ train_686_a_2
69
+ train_737_a_1
70
+ train_737_a_2
71
+ train_758_a_1
72
+ train_758_a_2
73
+ train_767_a_1
74
+ train_767_b_1
75
+ train_818_a_1
76
+ train_818_a_2
77
+ train_831_a_1
78
+ train_831_a_2
79
+ train_846_a_1
80
+ train_861_a_3
81
+ train_861_a_5
82
+ train_943_a_1
83
+ train_959_a_1
84
+ train_959_a_2
85
+ train_975_a_1
86
+ train_977_a_1
87
+ train_977_a_2
88
+ train_982_a_1
89
+ train_982_a_2
90
+ train_994_a_1
91
+ train_994_b_1
92
+ train_994_c_1
93
+ train_994_d_1
94
+ train_994_d_2
95
+ train_994_e_1
96
+ train_994_e_2
97
+ train_998_a_1
98
+ train_998_a_2
99
+ train_998_b_1
100
+ train_998_b_2
101
+ train_998_c_1
102
+ train_998_c_2
103
+ train_1013_a_1
104
+ train_1013_a_2
105
+ train_1026_a_1
106
+ train_1026_a_2
107
+ train_1067_a_1
108
+ train_1098_a_1
109
+ train_1098_a_2
110
+ train_1099_a_1
111
+ train_1099_a_2
112
+ train_1107_a_1
113
+ train_1107_a_2
114
+ train_1113_a_1
115
+ train_1113_a_2
116
+ train_1116_a_1
117
+ train_1116_a_2
118
+ train_1129_a_1
119
+ train_1129_a_2
120
+ train_1131_a_1
121
+ train_1171_a_1
122
+ train_1171_a_2
123
+ train_1194_a_1
124
+ train_1194_a_2
125
+ train_1212_a_1
126
+ train_1212_a_2
127
+ train_1218_a_1
128
+ train_1218_a_2
129
+ train_1218_b_1
130
+ train_1218_b_2
131
+ train_1225_a_1
132
+ train_1225_a_2
133
+ train_1233_a_1
134
+ train_1233_a_2
135
+ train_1240_a_1
136
+ train_1240_a_2
137
+ train_1246_a_1
138
+ train_1246_a_2
139
+ train_1246_b_1
140
+ train_1246_b_2
141
+ train_1246_c_1
142
+ train_1246_c_2
143
+ train_1270_a_1
144
+ train_1270_a_2
145
+ train_1270_b_1
146
+ train_1270_b_2
147
+ train_1291_a_1
148
+ train_1291_a_2
149
+ train_1293_a_1
150
+ train_1293_a_2
151
+ train_1296_a_1
152
+ train_1296_a_2
153
+ train_1339_a_1
154
+ train_1339_a_2
155
+ train_1342_a_1
156
+ train_1342_a_2
157
+ train_1359_a_1
158
+ train_1359_a_2
159
+ train_1399_a_1
160
+ train_1399_a_2
161
+ train_1419_a_1
162
+ train_1419_a_2
163
+ train_1420_a_1
164
+ train_1420_a_2
165
+ train_1463_a_1
166
+ train_1463_a_2
167
+ train_1464_a_1
168
+ train_1464_a_2
169
+ train_1491_a_1
170
+ train_1491_a_2
171
+ train_1491_b_1
172
+ train_1491_b_2
173
+ train_1505_a_1
174
+ train_1505_a_2
175
+ train_1567_a_1
176
+ train_1567_a_2
177
+ train_1578_a_1
178
+ train_1578_a_2
179
+ train_1636_a_1
180
+ train_1636_a_2
181
+ train_1644_a_1
182
+ train_1644_a_2
183
+ train_1645_a_1
184
+ train_1645_a_2
185
+ train_1650_a_1
186
+ train_1650_a_2
187
+ train_1655_a_1
188
+ train_1655_a_2
189
+ train_1655_b_1
190
+ train_1655_b_2
191
+ train_1657_a_1
192
+ train_1657_a_2
193
+ train_1690_a_1
194
+ train_1708_a_1
195
+ train_1708_a_2
196
+ train_1708_b_1
197
+ train_1708_b_2
198
+ train_1708_c_1
199
+ train_1708_c_2
200
+ train_1708_d_1
201
+ train_1708_d_2
202
+ train_1716_a_1
203
+ train_1716_a_2
204
+ train_1736_a_1
205
+ train_1736_a_2
206
+ train_1739_a_1
207
+ train_1739_a_2
208
+ train_1753_a_1
209
+ train_1753_a_2
210
+ train_1753_b_1
211
+ train_1753_b_2
212
+ train_1753_c_1
213
+ train_1753_c_2
214
+ train_1753_d_1
215
+ train_1753_d_2
216
+ train_1753_e_1
217
+ train_1753_e_2
218
+ train_1753_f_1
219
+ train_1753_f_2
220
+ train_1767_a_1
221
+ train_1767_a_2
222
+ train_1774_a_1
223
+ train_1774_a_2
224
+ train_1784_a_1
225
+ train_1784_a_2
226
+ train_1795_a_1
227
+ train_1795_a_2
228
+ train_1811_a_1
229
+ train_1811_a_2
230
+ train_1831_a_1
231
+ train_1831_a_2
232
+ train_1832_a_1
233
+ train_1832_a_2
234
+ train_1849_a_1
235
+ train_1849_a_2
236
+ train_1886_a_1
237
+ train_1886_a_2
238
+ train_1886_b_1
239
+ train_1886_b_2
240
+ train_1928_a_1
241
+ train_1928_a_2
242
+ train_1932_a_1
243
+ train_1932_a_2
244
+ train_1933_a_1
245
+ train_1933_a_2
246
+ train_1933_b_1
247
+ train_1933_b_2
248
+ train_1949_a_1
249
+ train_1949_a_2
250
+ train_1959_a_1
251
+ train_1959_b_1
252
+ train_1959_b_2
253
+ train_1981_a_1
254
+ train_1981_a_2
255
+ train_1985_a_1
256
+ train_1985_a_2
257
+ train_1994_a_1
258
+ train_1994_a_2
259
+ train_2009_a_1
260
+ train_2009_a_2
261
+ train_2020_a_1
262
+ train_2020_a_2
263
+ train_2030_a_1
264
+ train_2030_a_2
265
+ train_2031_a_1
266
+ train_2031_a_2
267
+ train_2032_a_1
268
+ train_2032_a_2
269
+ train_2035_a_1
270
+ train_2035_a_2
271
+ train_2064_a_1
272
+ train_2064_a_2
273
+ train_2091_a_1
274
+ train_2091_a_2
275
+ train_2092_a_1
276
+ train_2092_a_2
277
+ train_2117_a_1
278
+ train_2117_a_2
279
+ train_2131_a_1
280
+ train_2131_a_2
281
+ train_2140_a_1
282
+ train_2140_a_2
283
+ train_2147_a_1
284
+ train_2147_a_2
285
+ train_2155_a_1
286
+ train_2155_a_2
287
+ train_2185_a_1
288
+ train_2185_a_2
289
+ train_2194_a_1
290
+ train_2194_a_2
291
+ train_2219_a_1
292
+ train_2219_a_2
293
+ train_2220_a_3
294
+ train_2220_a_5
295
+ train_2232_a_1
296
+ train_2232_a_2
297
+ train_2243_a_1
298
+ train_2243_a_2
299
+ train_2257_a_1
300
+ train_2257_a_2
301
+ train_2295_a_1
302
+ train_2295_a_2
303
+ train_2313_a_1
304
+ train_2313_a_2
305
+ train_2328_a_1
306
+ train_2328_a_2
307
+ train_2381_a_1
308
+ train_2381_a_2
309
+ train_2385_a_1
310
+ train_2385_a_2
311
+ train_2393_a_1
312
+ train_2393_a_2
313
+ train_2400_a_1
314
+ train_2400_a_2
315
+ train_2418_a_1
316
+ train_2418_a_2
317
+ train_2421_a_1
318
+ train_2431_a_1
319
+ train_2431_a_2
320
+ train_2432_a_1
321
+ train_2432_a_2
322
+ train_2439_a_1
323
+ train_2439_a_2
324
+ train_2451_a_1
325
+ train_2451_a_2
326
+ train_2454_a_1
327
+ train_2454_a_2
328
+ train_2478_a_1
329
+ train_2478_a_2
330
+ train_2479_a_1
331
+ train_2491_a_1
332
+ train_2491_a_2
333
+ train_2500_a_1
334
+ train_2500_a_2
335
+ train_2500_b_1
336
+ train_2500_b_2
337
+ train_2500_c_1
338
+ train_2500_c_2
339
+ train_2500_d_1
340
+ train_2500_d_2
341
+ train_2507_a_1
342
+ train_2507_a_2
343
+ train_2512_a_1
344
+ train_2512_a_2
345
+ train_2512_b_1
346
+ train_2512_b_2
347
+ train_2530_a_1
348
+ train_2530_a_2
349
+ train_2537_a_1
350
+ train_2537_a_2
351
+ train_2537_b_1
352
+ train_2537_b_2
353
+ train_2557_a_1
354
+ train_2557_a_2
355
+ train_2566_a_1
356
+ train_2570_a_1
357
+ train_2572_a_1
358
+ train_2572_a_2
359
+ train_2574_a_1
360
+ train_2574_a_2
361
+ train_2574_b_1
362
+ train_2574_b_2
363
+ train_2582_a_1
364
+ train_2582_a_2
365
+ train_2591_a_1
366
+ train_2591_a_2
367
+ train_2593_a_1
368
+ train_2593_a_2
369
+ train_2641_a_1
370
+ train_2642_a_1
371
+ train_2642_a_2
372
+ train_2644_a_1
373
+ train_2652_a_1
374
+ train_2652_a_2
375
+ train_2663_a_1
376
+ train_2663_a_2
377
+ train_2680_a_1
378
+ train_2680_a_2
379
+ train_2709_a_1
380
+ train_2709_a_2
381
+ train_2720_a_1
382
+ train_2720_a_2
383
+ train_2786_a_1
384
+ train_2786_a_2
385
+ train_2818_a_1
386
+ train_2818_a_2
387
+ train_2820_a_1
388
+ train_2820_a_2
389
+ train_2827_a_1
390
+ train_2827_a_2
391
+ train_2860_a_1
392
+ train_2860_a_2
393
+ train_2871_a_4
394
+ train_2871_a_6
395
+ train_2884_a_1
396
+ train_2884_a_2
397
+ train_2888_a_1
398
+ train_2888_a_2
399
+ train_2913_a_1
400
+ train_2913_b_1
401
+ train_2913_b_2
402
+ train_2913_c_1
403
+ train_2913_c_2
404
+ train_2949_a_1
405
+ train_2949_a_2
406
+ train_2956_a_1
407
+ train_2956_a_2
408
+ train_2957_a_1
409
+ train_2957_a_2
410
+ train_2963_a_1
411
+ train_2963_a_2
412
+ train_2963_b_1
413
+ train_2963_b_2
414
+ train_2963_c_1
415
+ train_2963_c_2
416
+ train_2963_d_1
417
+ train_2963_d_2
418
+ train_2963_e_1
419
+ train_2963_e_2
420
+ train_2963_f_1
421
+ train_2963_f_2
422
+ train_2970_a_1
423
+ train_2970_a_2
424
+ train_2982_a_1
425
+ train_2982_a_2
426
+ train_3002_a_1
427
+ train_3002_a_2
428
+ train_3073_a_1
429
+ train_3073_a_2
430
+ train_3073_b_1
431
+ train_3073_b_2
432
+ train_3099_a_1
433
+ train_3099_a_2
434
+ train_3100_a_1
435
+ train_3100_a_2
436
+ train_3103_a_1
437
+ train_3146_a_1
438
+ train_3146_a_2
439
+ train_3164_a_1
440
+ train_3164_a_2
441
+ train_3175_a_1
442
+ train_3175_a_2
443
+ train_3246_a_1
444
+ train_3246_a_2
445
+ train_3283_a_1
446
+ train_3283_a_2
447
+ train_3304_a_1
448
+ train_3304_a_2
449
+ train_3312_a_1
450
+ train_3312_a_2
451
+ train_3312_b_1
452
+ train_3312_b_2
453
+ train_3324_a_1
454
+ train_3324_a_2
455
+ train_3326_a_1
456
+ train_3326_a_2
457
+ train_3326_b_3
458
+ train_3326_b_5
459
+ train_3327_a_1
460
+ train_3327_a_2
461
+ train_3341_a_1
462
+ train_3341_a_2
463
+ train_3342_a_1
464
+ train_3342_a_2
465
+ train_3346_a_1
466
+ train_3346_a_2
467
+ train_3349_a_1
468
+ train_3349_a_2
469
+ train_3359_a_1
470
+ train_3359_a_2
471
+ train_3383_a_1
472
+ train_3383_a_2
473
+ train_3400_a_1
474
+ train_3400_a_2
475
+ train_3440_a_1
476
+ train_3440_a_2
477
+ train_3450_a_1
478
+ train_3450_a_2
479
+ train_3457_a_1
480
+ train_3457_a_2
481
+ train_3466_a_1
482
+ train_3466_a_2
483
+ train_3466_b_1
484
+ train_3466_b_2
485
+ train_3478_a_1
486
+ train_3478_a_2
487
+ train_3486_a_1
488
+ train_3486_a_2
489
+ train_3508_a_1
490
+ train_3508_a_2
491
+ train_3508_b_1
492
+ train_3508_b_2
493
+ train_3528_a_1
494
+ train_3528_a_2
495
+ train_3535_a_1
496
+ train_3535_a_2
497
+ train_3535_b_1
498
+ train_3535_b_2
499
+ train_3537_a_1
500
+ train_3537_a_2
501
+ train_3559_a_1
502
+ train_3559_a_2
503
+ train_3576_a_1
504
+ train_3576_a_2
505
+ train_3578_a_1
506
+ train_3578_a_2
507
+ train_3611_a_1
508
+ train_3611_a_2
509
+ train_3631_a_1
510
+ train_3631_a_2
511
+ train_3631_b_1
512
+ train_3631_b_2
513
+ train_3631_c_1
514
+ train_3631_c_2
515
+ train_3639_a_1
516
+ train_3639_a_2
517
+ train_3640_a_1
518
+ train_3640_a_2
519
+ train_3640_b_1
520
+ train_3640_b_2
521
+ train_3649_a_1
522
+ train_3650_a_1
523
+ train_3650_a_2
524
+ train_3664_a_1
525
+ train_3664_a_2
526
+ train_3683_a_1
527
+ train_3683_a_2
528
+ train_3691_a_1
529
+ train_3691_a_2
530
+ train_3697_a_1
531
+ train_3697_a_2
532
+ train_3732_a_1
533
+ train_3732_a_2
534
+ train_3732_b_1
535
+ train_3732_b_2
536
+ train_3734_a_3
537
+ train_3734_a_5
538
+ train_3738_a_1
539
+ train_3738_a_2
540
+ train_3748_a_1
541
+ train_3748_a_2
542
+ train_3748_b_1
543
+ train_3748_b_2
544
+ train_3759_a_1
545
+ train_3759_a_2
546
+ train_3759_b_1
547
+ train_3759_b_2
548
+ train_3830_a_1
549
+ train_3830_a_2
550
+ train_3848_a_1
551
+ train_3848_a_2
552
+ train_3849_a_1
553
+ train_3849_a_2
554
+ train_3861_a_1
555
+ train_3889_a_1
556
+ train_3889_a_2
557
+ train_3896_a_1
558
+ train_3896_a_2
559
+ train_3902_a_1
560
+ train_3902_a_2
561
+ train_3906_a_1
562
+ train_3906_a_2
563
+ train_3918_a_1
564
+ train_3918_a_2
565
+ train_3918_b_1
566
+ train_3918_b_2
567
+ train_3918_c_1
568
+ train_3918_c_2
569
+ train_3933_a_1
570
+ train_3933_a_2
571
+ train_3951_a_1
572
+ train_3951_a_2
573
+ train_3969_a_1
574
+ train_3969_a_2
575
+ train_3984_a_1
576
+ train_4031_a_1
577
+ train_4031_a_2
578
+ train_4048_a_1
579
+ train_4048_a_2
580
+ train_4049_a_1
581
+ train_4049_a_2
582
+ train_4057_a_1
583
+ train_4068_a_1
584
+ train_4068_a_2
585
+ train_4086_a_1
586
+ train_4086_a_2
587
+ train_4112_a_1
588
+ train_4112_a_2
589
+ train_4122_a_1
590
+ train_4122_a_2
591
+ train_4122_b_1
592
+ train_4122_b_2
593
+ train_4130_a_1
594
+ train_4130_a_2
595
+ train_4137_a_1
596
+ train_4137_a_2
597
+ train_4151_a_1
598
+ train_4151_a_2
599
+ train_4151_b_1
600
+ train_4151_b_2
601
+ train_4207_a_1
602
+ train_4207_a_2
603
+ train_4219_a_1
604
+ train_4219_a_2
605
+ train_4226_a_1
606
+ train_4226_a_2
607
+ train_4228_a_1
608
+ train_4228_a_2
609
+ train_4231_a_1
610
+ train_4231_a_2
611
+ train_4240_a_1
612
+ train_4240_a_2
613
+ train_4241_a_1
614
+ train_4241_a_2
615
+ train_4255_a_1
616
+ train_4255_a_2
617
+ train_4289_a_1
618
+ train_4289_a_2
619
+ train_4296_a_1
620
+ train_4296_a_2
621
+ train_4296_b_1
622
+ train_4296_b_2
623
+ train_4301_a_1
624
+ train_4301_a_2
625
+ train_4320_a_1
626
+ train_4320_a_2
627
+ train_4331_a_1
628
+ train_4331_a_2
629
+ train_4331_b_1
630
+ train_4331_b_2
631
+ train_4331_c_1
632
+ train_4331_c_2
633
+ train_4367_a_1
634
+ train_4367_a_2
635
+ train_4378_a_1
636
+ train_4378_a_2
637
+ train_4383_a_1
638
+ train_4383_a_2
639
+ train_4388_a_1
640
+ train_4388_a_2
641
+ train_4391_a_1
642
+ train_4391_a_2
643
+ train_4400_a_1
644
+ train_4400_a_2
645
+ train_4434_a_1
646
+ train_4434_a_2
647
+ train_4444_a_1
648
+ train_4444_a_2
649
+ train_4449_a_1
650
+ train_4449_a_2
651
+ train_4462_a_1
652
+ train_4462_a_2
653
+ train_4474_a_1
654
+ train_4474_a_2
655
+ train_4499_a_1
656
+ train_4499_a_2
657
+ train_4508_a_1
658
+ train_4508_a_2
659
+ train_4560_a_1
660
+ train_4560_a_2
661
+ train_4565_a_1
662
+ train_4565_a_2
663
+ train_4572_a_1
664
+ train_4572_a_2
665
+ train_4577_a_1
666
+ train_4577_a_2
667
+ train_4583_a_1
668
+ train_4583_a_2
669
+ train_4589_a_1
670
+ train_4589_a_2
671
+ train_4589_b_1
672
+ train_4589_b_2
673
+ train_4596_a_1
674
+ train_4596_a_2
675
+ train_4612_a_1
676
+ train_4612_a_2
677
+ train_4628_a_1
678
+ train_4640_a_1
679
+ train_4640_a_2
680
+ train_4698_a_1
681
+ train_4698_a_2
682
+ train_4709_a_1
683
+ train_4710_a_1
684
+ train_4710_a_2
685
+ train_4715_a_1
686
+ train_4715_a_2
687
+ train_4715_b_1
688
+ train_4715_b_2
689
+ train_4729_a_1
690
+ train_4729_a_2
691
+ train_4798_a_1
692
+ train_4798_a_2
693
+ train_4801_a_1
694
+ train_4801_a_3
695
+ train_4816_a_1
696
+ train_4821_a_1
697
+ train_4821_a_2
698
+ train_4833_a_1
699
+ train_4833_a_2
700
+ train_4834_a_1
701
+ train_4834_a_2
702
+ train_4845_a_1
703
+ train_4845_a_2
704
+ train_4859_a_1
705
+ train_4859_b_1
706
+ train_4859_b_2
707
+ train_4859_c_1
708
+ train_4859_c_2
709
+ train_4859_d_1
710
+ train_4859_d_2
711
+ train_4859_e_1
712
+ train_4859_e_2
713
+ train_4859_f_1
714
+ train_4859_f_2
715
+ train_4892_a_1
716
+ train_4920_a_1
717
+ train_4920_a_2
718
+ train_4953_a_1
719
+ train_4953_a_2
720
+ train_4953_a_3
721
+ train_4978_a_1
722
+ train_4978_a_2
723
+ train_4993_a_1
724
+ train_4993_a_2
725
+ train_5009_a_1
726
+ train_5009_a_2
727
+ train_5011_a_1
728
+ train_5011_a_2
729
+ train_5026_a_1
730
+ train_5026_a_2
731
+ train_5029_a_1
732
+ train_5029_a_2
733
+ train_5041_a_1
734
+ train_5041_a_2
735
+ train_5043_a_1
736
+ train_5053_a_1
737
+ train_5053_b_1
738
+ train_5053_b_2
739
+ train_5091_a_1
740
+ train_5091_a_2
741
+ train_5096_a_1
742
+ train_5096_a_2
743
+ train_5096_b_1
744
+ train_5096_b_2
745
+ train_5108_a_1
746
+ train_5109_a_1
747
+ train_5109_a_2
748
+ train_5115_a_1
749
+ train_5115_a_2
750
+ train_5120_a_1
751
+ train_5131_a_1
752
+ train_5131_a_2
753
+ train_5155_a_1
754
+ train_5155_a_2
755
+ train_5161_a_1
756
+ train_5161_a_2
757
+ train_5172_a_1
758
+ train_5172_a_2
759
+ train_5189_a_1
760
+ train_5189_a_2
761
+ train_5209_a_1
762
+ train_5209_a_2
763
+ train_5209_b_1
764
+ train_5209_b_2
765
+ train_5213_a_1
766
+ train_5213_a_2
767
+ train_5214_a_1
768
+ train_5214_a_2
769
+ train_5225_a_1
770
+ train_5225_a_2
771
+ train_5227_a_1
772
+ train_5238_a_1
773
+ train_5238_a_2
774
+ train_5241_a_1
775
+ train_5241_a_2
776
+ train_5259_a_1
777
+ train_5259_a_2
778
+ train_5286_a_1
779
+ train_5286_a_2
780
+ train_5316_a_1
781
+ train_5357_a_1
782
+ train_5357_b_1
783
+ train_5357_b_2
784
+ train_5370_a_1
785
+ train_5370_a_2
786
+ train_5378_a_1
787
+ train_5378_a_2
788
+ train_5389_a_1
789
+ train_5389_a_2
790
+ train_5404_a_1
791
+ train_5404_a_2
792
+ train_5404_b_1
793
+ train_5404_b_2
794
+ train_5434_a_1
795
+ train_5434_a_2
796
+ train_5438_a_1
797
+ train_5438_a_2
798
+ train_5443_a_1
799
+ train_5443_a_2
800
+ train_5490_a_1
801
+ train_5503_a_1
802
+ train_5503_a_2
803
+ train_5508_a_1
804
+ train_5508_a_2
805
+ train_5508_b_1
806
+ train_5508_b_2
807
+ train_5508_c_1
808
+ train_5508_c_2
809
+ train_5513_a_1
810
+ train_5517_a_1
811
+ train_5517_a_2
812
+ train_5524_a_1
813
+ train_5530_a_1
814
+ train_5530_a_2
815
+ train_5586_a_1
816
+ train_5590_a_1
817
+ train_5590_a_2
818
+ train_5591_a_1
819
+ train_5591_a_2
820
+ train_5623_a_1
821
+ train_5623_a_2
822
+ train_5625_a_1
823
+ train_5625_a_2
824
+ train_5636_a_1
825
+ train_5636_a_2
826
+ train_5642_a_1
827
+ train_5642_a_2
828
+ train_5686_a_1
829
+ train_5686_a_2
830
+ train_5720_a_1
831
+ train_5720_a_2
832
+ train_5768_a_1
833
+ train_5768_a_2
834
+ train_5774_a_1
835
+ train_5774_a_2
836
+ train_5776_a_1
837
+ train_5776_a_2
838
+ train_5799_a_1
839
+ train_5799_a_2
840
+ train_5827_a_1
841
+ train_5866_a_1
842
+ train_5866_a_2
843
+ train_5872_a_1
844
+ train_5872_a_2
845
+ train_5886_a_1
846
+ train_5886_a_2
847
+ train_5886_b_1
848
+ train_5886_b_2
849
+ train_5892_a_1
850
+ train_5892_a_2
851
+ train_5900_a_1
852
+ train_5900_a_2
853
+ train_5904_a_1
854
+ train_5904_a_2
855
+ train_5904_b_1
856
+ train_5904_b_2
857
+ train_5907_a_1
858
+ train_5907_a_2
859
+ train_5922_a_1
860
+ train_5922_a_2
861
+ train_5938_a_1
862
+ train_5938_a_2
863
+ train_5959_a_1
864
+ train_5959_a_2
865
+ train_5978_a_1
866
+ train_6023_a_1
867
+ train_6023_a_2
868
+ train_6025_a_1
869
+ train_6025_a_2
870
+ train_6050_a_1
871
+ train_6050_a_2
872
+ train_6050_b_1
873
+ train_6050_b_2
874
+ train_6053_a_1
875
+ train_6053_a_2
876
+ train_6056_a_1
877
+ train_6056_a_2
878
+ train_6057_a_1
879
+ train_6065_a_1
880
+ train_6097_a_1
881
+ train_6097_a_2
882
+ train_6126_a_1
883
+ train_6126_a_2
884
+ train_6130_a_1
885
+ train_6130_a_2
886
+ train_6130_b_1
887
+ train_6130_b_2
888
+ train_6161_a_1
889
+ train_6161_a_2
890
+ train_6166_a_1
891
+ train_6166_a_2
892
+ train_6166_b_1
893
+ train_6166_b_2
894
+ train_6180_a_1
895
+ train_6180_a_2
896
+ train_6189_a_1
897
+ train_6189_a_2
898
+ train_6193_a_1
899
+ train_6193_a_2
900
+ train_6207_a_1
901
+ train_6214_a_1
902
+ train_6214_a_2
903
+ train_6219_a_1
904
+ train_6219_a_2
905
+ train_6250_a_1
906
+ train_6250_a_2
907
+ train_6328_a_1
908
+ train_6328_a_2
909
+ train_6335_a_1
910
+ train_6335_b_1
911
+ train_6335_b_2
912
+ train_6343_a_1
913
+ train_6368_a_1
914
+ train_6368_a_2
915
+ train_6387_a_1
916
+ train_6408_a_1
917
+ train_6408_a_2
918
+ train_6414_a_1
919
+ train_6414_a_2
920
+ train_6425_a_1
921
+ train_6425_a_2
922
+ train_6427_a_1
923
+ train_6427_a_2
924
+ train_6449_a_1
925
+ train_6454_a_1
926
+ train_6454_a_2
927
+ train_6458_a_3
928
+ train_6458_a_5
929
+ train_6481_a_1
930
+ train_6481_a_2
931
+ train_6502_a_1
932
+ train_6502_a_2
933
+ train_6502_b_1
934
+ train_6502_b_2
935
+ train_6506_a_1
936
+ train_6506_a_2
937
+ train_6506_b_1
938
+ train_6506_b_2
939
+ train_6517_a_1
940
+ train_6517_a_2
941
+ train_6522_a_1
942
+ train_6522_a_2
943
+ train_6522_b_1
944
+ train_6522_b_2
945
+ train_6522_c_1
946
+ train_6522_c_2
947
+ train_6522_d_1
948
+ train_6522_d_2
949
+ train_6527_a_1
950
+ train_6527_a_2
951
+ train_6529_a_1
952
+ train_6529_a_2
953
+ train_6552_a_1
954
+ train_6552_a_2
955
+ train_6554_a_1
956
+ train_6554_a_2
957
+ train_6581_a_1
958
+ train_6581_a_2
959
+ train_6584_a_1
960
+ train_6584_a_2
961
+ train_6584_a_3
962
+ train_6588_a_1
963
+ train_6588_a_2
964
+ train_6592_a_1
965
+ train_6605_a_1
966
+ train_6605_a_2
967
+ train_6608_a_1
968
+ train_6608_a_2
969
+ train_6611_a_1
970
+ train_6611_a_2
971
+ train_6611_b_1
972
+ train_6611_b_2
973
+ train_6626_a_1
974
+ train_6626_a_2
975
+ train_6636_a_1
976
+ train_6636_a_2
977
+ train_6644_a_1
978
+ train_6644_a_2
979
+ train_6648_a_1
980
+ train_6648_a_2
981
+ train_6655_a_1
982
+ train_6655_a_2
983
+ train_6658_a_1
984
+ train_6658_a_2
985
+ train_6675_a_1
986
+ train_6675_a_2
987
+ train_6677_a_1
988
+ train_6677_a_2
989
+ train_6698_a_1
990
+ train_6698_a_2
991
+ train_6699_a_1
992
+ train_6699_a_2
993
+ train_6703_a_1
994
+ train_6703_a_2
995
+ train_6760_a_1
996
+ train_6760_a_2
997
+ train_6790_a_1
998
+ train_6790_a_2
999
+ train_6815_a_1
1000
+ train_6851_a_1
1001
+ train_6851_a_2
1002
+ train_6851_b_1
1003
+ train_6851_b_2
1004
+ train_6882_a_1
1005
+ train_6887_a_1
1006
+ train_6887_b_1
1007
+ train_6887_b_2
1008
+ train_6891_a_1
1009
+ train_6891_a_2
1010
+ train_6946_a_1
1011
+ train_6946_a_2
1012
+ train_6953_a_1
1013
+ train_6953_a_2
1014
+ train_6963_a_1
1015
+ train_6963_a_2
1016
+ train_6979_a_1
1017
+ train_6979_a_2
1018
+ train_6990_a_1
1019
+ train_6990_a_2
1020
+ train_6998_a_1
1021
+ train_6998_a_2
1022
+ train_7005_a_1
1023
+ train_7005_a_2
1024
+ train_7005_b_1
1025
+ train_7005_b_2
1026
+ train_7052_a_1
1027
+ train_7052_a_2
1028
+ train_7076_a_1
1029
+ train_7076_a_2
1030
+ train_7078_a_1
1031
+ train_7082_a_1
1032
+ train_7082_a_2
1033
+ train_7100_a_1
1034
+ train_7100_a_2
1035
+ train_7100_b_1
1036
+ train_7100_b_2
1037
+ train_7100_c_1
1038
+ train_7100_c_2
1039
+ train_7154_a_1
1040
+ train_7154_a_2
1041
+ train_7157_a_1
1042
+ train_7157_a_2
1043
+ train_7194_a_1
1044
+ train_7194_a_2
1045
+ train_7219_a_1
1046
+ train_7219_a_2
1047
+ train_7222_a_1
1048
+ train_7222_a_2
1049
+ train_7230_a_1
1050
+ train_7230_a_2
1051
+ train_7241_a_1
1052
+ train_7241_a_2
1053
+ train_7274_a_1
1054
+ train_7274_a_2
1055
+ train_7279_a_1
1056
+ train_7279_a_2
1057
+ train_7303_a_1
1058
+ train_7303_a_2
1059
+ train_7328_a_1
1060
+ train_7328_a_2
1061
+ train_7335_a_1
1062
+ train_7335_a_2
1063
+ train_7359_a_1
1064
+ train_7359_a_2
1065
+ train_7373_a_1
1066
+ train_7373_a_2
1067
+ train_7383_a_1
1068
+ train_7383_a_2
1069
+ train_7387_a_1
1070
+ train_7387_a_2
1071
+ train_7392_a_1
1072
+ train_7392_a_2
1073
+ train_7423_a_1
1074
+ train_7423_a_2
1075
+ train_7432_a_1
1076
+ train_7442_a_1
1077
+ train_7442_a_2
1078
+ train_7456_a_1
1079
+ train_7456_a_2
1080
+ train_7467_a_1
1081
+ train_7467_a_2
1082
+ train_7469_a_1
1083
+ train_7469_a_2
1084
+ train_7484_a_1
1085
+ train_7484_a_2
1086
+ train_7504_a_1
1087
+ train_7504_a_2
1088
+ train_7513_a_1
1089
+ train_7513_a_2
1090
+ train_7523_a_1
1091
+ train_7535_a_1
1092
+ train_7535_a_2
1093
+ train_7535_b_1
1094
+ train_7535_b_2
1095
+ train_7548_a_1
1096
+ train_7548_a_2
1097
+ train_7557_a_1
1098
+ train_7601_a_1
1099
+ train_7601_a_2
1100
+ train_7605_a_1
1101
+ train_7605_a_2
1102
+ train_7605_b_1
1103
+ train_7605_b_2
1104
+ train_7607_a_1
1105
+ train_7607_a_2
1106
+ train_7612_a_1
1107
+ train_7612_a_2
1108
+ train_7614_a_1
1109
+ train_7614_a_2
1110
+ train_7622_a_1
1111
+ train_7622_a_2
1112
+ train_7634_a_1
1113
+ train_7634_a_2
1114
+ train_7634_b_1
1115
+ train_7634_b_2
1116
+ train_7639_a_1
1117
+ train_7639_a_2
1118
+ train_7668_a_1
1119
+ train_7668_a_2
1120
+ train_7681_a_1
1121
+ train_7681_a_2
1122
+ train_7704_a_1
1123
+ train_7704_a_2
1124
+ train_7710_a_1
1125
+ train_7710_a_2
1126
+ train_7710_b_1
1127
+ train_7710_b_2
1128
+ train_7710_c_1
1129
+ train_7710_c_2
1130
+ train_7710_d_1
1131
+ train_7710_d_2
1132
+ train_7710_e_1
1133
+ train_7710_e_2
1134
+ train_7723_a_1
1135
+ train_7723_a_2
1136
+ train_7736_a_1
1137
+ train_7736_a_2
1138
+ train_7738_a_1
1139
+ train_7738_a_2
1140
+ train_7752_a_1
1141
+ train_7752_a_2
1142
+ train_7789_a_1
1143
+ train_7789_a_2
1144
+ train_7792_a_1
1145
+ train_7802_a_1
1146
+ train_7802_a_2
1147
+ train_7810_a_1
1148
+ train_7810_a_2
1149
+ train_7860_a_1
1150
+ train_7862_a_1
1151
+ train_7862_a_2
1152
+ train_7909_a_1
1153
+ train_7909_a_2
1154
+ train_7932_a_1
1155
+ train_7932_a_2
1156
+ train_7932_b_1
1157
+ train_7932_b_2
1158
+ train_7932_c_1
1159
+ train_7932_c_2
1160
+ train_7932_d_1
1161
+ train_7932_d_2
1162
+ train_7941_a_1
1163
+ train_7941_a_2
1164
+ train_7942_a_1
1165
+ train_7942_a_2
1166
+ train_7955_a_1
1167
+ train_7955_a_2
1168
+ train_8005_a_1
1169
+ train_8005_a_2
1170
+ train_8010_a_1
1171
+ train_8010_a_2
1172
+ train_8010_b_1
1173
+ train_8010_b_2
1174
+ train_8023_a_1
1175
+ train_8023_a_2
1176
+ train_8028_a_1
1177
+ train_8028_a_2
1178
+ train_8033_a_1
1179
+ train_8033_a_2
1180
+ train_8048_a_1
1181
+ train_8048_a_2
1182
+ train_8050_a_1
1183
+ train_8050_a_2
1184
+ train_8077_a_1
1185
+ train_8077_a_2
1186
+ train_8100_a_1
1187
+ train_8100_a_2
1188
+ train_8111_a_1
1189
+ train_8119_a_1
1190
+ train_8119_a_2
1191
+ train_8135_a_1
1192
+ train_8136_a_1
1193
+ train_8136_a_2
1194
+ train_8142_a_1
1195
+ train_8142_a_2
1196
+ train_8173_a_1
1197
+ train_8173_a_2
1198
+ train_8176_a_1
1199
+ train_8176_a_2
1200
+ train_8185_a_1
1201
+ train_8185_a_2
1202
+ train_8193_a_1
1203
+ train_8193_a_2
1204
+ train_8231_a_1
1205
+ train_8240_a_1
1206
+ train_8240_a_2
1207
+ train_8255_a_1
1208
+ train_8255_a_2
1209
+ train_8277_a_1
1210
+ train_8277_a_2
1211
+ train_8280_a_1
1212
+ train_8280_a_2
1213
+ train_8293_a_1
1214
+ train_8293_a_2
1215
+ train_8293_b_1
1216
+ train_8293_b_2
1217
+ train_8312_a_1
1218
+ train_8312_a_2
1219
+ train_8352_a_1
1220
+ train_8352_a_2
1221
+ train_8381_a_1
1222
+ train_8381_a_2
1223
+ train_8409_a_1
1224
+ train_8409_a_2
1225
+ train_8426_a_1
1226
+ train_8426_a_2
1227
+ train_8447_a_1
1228
+ train_8465_a_1
1229
+ train_8465_a_2
1230
+ train_8465_a_3
1231
+ train_8484_a_1
1232
+ train_8484_a_2
1233
+ train_8484_b_1
1234
+ train_8484_b_2
1235
+ train_8501_a_1
1236
+ train_8501_a_2
1237
+ train_8507_a_1
1238
+ train_8530_a_1
1239
+ train_8530_a_2
1240
+ train_8538_a_1
1241
+ train_8538_a_2
1242
+ train_8555_a_1
1243
+ train_8555_a_2
1244
+ train_8560_a_1
1245
+ train_8560_a_2
1246
+ train_8629_a_1
1247
+ train_8629_a_2
1248
+ train_8643_a_1
1249
+ train_8643_a_2
1250
+ train_8643_b_1
1251
+ train_8643_b_2
1252
+ train_8646_a_1
1253
+ train_8646_a_2
1254
+ train_8646_a_3
1255
+ train_8646_a_4
1256
+ train_8651_a_1
1257
+ train_8651_a_2
1258
+ train_8653_a_1
1259
+ train_8653_a_2
1260
+ train_8653_b_1
1261
+ train_8653_b_2
1262
+ train_8657_a_1
1263
+ train_8657_a_2
1264
+ train_8689_a_1
1265
+ train_8689_a_2
1266
+ train_8691_a_1
1267
+ train_8691_a_2
1268
+ train_8733_a_1
1269
+ train_8733_a_2
1270
+ train_8735_a_1
1271
+ train_8735_a_2
1272
+ train_8735_b_1
1273
+ train_8735_b_2
1274
+ train_8754_a_1
1275
+ train_8754_a_2
1276
+ train_8756_a_1
1277
+ train_8756_a_2
1278
+ train_8767_a_1
1279
+ train_8767_a_2
1280
+ train_8773_a_1
1281
+ train_8773_a_2
1282
+ train_8782_a_3
1283
+ train_8782_a_5
1284
+ train_8787_a_1
1285
+ train_8787_a_2
1286
+ train_8787_b_1
1287
+ train_8787_b_2
1288
+ train_8794_a_1
1289
+ train_8794_a_2
1290
+ train_8801_a_1
1291
+ train_8801_a_2
1292
+ train_8816_a_1
1293
+ train_8823_a_1
1294
+ train_8823_a_2
1295
+ train_8854_a_1
1296
+ train_8854_a_2
1297
+ train_8854_b_1
1298
+ train_8861_a_1
1299
+ train_8893_a_1
1300
+ train_8893_a_2
1301
+ train_8900_a_3
1302
+ train_8900_a_5
1303
+ train_8914_a_1
1304
+ train_8914_a_2
1305
+ train_8922_a_1
1306
+ train_8922_a_2
1307
+ train_8926_a_1
1308
+ train_8926_a_2
1309
+ train_8975_a_1
1310
+ train_8975_a_2
1311
+ train_8984_a_1
1312
+ train_8984_a_2
1313
+ train_9094_a_1
1314
+ train_9094_a_2
1315
+ train_9128_a_1
1316
+ train_9128_a_2
1317
+ train_9130_a_1
1318
+ train_9130_a_2
1319
+ train_9150_a_1
1320
+ train_9150_a_2
1321
+ train_9162_a_1
1322
+ train_9162_a_2
1323
+ train_9163_a_1
1324
+ train_9163_a_2
1325
+ train_9182_a_1
1326
+ train_9182_a_2
1327
+ train_9190_a_1
1328
+ train_9190_a_2
1329
+ train_9202_a_1
1330
+ train_9202_a_2
1331
+ train_9204_a_1
1332
+ train_9204_a_2
1333
+ train_9247_a_1
1334
+ train_9247_a_2
1335
+ train_9249_a_1
1336
+ train_9249_a_2
1337
+ train_9249_b_1
1338
+ train_9249_b_2
1339
+ train_9249_c_1
1340
+ train_9249_c_2
1341
+ train_9257_a_1
1342
+ train_9257_a_2
1343
+ train_9263_a_1
1344
+ train_9263_a_2
1345
+ train_9284_a_1
1346
+ train_9284_a_2
1347
+ train_9291_a_1
1348
+ train_9291_a_2
1349
+ train_9296_a_1
1350
+ train_9296_a_2
1351
+ train_9311_a_1
1352
+ train_9311_a_2
1353
+ train_9312_a_1
1354
+ train_9312_a_2
1355
+ train_9328_a_1
1356
+ train_9328_a_2
1357
+ train_9392_a_1
1358
+ train_9406_a_1
1359
+ train_9406_a_2
1360
+ train_9428_a_1
1361
+ train_9428_a_2
1362
+ train_9428_b_1
1363
+ train_9428_b_2
1364
+ train_9429_a_1
1365
+ train_9429_a_2
1366
+ train_9488_a_1
1367
+ train_9488_a_2
1368
+ train_9533_a_1
1369
+ train_9533_a_2
1370
+ train_9533_b_1
1371
+ train_9533_b_2
1372
+ train_9533_c_1
1373
+ train_9533_c_2
1374
+ train_9533_d_1
1375
+ train_9533_d_2
1376
+ train_9533_e_1
1377
+ train_9533_e_2
1378
+ train_9558_a_1
1379
+ train_9558_a_2
1380
+ train_9565_a_1
1381
+ train_9565_a_2
1382
+ train_9579_a_1
1383
+ train_9579_a_2
1384
+ train_9579_b_1
1385
+ train_9579_b_2
1386
+ train_9579_c_1
1387
+ train_9579_c_2
1388
+ train_9582_a_1
1389
+ train_9582_a_2
1390
+ train_9582_b_1
1391
+ train_9582_b_2
1392
+ train_9584_a_1
1393
+ train_9584_a_2
1394
+ train_9593_a_1
1395
+ train_9593_a_2
1396
+ train_9599_a_1
1397
+ train_9599_a_2
1398
+ train_9630_a_1
1399
+ train_9630_a_2
1400
+ train_9643_a_1
1401
+ train_9643_a_2
1402
+ train_9652_a_1
1403
+ train_9652_a_2
1404
+ train_9698_a_1
1405
+ train_9713_a_1
1406
+ train_9713_a_2
1407
+ train_9729_a_1
1408
+ train_9729_a_2
1409
+ train_9751_a_1
1410
+ train_9751_a_2
1411
+ train_9757_a_1
1412
+ train_9757_a_2
1413
+ train_9757_b_1
1414
+ train_9757_b_2
1415
+ train_9788_a_1
1416
+ train_9788_a_2
1417
+ train_9810_a_1
1418
+ train_9810_a_2
1419
+ train_9810_b_1
1420
+ train_9830_a_1
1421
+ train_9830_a_2
1422
+ train_9836_a_1
1423
+ train_9836_a_2
1424
+ train_9842_a_1
1425
+ train_9842_a_2
1426
+ train_9856_a_1
1427
+ train_9856_a_2
1428
+ train_9857_a_1
1429
+ train_9880_a_1
1430
+ train_9880_a_2
1431
+ train_9881_a_1
1432
+ train_9881_a_2
1433
+ train_9912_a_1
1434
+ train_9912_a_2
1435
+ train_9917_a_1
1436
+ train_9917_a_2
1437
+ train_9939_a_1
1438
+ train_9939_a_2
1439
+ train_9944_a_1
1440
+ train_9944_a_2
1441
+ train_9948_a_1
1442
+ train_9948_a_2
1443
+ train_9963_a_1
1444
+ train_9963_a_2
1445
+ train_9981_a_1
1446
+ train_9981_a_2
1447
+ train_9991_a_1
1448
+ train_9991_a_2
1449
+ train_9992_a_1
1450
+ train_9992_a_2
1451
+ train_10003_a_1
1452
+ train_10003_a_2
1453
+ train_10003_a_3
1454
+ train_10004_a_1
1455
+ train_10004_a_2
1456
+ train_10027_a_1
1457
+ train_10027_b_1
1458
+ train_10027_b_2
1459
+ train_10030_a_1
1460
+ train_10030_a_2
1461
+ train_10030_b_1
1462
+ train_10030_b_2
1463
+ train_10041_a_1
1464
+ train_10051_a_1
1465
+ train_10051_a_2
1466
+ train_10067_a_1
1467
+ train_10067_a_2
1468
+ train_10089_a_1
1469
+ train_10089_a_2
1470
+ train_10092_a_1
1471
+ train_10092_a_2
1472
+ train_10098_a_1
1473
+ train_10098_a_2
1474
+ train_10107_a_1
1475
+ train_10107_a_2
1476
+ train_10110_a_1
1477
+ train_10110_a_2
1478
+ train_10172_a_1
1479
+ train_10172_a_2
1480
+ train_10187_a_1
1481
+ train_10187_a_2
1482
+ train_10188_a_1
1483
+ train_10188_a_2
1484
+ train_10207_a_1
1485
+ train_10207_a_2
1486
+ train_10207_b_1
1487
+ train_10207_b_2
1488
+ train_10209_a_1
1489
+ train_10209_a_2
1490
+ train_10226_a_1
1491
+ train_10226_a_2
1492
+ train_10229_a_1
1493
+ train_10229_a_2
1494
+ train_10246_a_1
1495
+ train_10246_a_2
1496
+ train_10246_b_1
1497
+ train_10246_b_2
1498
+ train_10265_a_1
1499
+ train_10265_a_2
1500
+ train_10269_a_1
1501
+ train_10272_a_1
1502
+ train_10272_a_2
1503
+ train_10281_a_1
1504
+ train_10281_a_2
1505
+ train_10284_a_1
1506
+ train_10284_a_2
1507
+ train_10291_a_1
1508
+ train_10291_a_2
1509
+ train_10296_a_1
1510
+ train_10296_a_2
1511
+ train_10296_b_1
1512
+ train_10296_b_2
1513
+ train_10320_a_1
1514
+ train_10320_a_2
1515
+ train_10364_a_1
1516
+ train_10364_a_2
1517
+ train_10370_a_1
1518
+ train_10370_a_2
1519
+ train_10387_a_1
1520
+ train_10387_a_2
1521
+ train_10387_b_1
1522
+ train_10387_b_2
1523
+ train_10411_a_1
1524
+ train_10419_a_1
1525
+ train_10419_a_2
1526
+ train_10431_a_1
1527
+ train_10431_a_2
1528
+ train_10433_a_1
1529
+ train_10433_a_2
1530
+ train_10448_a_1
1531
+ train_10448_a_2
1532
+ train_10454_a_1
1533
+ train_10454_a_2
1534
+ train_10454_b_1
1535
+ train_10454_b_2
1536
+ train_10460_a_1
1537
+ train_10460_a_2
1538
+ train_10476_a_1
1539
+ train_10476_a_2
1540
+ train_10476_b_1
1541
+ train_10476_b_2
1542
+ train_10486_a_1
1543
+ train_10486_a_2
1544
+ train_10499_a_1
1545
+ train_10545_a_1
1546
+ train_10545_a_2
1547
+ train_10562_a_1
1548
+ train_10562_a_2
1549
+ train_10594_a_1
1550
+ train_10594_a_2
1551
+ train_10601_a_1
1552
+ train_10601_a_2
1553
+ train_10601_a_3
1554
+ train_10603_a_1
1555
+ train_10603_a_2
1556
+ train_10607_a_1
1557
+ train_10635_a_1
1558
+ train_10635_a_2
1559
+ train_10641_a_1
1560
+ train_10641_a_2
1561
+ train_10641_b_1
1562
+ train_10641_b_2
1563
+ train_10641_c_1
1564
+ train_10641_c_2
1565
+ train_10641_d_1
1566
+ train_10641_d_2
1567
+ train_10641_e_1
1568
+ train_10641_e_2
1569
+ train_10641_f_1
1570
+ train_10641_f_2
1571
+ train_10641_g_1
1572
+ train_10641_g_2
1573
+ train_10641_h_1
1574
+ train_10641_h_2
1575
+ train_10646_a_1
1576
+ train_10646_a_2
1577
+ train_10646_b_1
1578
+ train_10646_b_2
1579
+ train_10714_a_1
1580
+ train_10714_a_2
1581
+ train_10721_a_1
1582
+ train_10721_a_2
1583
+ train_10724_a_1
1584
+ train_10724_a_2
1585
+ train_10743_a_1
1586
+ train_10743_a_2
1587
+ train_10746_a_1
1588
+ train_10746_a_2
1589
+ train_10751_a_1
1590
+ train_10751_a_2
1591
+ train_10765_a_1
1592
+ train_10765_a_2
1593
+ train_10784_a_1
1594
+ train_10784_a_2
1595
+ train_10784_b_1
1596
+ train_10784_b_2
1597
+ train_10784_c_1
1598
+ train_10784_c_2
1599
+ train_10784_d_1
1600
+ train_10784_d_2
1601
+ train_10785_a_1
1602
+ train_10785_a_2
1603
+ train_10801_a_1
1604
+ train_10801_a_2
1605
+ train_10812_a_1
1606
+ train_10812_a_2
1607
+ train_10821_a_1
1608
+ train_10821_b_1
1609
+ train_10821_b_2
1610
+ train_10848_a_1
1611
+ train_10848_a_2
1612
+ train_10864_a_1
1613
+ train_10887_a_1
1614
+ train_10887_a_2
1615
+ train_10903_a_1
1616
+ train_10903_a_2
1617
+ train_10928_a_1
1618
+ train_10928_a_2
1619
+ train_10955_a_1
1620
+ train_10955_a_2
1621
+ train_10970_a_1
1622
+ train_10970_a_2
1623
+ train_11008_a_1
1624
+ train_11008_a_2
1625
+ train_11027_a_1
1626
+ train_11027_a_2
1627
+ train_11034_a_1
1628
+ train_11034_a_2
1629
+ train_11042_a_1
1630
+ train_11042_a_2
1631
+ train_11043_a_1
1632
+ train_11043_a_2
1633
+ train_11049_a_1
1634
+ train_11049_a_2
1635
+ train_11057_a_1
1636
+ train_11057_a_2
1637
+ train_11069_a_1
1638
+ train_11069_a_2
1639
+ train_11070_a_1
1640
+ train_11112_a_1
1641
+ train_11112_a_2
1642
+ train_11123_a_1
1643
+ train_11126_a_1
1644
+ train_11126_a_2
1645
+ train_11127_a_1
1646
+ train_11127_a_2
1647
+ train_11127_b_1
1648
+ train_11127_b_2
1649
+ train_11137_a_1
1650
+ train_11137_a_2
1651
+ train_11137_b_1
1652
+ train_11137_b_2
1653
+ train_11145_a_1
1654
+ train_11145_a_2
1655
+ train_11158_a_1
1656
+ train_11158_a_2
1657
+ train_11159_a_1
1658
+ train_11177_a_1
1659
+ train_11177_a_2
1660
+ train_11177_b_1
1661
+ train_11177_b_2
1662
+ train_11179_a_1
1663
+ train_11179_a_2
1664
+ train_11191_a_1
1665
+ train_11193_a_1
1666
+ train_11193_a_2
1667
+ train_11196_a_1
1668
+ train_11196_a_2
1669
+ train_11197_a_1
1670
+ train_11197_a_2
1671
+ train_11211_a_1
1672
+ train_11211_a_2
1673
+ train_11212_a_1
1674
+ train_11212_a_2
1675
+ train_11223_a_1
1676
+ train_11223_a_2
1677
+ train_11234_a_1
1678
+ train_11234_a_2
1679
+ train_11236_a_1
1680
+ train_11236_a_2
1681
+ train_11239_a_1
1682
+ train_11242_a_1
1683
+ train_11242_a_2
1684
+ train_11245_a_1
1685
+ train_11245_a_2
1686
+ train_11269_a_1
1687
+ train_11269_a_2
1688
+ train_11283_a_1
1689
+ train_11283_a_2
1690
+ train_11305_a_1
1691
+ train_11313_a_1
1692
+ train_11313_a_2
1693
+ train_11323_a_1
1694
+ train_11323_a_2
1695
+ train_11331_a_1
1696
+ train_11331_a_2
1697
+ train_11345_a_1
1698
+ train_11345_a_2
1699
+ train_11361_a_1
1700
+ train_11361_a_2
1701
+ train_11377_a_1
1702
+ train_11385_a_1
1703
+ train_11385_a_2
1704
+ train_11398_a_1
1705
+ train_11398_a_2
1706
+ train_11420_a_1
1707
+ train_11420_a_2
1708
+ train_11465_a_1
1709
+ train_11465_a_2
1710
+ train_11466_a_3
1711
+ train_11466_a_5
1712
+ train_11468_a_1
1713
+ train_11468_a_2
1714
+ train_11506_a_1
1715
+ train_11506_a_2
1716
+ train_11509_a_1
1717
+ train_11509_a_2
1718
+ train_11543_a_1
1719
+ train_11543_a_2
1720
+ train_11548_a_1
1721
+ train_11548_a_2
1722
+ train_11589_a_1
1723
+ train_11589_a_2
1724
+ train_11635_a_1
1725
+ train_11635_a_2
1726
+ train_11679_a_1
1727
+ train_11679_a_2
1728
+ train_11679_b_1
1729
+ train_11679_b_2
1730
+ train_11679_c_1
1731
+ train_11679_c_2
1732
+ train_11703_a_1
1733
+ train_11713_a_1
1734
+ train_11713_a_2
1735
+ train_11743_a_1
1736
+ train_11743_a_2
1737
+ train_11772_a_1
1738
+ train_11772_a_2
1739
+ train_11774_a_1
1740
+ train_11774_a_2
1741
+ train_11774_b_1
1742
+ train_11774_b_2
1743
+ train_11799_a_1
1744
+ train_11799_b_1
1745
+ train_11799_b_2
1746
+ train_11799_c_1
1747
+ train_11799_c_2
1748
+ train_11799_d_1
1749
+ train_11799_d_2
1750
+ train_11799_e_1
1751
+ train_11799_e_2
1752
+ train_11799_f_1
1753
+ train_11799_f_2
1754
+ train_11800_a_1
1755
+ train_11800_a_2
1756
+ train_11806_a_1
1757
+ train_11806_a_2
1758
+ train_11831_a_1
1759
+ train_11831_a_2
1760
+ train_11834_a_1
1761
+ train_11834_a_2
1762
+ train_11838_a_1
1763
+ train_11838_a_2
1764
+ train_11853_a_1
1765
+ train_11853_a_2
1766
+ train_11855_a_1
1767
+ train_11855_a_2
1768
+ train_11864_a_1
1769
+ train_11864_a_2
1770
+ train_11876_a_1
1771
+ train_11876_a_2
1772
+ train_11881_a_1
1773
+ train_11881_a_2
1774
+ train_11882_a_1
1775
+ train_11882_a_2
1776
+ train_11882_b_1
1777
+ train_11882_b_2
1778
+ train_11908_a_1
1779
+ train_11908_a_2
1780
+ train_11908_b_1
1781
+ train_11908_b_2
1782
+ train_11921_a_1
1783
+ train_11933_a_1
1784
+ train_11933_a_2
1785
+ train_11955_a_1
1786
+ train_11955_a_2
1787
+ train_11958_a_1
1788
+ train_11958_a_2
1789
+ train_11960_a_1
1790
+ train_11960_a_2
1791
+ train_12005_a_1
1792
+ train_12005_a_2
1793
+ train_12005_b_1
1794
+ train_12005_b_2
1795
+ train_12005_c_1
1796
+ train_12005_c_2
1797
+ train_12034_a_1
1798
+ train_12034_a_2
1799
+ train_12034_b_1
1800
+ train_12034_b_2
1801
+ train_12034_c_1
1802
+ train_12034_c_2
1803
+ train_12034_d_1
1804
+ train_12034_d_2
1805
+ train_12043_a_1
1806
+ train_12043_a_2
1807
+ train_12061_a_1
1808
+ train_12061_a_2
1809
+ train_12069_a_1
1810
+ train_12069_a_2
1811
+ train_12071_a_1
1812
+ train_12071_a_2
1813
+ train_12075_a_1
1814
+ train_12075_a_2
1815
+ train_12077_a_1
1816
+ train_12077_a_2
1817
+ train_12088_a_1
1818
+ train_12088_a_2
1819
+ train_12130_a_1
1820
+ train_12130_a_2
1821
+ train_12156_a_1
1822
+ train_12156_a_2
1823
+ train_12172_a_1
1824
+ train_12172_a_2
1825
+ train_12219_a_1
1826
+ train_12219_a_2
1827
+ train_12219_b_1
1828
+ train_12219_b_2
1829
+ train_12252_a_1
1830
+ train_12272_a_1
1831
+ train_12272_a_2
1832
+ train_12296_a_1
1833
+ train_12296_a_2
1834
+ train_12311_a_1
1835
+ train_12311_a_2
1836
+ train_12313_a_1
1837
+ train_12313_a_2
1838
+ train_12320_a_1
1839
+ train_12320_a_2
1840
+ train_12346_a_1
1841
+ train_12360_a_1
1842
+ train_12360_a_2
1843
+ train_12364_a_1
1844
+ train_12364_a_2
1845
+ train_12364_b_1
1846
+ train_12364_b_2
1847
+ train_12370_a_1
1848
+ train_12370_a_2
1849
+ train_12379_a_1
1850
+ train_12379_a_2
1851
+ train_12379_b_1
1852
+ train_12379_b_2
1853
+ train_12380_a_1
1854
+ train_12380_a_2
1855
+ train_12380_b_1
1856
+ train_12380_b_2
1857
+ train_12397_a_1
1858
+ train_12397_a_2
1859
+ train_12398_a_1
1860
+ train_12398_a_2
1861
+ train_12398_b_1
1862
+ train_12398_b_2
1863
+ train_12400_a_1
1864
+ train_12404_a_1
1865
+ train_12404_a_2
1866
+ train_12427_a_1
1867
+ train_12427_a_2
1868
+ train_12465_a_1
1869
+ train_12465_a_2
1870
+ train_12476_a_1
1871
+ train_12476_a_2
1872
+ train_12476_b_1
1873
+ train_12476_b_2
1874
+ train_12476_c_1
1875
+ train_12476_c_2
1876
+ train_12491_a_1
1877
+ train_12491_a_2
1878
+ train_12491_b_1
1879
+ train_12491_b_2
1880
+ train_12494_a_1
1881
+ train_12494_a_2
1882
+ train_12495_a_1
1883
+ train_12495_a_2
1884
+ train_12511_a_1
1885
+ train_12511_a_2
1886
+ train_12522_a_1
1887
+ train_12522_a_2
1888
+ train_12522_b_1
1889
+ train_12522_b_2
1890
+ train_12522_c_1
1891
+ train_12522_c_2
1892
+ train_12549_a_1
1893
+ train_12549_a_2
1894
+ train_12552_a_1
1895
+ train_12552_a_2
1896
+ train_12561_a_1
1897
+ train_12561_a_2
1898
+ train_12640_a_1
1899
+ train_12647_a_1
1900
+ train_12647_a_2
1901
+ train_12670_a_1
1902
+ train_12670_a_2
1903
+ train_12671_a_1
1904
+ train_12671_a_2
1905
+ train_12683_a_1
1906
+ train_12688_a_1
1907
+ train_12688_a_2
1908
+ train_12698_a_1
1909
+ train_12698_a_2
1910
+ train_12727_a_1
1911
+ train_12727_a_2
1912
+ train_12749_a_1
1913
+ train_12749_a_2
1914
+ train_12755_a_1
1915
+ train_12755_a_2
1916
+ train_12761_a_1
1917
+ train_12761_a_2
1918
+ train_12761_b_1
1919
+ train_12761_b_2
1920
+ train_12761_c_1
1921
+ train_12761_c_2
1922
+ train_12795_a_1
1923
+ train_12795_a_2
1924
+ train_12882_a_1
1925
+ train_12882_a_2
1926
+ train_12890_a_1
1927
+ train_12890_a_2
1928
+ train_12910_a_1
1929
+ train_12910_a_2
1930
+ train_12914_a_1
1931
+ train_12914_a_2
1932
+ train_12914_b_1
1933
+ train_12914_b_2
1934
+ train_12914_c_1
1935
+ train_12914_c_2
1936
+ train_12923_a_1
1937
+ train_12923_a_2
1938
+ train_12923_b_1
1939
+ train_12923_b_2
1940
+ train_12952_a_1
1941
+ train_12952_a_2
1942
+ train_12965_a_1
1943
+ train_12965_a_2
1944
+ train_12968_a_1
1945
+ train_12968_a_2
1946
+ train_12974_a_1
1947
+ train_12974_a_2
1948
+ train_12974_b_1
1949
+ train_12974_b_2
1950
+ train_12974_c_1
1951
+ train_12974_c_2
1952
+ train_12974_d_1
1953
+ train_12974_d_2
1954
+ train_12991_a_1
1955
+ train_12991_a_2
1956
+ train_13006_a_1
1957
+ train_13006_a_2
1958
+ train_13015_a_1
1959
+ train_13015_a_2
1960
+ train_13015_b_1
1961
+ train_13015_b_2
1962
+ train_13022_a_1
1963
+ train_13022_a_2
1964
+ train_13054_a_1
1965
+ train_13083_a_1
1966
+ train_13083_a_2
1967
+ train_13087_a_1
1968
+ train_13087_a_2
1969
+ train_13102_a_1
1970
+ train_13102_a_2
1971
+ train_13102_b_1
1972
+ train_13102_b_2
1973
+ train_13107_a_1
1974
+ train_13107_a_2
1975
+ train_13161_a_1
1976
+ train_13161_a_2
1977
+ train_13183_a_1
1978
+ train_13183_a_2
1979
+ train_13200_a_1
1980
+ train_13200_a_2
1981
+ train_13201_a_1
1982
+ train_13201_a_2
1983
+ train_13213_a_1
1984
+ train_13213_a_2
1985
+ train_13243_a_1
1986
+ train_13243_a_2
1987
+ train_13243_b_1
1988
+ train_13243_b_2
1989
+ train_13266_a_1
1990
+ train_13266_a_2
1991
+ train_13271_a_1
1992
+ train_13271_a_2
1993
+ train_13305_a_1
1994
+ train_13305_a_2
1995
+ train_13311_a_1
1996
+ train_13311_a_2
1997
+ train_13343_a_1
1998
+ train_13343_a_2
1999
+ train_13373_a_1
2000
+ train_13373_a_2
2001
+ train_13386_a_1
2002
+ train_13386_a_2
2003
+ train_13386_b_1
2004
+ train_13386_b_2
2005
+ train_13392_a_1
2006
+ train_13392_a_2
2007
+ train_13411_a_1
2008
+ train_13411_a_2
2009
+ train_13418_a_1
2010
+ train_13418_a_2
2011
+ train_13419_a_1
2012
+ train_13419_a_2
2013
+ train_13419_b_1
2014
+ train_13423_a_1
2015
+ train_13423_a_2
2016
+ train_13452_a_1
2017
+ train_13452_a_2
2018
+ train_13454_a_1
2019
+ train_13454_a_2
2020
+ train_13481_a_1
2021
+ train_13481_a_2
2022
+ train_13483_a_1
2023
+ train_13483_a_2
2024
+ train_13485_a_1
2025
+ train_13485_a_2
2026
+ train_13485_b_1
2027
+ train_13485_b_2
2028
+ train_13504_a_1
2029
+ train_13504_a_2
2030
+ train_13528_a_1
2031
+ train_13528_a_2
2032
+ train_13528_b_1
2033
+ train_13528_b_2
2034
+ train_13537_a_1
2035
+ train_13537_a_2
2036
+ train_13552_a_1
2037
+ train_13552_a_2
2038
+ train_13552_b_1
2039
+ train_13552_b_2
2040
+ train_13561_a_1
2041
+ train_13561_a_2
2042
+ train_13578_a_1
2043
+ train_13578_a_2
2044
+ train_13583_a_1
2045
+ train_13583_a_2
2046
+ train_13583_b_1
2047
+ train_13583_b_2
2048
+ train_13583_c_1
2049
+ train_13583_c_2
2050
+ train_13583_d_1
2051
+ train_13583_d_2
2052
+ train_13613_a_1
2053
+ train_13613_a_2
2054
+ train_13613_b_1
2055
+ train_13613_b_2
2056
+ train_13630_a_1
2057
+ train_13630_a_2
2058
+ train_13634_a_1
2059
+ train_13634_a_2
2060
+ train_13651_a_1
2061
+ train_13651_a_2
2062
+ train_13664_a_1
2063
+ train_13664_a_2
2064
+ train_13668_a_1
2065
+ train_13668_a_2
2066
+ train_13679_a_1
2067
+ train_13679_a_2
2068
+ train_13691_a_1
2069
+ train_13691_a_2
2070
+ train_13692_a_1
2071
+ train_13692_a_2
2072
+ train_13709_a_1
2073
+ train_13709_a_2
2074
+ train_13738_a_1
2075
+ train_13738_a_2
2076
+ train_13747_a_1
2077
+ train_13747_a_2
2078
+ train_13753_a_1
2079
+ train_13753_a_2
2080
+ train_13776_a_1
2081
+ train_13776_a_2
2082
+ train_13809_a_1
2083
+ train_13809_a_2
2084
+ train_13821_a_1
2085
+ train_13821_a_2
2086
+ train_13827_a_1
2087
+ train_13837_a_1
2088
+ train_13837_a_2
2089
+ train_13839_a_1
2090
+ train_13839_a_2
2091
+ train_13847_a_1
2092
+ train_13847_a_2
2093
+ train_13892_a_1
2094
+ train_13892_a_2
2095
+ train_13895_a_1
2096
+ train_13895_b_1
2097
+ train_13899_a_1
2098
+ train_13899_a_2
2099
+ train_13900_a_1
2100
+ train_13900_a_2
2101
+ train_13907_a_1
2102
+ train_13907_a_2
2103
+ train_13911_a_1
2104
+ train_13932_a_1
2105
+ train_13932_a_2
2106
+ train_13962_a_1
2107
+ train_13962_a_2
2108
+ train_13975_a_1
2109
+ train_13975_a_2
2110
+ train_13997_a_1
2111
+ train_13997_a_2
2112
+ train_14003_a_1
2113
+ train_14046_a_1
2114
+ train_14046_a_2
2115
+ train_14046_b_1
2116
+ train_14046_b_2
2117
+ train_14050_a_1
2118
+ train_14050_a_2
2119
+ train_14061_a_1
2120
+ train_14061_a_2
2121
+ train_14074_a_1
2122
+ train_14074_a_2
2123
+ train_14080_a_1
2124
+ train_14104_a_1
2125
+ train_14104_a_2
2126
+ train_14104_b_1
2127
+ train_14112_a_1
2128
+ train_14119_a_1
2129
+ train_14119_a_2
2130
+ train_14138_a_1
2131
+ train_14138_a_2
2132
+ train_14138_b_1
2133
+ train_14138_b_2
2134
+ train_14146_a_1
2135
+ train_14146_a_2
2136
+ train_14149_a_1
2137
+ train_14149_a_2
2138
+ train_14153_a_1
2139
+ train_14153_a_2
2140
+ train_14177_a_1
2141
+ train_14177_a_2
2142
+ train_14177_b_1
2143
+ train_14177_b_2
2144
+ train_14182_a_1
2145
+ train_14182_a_2
2146
+ train_14187_a_1
2147
+ train_14187_a_2
2148
+ train_14194_a_1
2149
+ train_14194_a_2
2150
+ train_14201_a_1
2151
+ train_14201_a_2
2152
+ train_14209_a_1
2153
+ train_14209_a_2
2154
+ train_14209_b_1
2155
+ train_14209_b_2
2156
+ train_14223_a_1
2157
+ train_14223_a_2
2158
+ train_14294_a_1
2159
+ train_14294_a_2
2160
+ train_14313_a_1
2161
+ train_14313_a_2
2162
+ train_14330_a_1
2163
+ train_14330_a_2
2164
+ train_14331_a_1
2165
+ train_14331_b_1
2166
+ train_14331_b_2
2167
+ train_14347_a_1
2168
+ train_14347_a_2
2169
+ train_14348_a_1
2170
+ train_14363_a_1
2171
+ train_14363_a_2
2172
+ train_14368_a_1
2173
+ train_14368_a_2
2174
+ train_14373_a_1
2175
+ train_14373_a_2
2176
+ train_14374_a_1
2177
+ train_14374_a_2
2178
+ train_14387_a_1
2179
+ train_14387_a_2
2180
+ train_14404_a_1
2181
+ train_14404_a_2
2182
+ train_14408_a_1
2183
+ train_14408_a_2
2184
+ train_14423_a_1
2185
+ train_14423_a_2
2186
+ train_14423_b_1
2187
+ train_14423_b_2
2188
+ train_14445_a_1
2189
+ train_14445_a_2
2190
+ train_14451_a_1
2191
+ train_14451_a_2
2192
+ train_14458_a_1
2193
+ train_14458_a_2
2194
+ train_14460_a_1
2195
+ train_14460_a_2
2196
+ train_14462_a_1
2197
+ train_14462_a_2
2198
+ train_14511_a_1
2199
+ train_14522_a_1
2200
+ train_14533_a_1
2201
+ train_14533_a_2
2202
+ train_14536_a_1
2203
+ train_14536_a_2
2204
+ train_14552_a_1
2205
+ train_14552_a_2
2206
+ train_14577_a_1
2207
+ train_14577_a_2
2208
+ train_14579_a_1
2209
+ train_14579_a_2
2210
+ train_14589_a_1
2211
+ train_14589_a_2
2212
+ train_14596_a_1
2213
+ train_14596_a_2
2214
+ train_14602_a_1
2215
+ train_14602_a_2
2216
+ train_14603_a_1
2217
+ train_14603_a_2
2218
+ train_14605_a_1
2219
+ train_14605_a_2
2220
+ train_14610_a_1
2221
+ train_14610_a_2
2222
+ train_14649_a_1
2223
+ train_14649_a_2
2224
+ train_14664_a_1
2225
+ train_14673_a_1
2226
+ train_14673_a_2
2227
+ train_14719_a_1
2228
+ train_14719_a_2
2229
+ train_14737_a_1
2230
+ train_14737_a_2
2231
+ train_14774_a_1
2232
+ train_14774_a_2
2233
+ train_14784_a_1
2234
+ train_14784_a_2
2235
+ train_14786_a_1
2236
+ train_14786_a_2
2237
+ train_14792_a_1
2238
+ train_14792_a_2
2239
+ train_14800_a_1
2240
+ train_14800_a_2
2241
+ train_14806_a_1
2242
+ train_14806_a_2
2243
+ train_14821_a_1
2244
+ train_14821_a_2
2245
+ train_14829_a_1
2246
+ train_14829_a_2
2247
+ train_14830_a_1
2248
+ train_14830_a_2
2249
+ train_14830_b_1
2250
+ train_14830_b_2
2251
+ train_14849_a_1
2252
+ train_14849_a_2
2253
+ train_14884_a_1
2254
+ train_14884_a_2
2255
+ train_14910_a_1
2256
+ train_14910_a_2
2257
+ train_14960_a_1
2258
+ train_14960_a_2
2259
+ train_14962_a_1
2260
+ train_14962_a_2
2261
+ train_14978_a_1
2262
+ train_14978_a_2
2263
+ train_14995_a_1
2264
+ train_14995_a_2
2265
+ train_15006_a_1
2266
+ train_15006_a_2
2267
+ train_15011_a_1
2268
+ train_15011_a_2
2269
+ train_15025_a_1
2270
+ train_15025_a_2
2271
+ train_15051_a_1
2272
+ train_15051_a_2
2273
+ train_15087_a_1
2274
+ train_15087_a_2
2275
+ train_15110_a_1
2276
+ train_15110_a_2
2277
+ train_15110_b_1
2278
+ train_15110_b_2
2279
+ train_15124_a_1
2280
+ train_15124_a_2
2281
+ train_15150_a_1
2282
+ train_15150_a_2
2283
+ train_15153_a_1
2284
+ train_15153_a_2
2285
+ train_15153_b_1
2286
+ train_15153_b_2
2287
+ train_15153_c_1
2288
+ train_15153_c_2
2289
+ train_15197_a_1
2290
+ train_15197_a_2
2291
+ train_15210_a_1
2292
+ train_15210_a_2
2293
+ train_15215_a_1
2294
+ train_15215_a_2
2295
+ train_15244_a_1
2296
+ train_15244_a_2
2297
+ train_15256_a_1
2298
+ train_15256_a_2
2299
+ train_15294_a_1
2300
+ train_15294_a_2
2301
+ train_15315_a_1
2302
+ train_15315_a_2
2303
+ train_15317_a_1
2304
+ train_15317_a_2
2305
+ train_15364_a_1
2306
+ train_15364_a_2
2307
+ train_15372_a_1
2308
+ train_15372_a_2
2309
+ train_15420_a_1
2310
+ train_15420_a_2
2311
+ train_15422_a_1
2312
+ train_15422_a_2
2313
+ train_15425_a_1
2314
+ train_15425_a_2
2315
+ train_15425_b_1
2316
+ train_15425_b_2
2317
+ train_15453_a_1
2318
+ train_15453_a_2
2319
+ train_15458_a_1
2320
+ train_15458_a_2
2321
+ train_15465_a_1
2322
+ train_15465_a_2
2323
+ train_15468_a_1
2324
+ train_15468_a_2
2325
+ train_15504_a_1
2326
+ train_15505_a_1
2327
+ train_15507_a_1
2328
+ train_15507_a_2
2329
+ train_15512_a_1
2330
+ train_15512_a_2
2331
+ train_15532_a_1
2332
+ train_15532_a_2
2333
+ train_15536_a_1
2334
+ train_15536_a_2
2335
+ train_15542_a_1
2336
+ train_15542_a_2
2337
+ train_15550_a_1
2338
+ train_15550_a_2
2339
+ train_15558_a_1
2340
+ train_15558_a_2
2341
+ train_15558_b_1
2342
+ train_15558_b_2
2343
+ train_15558_c_1
2344
+ train_15558_c_2
2345
+ train_15576_a_1
2346
+ train_15576_a_2
2347
+ train_15583_a_1
2348
+ train_15583_a_2
2349
+ train_15600_a_1
2350
+ train_15600_a_2
2351
+ train_15605_a_1
2352
+ train_15605_a_2
2353
+ train_15605_b_1
2354
+ train_15605_b_2
2355
+ train_15605_c_1
2356
+ train_15605_c_2
2357
+ train_15612_a_1
2358
+ train_15612_a_2
2359
+ train_15614_a_1
2360
+ train_15614_a_2
2361
+ train_15615_a_1
2362
+ train_15615_a_2
2363
+ train_15624_a_1
2364
+ train_15624_a_2
2365
+ train_15632_a_1
2366
+ train_15632_a_2
2367
+ train_15637_a_1
2368
+ train_15637_a_2
2369
+ train_15637_a_4
2370
+ train_15659_a_1
2371
+ train_15659_a_2
2372
+ train_15686_a_1
2373
+ train_15686_a_2
2374
+ train_15734_a_1
2375
+ train_15734_a_2
2376
+ train_15737_a_1
2377
+ train_15737_a_2
2378
+ train_15748_a_1
2379
+ train_15748_a_2
2380
+ train_15784_a_1
2381
+ train_15784_a_2
2382
+ train_15837_a_1
2383
+ train_15837_a_2
2384
+ train_15839_a_1
2385
+ train_15839_a_2
2386
+ train_15852_a_1
2387
+ train_15852_a_2
2388
+ train_15878_a_1
2389
+ train_15931_a_1
2390
+ train_15931_a_2
2391
+ train_15944_a_1
2392
+ train_15944_a_2
2393
+ train_15946_a_1
2394
+ train_15946_a_2
2395
+ train_15955_a_1
2396
+ train_15955_a_2
2397
+ train_15979_a_1
2398
+ train_15979_a_2
2399
+ train_15991_a_1
2400
+ train_15991_a_2
2401
+ train_15991_b_1
2402
+ train_15991_b_2
2403
+ train_15998_a_1
2404
+ train_15998_a_2
2405
+ train_16002_a_1
2406
+ train_16002_a_2
2407
+ train_16013_a_1
2408
+ train_16013_a_2
2409
+ train_16021_a_1
2410
+ train_16021_a_2
2411
+ train_16021_b_1
2412
+ train_16021_b_2
2413
+ train_16028_a_1
2414
+ train_16028_a_2
2415
+ train_16028_b_1
2416
+ train_16028_b_2
2417
+ train_16037_a_1
2418
+ train_16037_a_2
2419
+ train_16065_a_1
2420
+ train_16065_a_2
2421
+ train_16076_a_1
2422
+ train_16076_a_2
2423
+ train_16088_a_1
2424
+ train_16088_a_2
2425
+ train_16105_a_1
2426
+ train_16105_a_2
2427
+ train_16109_a_1
2428
+ train_16109_a_2
2429
+ train_16127_a_1
2430
+ train_16127_a_2
2431
+ train_16131_a_1
2432
+ train_16131_a_2
2433
+ train_16135_a_1
2434
+ train_16135_a_2
2435
+ train_16151_a_1
2436
+ train_16151_a_2
2437
+ train_16158_a_1
2438
+ train_16158_a_2
2439
+ train_16160_a_1
2440
+ train_16160_a_2
2441
+ train_16179_a_1
2442
+ train_16179_a_2
2443
+ train_16208_a_1
2444
+ train_16208_a_2
2445
+ train_16293_a_1
2446
+ train_16293_a_2
2447
+ train_16295_a_1
2448
+ train_16295_a_2
2449
+ train_16344_a_1
2450
+ train_16344_a_2
2451
+ train_16350_a_1
2452
+ train_16365_a_1
2453
+ train_16365_a_2
2454
+ train_16368_a_1
2455
+ train_16368_a_2
2456
+ train_16384_a_1
2457
+ train_16384_a_2
2458
+ train_16384_b_1
2459
+ train_16384_b_2
2460
+ train_16404_a_1
2461
+ train_16404_a_2
2462
+ train_16404_a_3
2463
+ train_16427_a_1
2464
+ train_16427_a_2
2465
+ train_16429_a_1
2466
+ train_16429_a_2
2467
+ train_16429_a_3
2468
+ train_16449_a_1
2469
+ train_16449_a_2
2470
+ train_16488_a_1
2471
+ train_16488_a_2
2472
+ train_16489_a_1
2473
+ train_16489_a_2
2474
+ train_16490_a_1
2475
+ train_16490_b_1
2476
+ train_16490_b_2
2477
+ train_16491_a_1
2478
+ train_16491_a_2
2479
+ train_16491_b_1
2480
+ train_16491_b_2
2481
+ train_16510_a_1
2482
+ train_16510_a_2
2483
+ train_16514_a_1
2484
+ train_16514_a_2
2485
+ train_16517_a_1
2486
+ train_16517_a_2
2487
+ train_16532_a_1
2488
+ train_16532_a_2
2489
+ train_16532_b_1
2490
+ train_16532_b_2
2491
+ train_16536_a_1
2492
+ train_16536_a_2
2493
+ train_16578_a_1
2494
+ train_16578_a_2
2495
+ train_16636_a_1
2496
+ train_16636_a_2
2497
+ train_16657_a_1
2498
+ train_16657_a_2
2499
+ train_16660_a_1
2500
+ train_16660_a_2
2501
+ train_16660_b_1
2502
+ train_16660_b_2
2503
+ train_16684_a_1
2504
+ train_16684_a_2
2505
+ train_16731_a_1
2506
+ train_16731_a_2
2507
+ train_16769_a_1
2508
+ train_16769_a_2
2509
+ train_16771_a_1
2510
+ train_16771_a_2
2511
+ train_16796_a_1
2512
+ train_16796_a_2
2513
+ train_16834_a_1
2514
+ train_16834_a_2
2515
+ train_16851_a_1
2516
+ train_16851_a_2
2517
+ train_16851_b_1
2518
+ train_16851_b_2
2519
+ train_16851_c_1
2520
+ train_16851_c_2
2521
+ train_16866_a_1
2522
+ train_16866_a_2
2523
+ train_16872_a_1
2524
+ train_16872_a_2
2525
+ train_16887_a_1
2526
+ train_16887_a_2
2527
+ train_16887_b_1
2528
+ train_16887_b_2
2529
+ train_16887_c_1
2530
+ train_16887_c_2
2531
+ train_16887_d_1
2532
+ train_16887_d_2
2533
+ train_16888_a_1
2534
+ train_16888_a_2
2535
+ train_16890_a_1
2536
+ train_16938_a_1
2537
+ train_16938_a_2
2538
+ train_16943_a_1
2539
+ train_16943_a_2
2540
+ train_16963_a_1
2541
+ train_16963_a_2
2542
+ train_16978_a_1
2543
+ train_16978_a_2
2544
+ train_16980_a_1
2545
+ train_16980_a_2
2546
+ train_17034_a_1
2547
+ train_17034_a_2
2548
+ train_17044_a_1
2549
+ train_17059_a_1
2550
+ train_17059_a_2
2551
+ train_17067_a_1
2552
+ train_17067_a_2
2553
+ train_17075_a_1
2554
+ train_17109_a_1
2555
+ train_17109_a_2
2556
+ train_17119_a_1
2557
+ train_17119_a_2
2558
+ train_17137_a_1
2559
+ train_17138_a_1
2560
+ train_17138_a_2
2561
+ train_17154_a_1
2562
+ train_17154_a_2
2563
+ train_17165_a_1
2564
+ train_17165_a_2
2565
+ train_17191_a_1
2566
+ train_17191_a_2
2567
+ train_17276_a_1
2568
+ train_17276_a_2
2569
+ train_17310_a_1
2570
+ train_17310_a_2
2571
+ train_17313_a_1
2572
+ train_17313_a_2
2573
+ train_17334_a_1
2574
+ train_17334_a_2
2575
+ train_17342_a_1
2576
+ train_17342_a_2
2577
+ train_17347_a_1
2578
+ train_17363_a_1
2579
+ train_17363_a_2
2580
+ train_17386_a_1
2581
+ train_17386_a_2
2582
+ train_17388_a_1
2583
+ train_17388_a_2
2584
+ train_17391_a_1
2585
+ train_17391_a_2
2586
+ train_17399_a_1
2587
+ train_17408_a_1
2588
+ train_17408_a_2
2589
+ train_17444_a_1
2590
+ train_17444_a_2
2591
+ train_17447_a_1
2592
+ train_17447_a_2
2593
+ train_17448_a_1
2594
+ train_17448_a_2
2595
+ train_17450_a_1
2596
+ train_17450_a_2
2597
+ train_17487_a_1
2598
+ train_17487_a_2
2599
+ train_17502_a_1
2600
+ train_17502_a_2
2601
+ train_17508_a_1
2602
+ train_17508_a_2
2603
+ train_17510_a_1
2604
+ train_17510_a_2
2605
+ train_17533_a_1
2606
+ train_17533_a_2
2607
+ train_17533_b_1
2608
+ train_17533_b_2
2609
+ train_17533_c_1
2610
+ train_17533_c_2
2611
+ train_17562_a_1
2612
+ train_17562_a_2
2613
+ train_17565_a_1
2614
+ train_17565_a_2
2615
+ train_17574_a_1
2616
+ train_17574_a_2
2617
+ train_17596_a_1
2618
+ train_17596_a_2
2619
+ train_17612_a_1
2620
+ train_17613_a_1
2621
+ train_17613_a_2
2622
+ train_17634_a_1
2623
+ train_17634_a_2
2624
+ train_17634_b_1
2625
+ train_17634_b_2
2626
+ train_17641_a_1
2627
+ train_17641_a_2
2628
+ train_17643_a_1
2629
+ train_17643_a_2
2630
+ train_17656_a_1
2631
+ train_17656_a_2
2632
+ train_17664_a_1
2633
+ train_17664_a_2
2634
+ train_17668_a_1
2635
+ train_17668_a_2
2636
+ train_17670_a_1
2637
+ train_17670_a_2
2638
+ train_17680_a_1
2639
+ train_17680_a_2
2640
+ train_17693_a_1
2641
+ train_17693_a_2
2642
+ train_17696_a_1
2643
+ train_17696_a_2
2644
+ train_17725_a_1
2645
+ train_17725_a_2
2646
+ train_17738_a_1
2647
+ train_17738_a_2
2648
+ train_17777_a_1
2649
+ train_17777_a_2
2650
+ train_17836_a_1
2651
+ train_17836_a_2
2652
+ train_17957_a_1
2653
+ train_17963_a_1
2654
+ train_17963_a_2
2655
+ train_17971_a_1
2656
+ train_17971_a_2
2657
+ train_17992_a_1
2658
+ train_17992_a_2
2659
+ train_17992_b_1
2660
+ train_17992_b_2
2661
+ train_18000_a_1
2662
+ train_18000_a_2
2663
+ train_18015_a_1
2664
+ train_18015_a_2
2665
+ train_18033_a_1
2666
+ train_18035_a_1
2667
+ train_18035_a_2
2668
+ train_18050_a_1
2669
+ train_18050_a_2
2670
+ train_18092_a_1
2671
+ train_18092_a_2
2672
+ train_18114_a_1
2673
+ train_18114_a_2
2674
+ train_18126_a_1
2675
+ train_18126_a_2
2676
+ train_18166_a_1
2677
+ train_18166_a_2
2678
+ train_18206_a_1
2679
+ train_18206_a_2
2680
+ train_18208_a_1
2681
+ train_18208_a_2
2682
+ train_18214_a_1
2683
+ train_18214_a_2
2684
+ train_18217_a_1
2685
+ train_18226_a_1
2686
+ train_18226_a_2
2687
+ train_18255_a_1
2688
+ train_18255_a_2
2689
+ train_18258_a_1
2690
+ train_18258_a_2
2691
+ train_18269_a_1
2692
+ train_18269_a_2
2693
+ train_18281_a_1
2694
+ train_18281_a_2
2695
+ train_18337_a_1
2696
+ train_18337_a_2
2697
+ train_18356_a_1
2698
+ train_18387_a_1
2699
+ train_18387_a_2
2700
+ train_18390_a_1
2701
+ train_18390_a_2
2702
+ train_18401_a_1
2703
+ train_18401_a_2
2704
+ train_18418_a_1
2705
+ train_18418_a_2
2706
+ train_18457_a_1
2707
+ train_18465_a_1
2708
+ train_18465_b_1
2709
+ train_18465_b_2
2710
+ train_18465_c_1
2711
+ train_18465_c_2
2712
+ train_18465_d_1
2713
+ train_18465_d_2
2714
+ train_18465_e_1
2715
+ train_18465_e_2
2716
+ train_18465_f_1
2717
+ train_18465_f_2
2718
+ train_18481_a_1
2719
+ train_18481_a_2
2720
+ train_18489_a_1
2721
+ train_18489_a_2
2722
+ train_18489_b_1
2723
+ train_18489_b_2
2724
+ train_18489_c_1
2725
+ train_18489_c_2
2726
+ train_18489_d_1
2727
+ train_18489_d_2
2728
+ train_18489_e_1
2729
+ train_18489_e_2
2730
+ train_18489_f_1
2731
+ train_18489_f_2
2732
+ train_18499_a_1
2733
+ train_18499_a_2
2734
+ train_18499_b_1
2735
+ train_18499_b_2
2736
+ train_18499_c_1
2737
+ train_18499_c_2
2738
+ train_18499_d_1
2739
+ train_18499_d_2
2740
+ train_18537_a_1
2741
+ train_18537_a_2
2742
+ train_18540_a_1
2743
+ train_18540_b_1
2744
+ train_18540_b_2
2745
+ train_18540_c_1
2746
+ train_18540_c_2
2747
+ train_18541_a_1
2748
+ train_18541_a_2
2749
+ train_18544_a_1
2750
+ train_18545_a_1
2751
+ train_18545_a_2
2752
+ train_18560_a_1
2753
+ train_18560_a_2
2754
+ train_18581_a_1
2755
+ train_18581_a_2
2756
+ train_18582_a_1
2757
+ train_18583_a_1
2758
+ train_18583_a_2
2759
+ train_18586_a_1
2760
+ train_18586_a_2
2761
+ train_18601_a_1
2762
+ train_18601_a_2
2763
+ train_18617_a_1
2764
+ train_18617_a_2
2765
+ train_18625_a_1
2766
+ train_18625_a_2
2767
+ train_18628_a_1
2768
+ train_18628_a_2
2769
+ train_18631_a_1
2770
+ train_18631_a_2
2771
+ train_18647_a_1
2772
+ train_18647_a_2
2773
+ train_18649_a_1
2774
+ train_18649_a_2
2775
+ train_18651_a_1
2776
+ train_18651_a_2
2777
+ train_18663_a_1
2778
+ train_18663_a_2
2779
+ train_18663_b_1
2780
+ train_18663_b_2
2781
+ train_18680_a_1
2782
+ train_18680_a_2
2783
+ train_18680_b_1
2784
+ train_18680_b_2
2785
+ train_18690_a_1
2786
+ train_18690_a_2
2787
+ train_18738_a_1
2788
+ train_18738_a_2
2789
+ train_18739_a_1
2790
+ train_18739_a_2
2791
+ train_18747_a_1
2792
+ train_18747_a_2
2793
+ train_18773_a_1
2794
+ train_18773_a_2
2795
+ train_18788_a_1
2796
+ train_18788_a_2
2797
+ train_18803_a_1
2798
+ train_18803_a_2
2799
+ train_18815_a_1
2800
+ train_18815_a_2
2801
+ train_18823_a_1
2802
+ train_18823_a_2
2803
+ train_18828_a_1
2804
+ train_18851_a_1
2805
+ train_18851_a_2
2806
+ train_18878_a_1
2807
+ train_18878_a_2
2808
+ train_18880_a_1
2809
+ train_18880_a_2
2810
+ train_18885_a_1
2811
+ train_18885_a_2
2812
+ train_18885_b_1
2813
+ train_18885_b_2
2814
+ train_18889_a_1
2815
+ train_18889_a_2
2816
+ train_18901_a_1
2817
+ train_18901_a_2
2818
+ train_18917_a_1
2819
+ train_18917_a_2
2820
+ train_18918_a_1
2821
+ train_18918_a_2
2822
+ train_18924_a_1
2823
+ train_18924_a_2
2824
+ train_18924_b_1
2825
+ train_18924_b_2
2826
+ train_18929_a_1
2827
+ train_18929_a_2
2828
+ train_18943_a_1
2829
+ train_18991_a_1
2830
+ train_18991_a_2
2831
+ train_19001_a_1
2832
+ train_19001_a_2
2833
+ train_19010_a_1
2834
+ train_19010_a_2
2835
+ train_19016_a_1
2836
+ train_19016_a_2
2837
+ train_19025_a_1
2838
+ train_19025_a_2
2839
+ train_19025_b_1
2840
+ train_19025_b_2
2841
+ train_19052_a_1
2842
+ train_19052_a_2
2843
+ train_19067_a_1
2844
+ train_19067_a_2
2845
+ train_19074_a_1
2846
+ train_19074_a_2
2847
+ train_19078_a_1
2848
+ train_19078_a_2
2849
+ train_19101_a_1
2850
+ train_19101_a_2
2851
+ train_19144_a_1
2852
+ train_19144_a_2
2853
+ train_19144_b_1
2854
+ train_19144_b_2
2855
+ train_19144_c_1
2856
+ train_19144_c_2
2857
+ train_19149_a_1
2858
+ train_19149_a_2
2859
+ train_19163_a_1
2860
+ train_19163_a_2
2861
+ train_19181_a_1
2862
+ train_19181_a_2
2863
+ train_19183_a_1
2864
+ train_19183_a_2
2865
+ train_19183_b_1
2866
+ train_19183_b_2
2867
+ train_19199_a_1
2868
+ train_19200_a_1
2869
+ train_19200_a_2
2870
+ train_19206_a_1
2871
+ train_19206_a_2
2872
+ train_19257_a_1
2873
+ train_19257_a_2
2874
+ train_19274_a_1
2875
+ train_19274_a_2
2876
+ train_19282_a_1
2877
+ train_19282_a_2
2878
+ train_19293_a_1
2879
+ train_19293_a_2
2880
+ train_19314_a_1
2881
+ train_19314_a_2
2882
+ train_19322_a_1
2883
+ train_19322_a_2
2884
+ train_19323_a_1
2885
+ train_19323_a_2
2886
+ train_19348_a_1
2887
+ train_19348_a_2
2888
+ train_19374_a_1
2889
+ train_19374_a_2
2890
+ train_19374_b_1
2891
+ train_19374_b_2
2892
+ train_19384_a_1
2893
+ train_19384_a_2
2894
+ train_19406_a_1
2895
+ train_19406_a_2
2896
+ train_19423_a_1
2897
+ train_19423_a_2
2898
+ train_19423_a_3
2899
+ train_19423_a_4
2900
+ train_19423_b_1
2901
+ train_19423_b_2
2902
+ train_19423_c_1
2903
+ train_19423_c_2
2904
+ train_19437_a_1
2905
+ train_19437_a_2
2906
+ train_19455_a_1
2907
+ train_19455_a_2
2908
+ train_19508_a_3
2909
+ train_19508_a_5
2910
+ train_19521_a_1
2911
+ train_19521_a_2
2912
+ train_19524_a_1
2913
+ train_19524_a_2
2914
+ train_19550_a_1
2915
+ train_19550_a_2
2916
+ train_19563_a_1
2917
+ train_19563_a_2
2918
+ train_19569_a_1
2919
+ train_19569_a_2
2920
+ train_19588_a_1
2921
+ train_19588_a_2
2922
+ train_19588_b_1
2923
+ train_19588_b_2
2924
+ train_19588_c_1
2925
+ train_19588_c_2
2926
+ train_19610_a_1
2927
+ train_19610_a_2
2928
+ train_19632_a_1
2929
+ train_19632_a_2
2930
+ train_19641_a_1
2931
+ train_19641_a_2
2932
+ train_19651_a_1
2933
+ train_19651_a_2
2934
+ train_19665_a_1
2935
+ train_19665_a_2
2936
+ train_19669_a_1
2937
+ train_19669_a_2
2938
+ train_19675_a_1
2939
+ train_19675_a_2
2940
+ train_19687_a_1
2941
+ train_19687_a_2
2942
+ train_19687_b_1
2943
+ train_19687_b_2
2944
+ train_19687_c_1
2945
+ train_19687_c_2
2946
+ train_19696_a_1
2947
+ train_19696_a_2
2948
+ train_19714_a_1
2949
+ train_19714_a_2
2950
+ train_19732_a_1
2951
+ train_19732_a_2
2952
+ train_19736_a_1
2953
+ train_19736_a_2
2954
+ train_19736_b_1
2955
+ train_19736_b_2
2956
+ train_19748_a_1
2957
+ train_19748_a_2
2958
+ train_19750_a_1
2959
+ train_19750_a_2
2960
+ train_19750_b_1
2961
+ train_19750_b_2
2962
+ train_19751_a_1
2963
+ train_19751_a_2
2964
+ train_19805_a_1
2965
+ train_19805_a_2
2966
+ train_19811_a_1
2967
+ train_19811_a_2
2968
+ train_19823_a_1
2969
+ train_19823_a_2
2970
+ train_19831_a_1
2971
+ train_19831_a_2
2972
+ train_19860_a_1
2973
+ train_19860_a_2
2974
+ train_19860_b_1
2975
+ train_19860_b_2
2976
+ train_19860_c_1
2977
+ train_19860_c_2
2978
+ train_19879_a_1
2979
+ train_19879_a_2
2980
+ train_19880_a_1
2981
+ train_19880_a_2
2982
+ train_19887_a_1
2983
+ train_19887_a_2
2984
+ train_19905_a_1
2985
+ train_19905_a_2
2986
+ train_19943_a_1
2987
+ train_19943_a_2
2988
+ train_19952_a_1
2989
+ train_19956_a_1
2990
+ train_19956_a_2
2991
+ train_19963_a_1
2992
+ train_19963_a_2
2993
+ train_19974_a_1
2994
+ train_19974_a_2
data/splits/lidc_idri/test.txt ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LIDC-IDRI-0151/1.3.6.1.4.1.14519.5.2.1.6279.6001.780121538270617222115253441513/1.3.6.1.4.1.14519.5.2.1.6279.6001.768856069922657732839929586657
2
+ LIDC-IDRI-0355/1.3.6.1.4.1.14519.5.2.1.6279.6001.221138977753587043062153841454/1.3.6.1.4.1.14519.5.2.1.6279.6001.170344311940983984999167745197
3
+ LIDC-IDRI-0442/1.3.6.1.4.1.14519.5.2.1.6279.6001.265657827498396379702226874113/1.3.6.1.4.1.14519.5.2.1.6279.6001.335799017122466251265955525941
4
+ LIDC-IDRI-0315/1.3.6.1.4.1.14519.5.2.1.6279.6001.709924281509506265799179464374/1.3.6.1.4.1.14519.5.2.1.6279.6001.322682676064999314374885526223
5
+ LIDC-IDRI-0355/1.3.6.1.4.1.14519.5.2.1.6279.6001.246541809203697037171004327898/1.3.6.1.4.1.14519.5.2.1.6279.6001.147979688121667984912633630926
6
+ LIDC-IDRI-0332/1.3.6.1.4.1.14519.5.2.1.6279.6001.299122687641741853427119259207/1.3.6.1.4.1.14519.5.2.1.6279.6001.159996104466052855396410079250
7
+ LIDC-IDRI-0151/1.3.6.1.4.1.14519.5.2.1.6279.6001.222444895275634974977432374937/1.3.6.1.4.1.14519.5.2.1.6279.6001.453946099750629491201946672998
8
+ LIDC-IDRI-0938/1.3.6.1.4.1.14519.5.2.1.6279.6001.751804495161511023323654179121/1.3.6.1.4.1.14519.5.2.1.6279.6001.219349715895470349269596532320
9
+ LIDC-IDRI-0060/1.3.6.1.4.1.14519.5.2.1.6279.6001.203745372924354240670222118382/1.3.6.1.4.1.14519.5.2.1.6279.6001.463214953282361219537913355115
10
+ LIDC-IDRI-0091/1.3.6.1.4.1.14519.5.2.1.6279.6001.437063545936574671385154679589/1.3.6.1.4.1.14519.5.2.1.6279.6001.134996872583497382954024478441
11
+ LIDC-IDRI-0914/1.3.6.1.4.1.14519.5.2.1.6279.6001.146693794897525614810620472732/1.3.6.1.4.1.14519.5.2.1.6279.6001.334105754605642100456249422350
12
+ LIDC-IDRI-0198/1.3.6.1.4.1.14519.5.2.1.6279.6001.182529561822199780545440408033/1.3.6.1.4.1.14519.5.2.1.6279.6001.465032801496479029639448332481
13
+ LIDC-IDRI-0593/1.3.6.1.4.1.14519.5.2.1.6279.6001.128546361353633775045659990592/1.3.6.1.4.1.14519.5.2.1.6279.6001.306520140119968755187868602181
14
+ LIDC-IDRI-0716/1.3.6.1.4.1.14519.5.2.1.6279.6001.327233508500720321498837444121/1.3.6.1.4.1.14519.5.2.1.6279.6001.134638281277099121660656324702
15
+ LIDC-IDRI-0946/1.3.6.1.4.1.14519.5.2.1.6279.6001.289886930576192132696568423166/1.3.6.1.4.1.14519.5.2.1.6279.6001.156181515927698299507377083373
16
+ LIDC-IDRI-0174/1.3.6.1.4.1.14519.5.2.1.6279.6001.178508585973524477692282321864/1.3.6.1.4.1.14519.5.2.1.6279.6001.268838889380981659524993261082
17
+ LIDC-IDRI-0853/1.3.6.1.4.1.14519.5.2.1.6279.6001.854778727666988682245040938192/1.3.6.1.4.1.14519.5.2.1.6279.6001.159521777966998275980367008904
18
+ LIDC-IDRI-0924/1.3.6.1.4.1.14519.5.2.1.6279.6001.268186928222507173063266624020/1.3.6.1.4.1.14519.5.2.1.6279.6001.246225645401227472829175288633
19
+ LIDC-IDRI-0521/1.3.6.1.4.1.14519.5.2.1.6279.6001.135015991565946540622375616104/1.3.6.1.4.1.14519.5.2.1.6279.6001.187694838527128312070807533473
20
+ LIDC-IDRI-0087/1.3.6.1.4.1.14519.5.2.1.6279.6001.229388260375062685257395968125/1.3.6.1.4.1.14519.5.2.1.6279.6001.194632613233275988184244485809
21
+ LIDC-IDRI-0488/1.3.6.1.4.1.14519.5.2.1.6279.6001.598304550863987021597036432704/1.3.6.1.4.1.14519.5.2.1.6279.6001.193964947698259739624715468431
22
+ LIDC-IDRI-0609/1.3.6.1.4.1.14519.5.2.1.6279.6001.103936837659251066416686642502/1.3.6.1.4.1.14519.5.2.1.6279.6001.201890795870532056891161597218
23
+ LIDC-IDRI-0064/1.3.6.1.4.1.14519.5.2.1.6279.6001.262940731886389902640730271210/1.3.6.1.4.1.14519.5.2.1.6279.6001.487268565754493433372433148666
24
+ LIDC-IDRI-0702/1.3.6.1.4.1.14519.5.2.1.6279.6001.167461514102912667251280826923/1.3.6.1.4.1.14519.5.2.1.6279.6001.286422846896797433168187085942
25
+ LIDC-IDRI-0354/1.3.6.1.4.1.14519.5.2.1.6279.6001.267607850463096817515575285607/1.3.6.1.4.1.14519.5.2.1.6279.6001.112020141051733785092412736928
26
+ LIDC-IDRI-0221/1.3.6.1.4.1.14519.5.2.1.6279.6001.196064403160663787222867039271/1.3.6.1.4.1.14519.5.2.1.6279.6001.272344603176687884771013620823
27
+ LIDC-IDRI-0526/1.3.6.1.4.1.14519.5.2.1.6279.6001.186545761857837015081715243889/1.3.6.1.4.1.14519.5.2.1.6279.6001.180720061816899490466115851736
28
+ LIDC-IDRI-0053/1.3.6.1.4.1.14519.5.2.1.6279.6001.233265558039230075858412321938/1.3.6.1.4.1.14519.5.2.1.6279.6001.300136985030081433029390459071
29
+ LIDC-IDRI-1010/1.3.6.1.4.1.14519.5.2.1.6279.6001.145373944605191222309393681361/1.3.6.1.4.1.14519.5.2.1.6279.6001.550599855064600241623943717588
30
+ LIDC-IDRI-0192/1.3.6.1.4.1.14519.5.2.1.6279.6001.194264995369749234588783691976/1.3.6.1.4.1.14519.5.2.1.6279.6001.868211851413924881662621747734
31
+ LIDC-IDRI-0871/1.3.6.1.4.1.14519.5.2.1.6279.6001.323769537371782501749772855211/1.3.6.1.4.1.14519.5.2.1.6279.6001.299806338046301317870803017534
32
+ LIDC-IDRI-0969/1.3.6.1.4.1.14519.5.2.1.6279.6001.194408227371077105112329346518/1.3.6.1.4.1.14519.5.2.1.6279.6001.230675342744370103160629638194
33
+ LIDC-IDRI-0473/1.3.6.1.4.1.14519.5.2.1.6279.6001.210105060472758363785916556991/1.3.6.1.4.1.14519.5.2.1.6279.6001.994459772950022352718462251777
34
+ LIDC-IDRI-0642/1.3.6.1.4.1.14519.5.2.1.6279.6001.288625283139929827339044364850/1.3.6.1.4.1.14519.5.2.1.6279.6001.699408489230474820984000839814
35
+ LIDC-IDRI-0766/1.3.6.1.4.1.14519.5.2.1.6279.6001.267013157670921984098319605661/1.3.6.1.4.1.14519.5.2.1.6279.6001.104562737760173137525888934217
36
+ LIDC-IDRI-0332/1.3.6.1.4.1.14519.5.2.1.6279.6001.124508094927772723365648607398/1.3.6.1.4.1.14519.5.2.1.6279.6001.316900421002460665752357657094
37
+ LIDC-IDRI-0281/1.3.6.1.4.1.14519.5.2.1.6279.6001.899082900417573006084750602123/1.3.6.1.4.1.14519.5.2.1.6279.6001.861997885565255340442123234170
38
+ LIDC-IDRI-0595/1.3.6.1.4.1.14519.5.2.1.6279.6001.179835446111622550556046150972/1.3.6.1.4.1.14519.5.2.1.6279.6001.228049788831266512062175089637
39
+ LIDC-IDRI-0763/1.3.6.1.4.1.14519.5.2.1.6279.6001.262233919583075373552810415567/1.3.6.1.4.1.14519.5.2.1.6279.6001.215785045378334625097907422785
40
+ LIDC-IDRI-0261/1.3.6.1.4.1.14519.5.2.1.6279.6001.303787857004156773187912154976/1.3.6.1.4.1.14519.5.2.1.6279.6001.280972147860943609388015648430
41
+ LIDC-IDRI-0725/1.3.6.1.4.1.14519.5.2.1.6279.6001.305942859345281883515236698139/1.3.6.1.4.1.14519.5.2.1.6279.6001.561423049201987049884663740668
42
+ LIDC-IDRI-0297/1.3.6.1.4.1.14519.5.2.1.6279.6001.164156833754689412076055510609/1.3.6.1.4.1.14519.5.2.1.6279.6001.428038562098395445838061018440
43
+ LIDC-IDRI-0481/1.3.6.1.4.1.14519.5.2.1.6279.6001.318162998398046037585497173804/1.3.6.1.4.1.14519.5.2.1.6279.6001.107351566259572521472765997306
44
+ LIDC-IDRI-0753/1.3.6.1.4.1.14519.5.2.1.6279.6001.837260510399523070637863582641/1.3.6.1.4.1.14519.5.2.1.6279.6001.238522526736091851696274044574
45
+ LIDC-IDRI-0391/1.3.6.1.4.1.14519.5.2.1.6279.6001.226889452118226653325966834723/1.3.6.1.4.1.14519.5.2.1.6279.6001.334184846571549530235084187602
46
+ LIDC-IDRI-0951/1.3.6.1.4.1.14519.5.2.1.6279.6001.202313610740309364769212928365/1.3.6.1.4.1.14519.5.2.1.6279.6001.119304665257760307862874140576
47
+ LIDC-IDRI-0276/1.3.6.1.4.1.14519.5.2.1.6279.6001.660741147026674947967595590708/1.3.6.1.4.1.14519.5.2.1.6279.6001.212346425055214308006918165305
48
+ LIDC-IDRI-0994/1.3.6.1.4.1.14519.5.2.1.6279.6001.300829918445389512656506955074/1.3.6.1.4.1.14519.5.2.1.6279.6001.534006575256943390479252771547
49
+ LIDC-IDRI-0867/1.3.6.1.4.1.14519.5.2.1.6279.6001.265390640843728236501931252310/1.3.6.1.4.1.14519.5.2.1.6279.6001.293757615532132808762625441831
50
+ LIDC-IDRI-0772/1.3.6.1.4.1.14519.5.2.1.6279.6001.212173791575971142588528365479/1.3.6.1.4.1.14519.5.2.1.6279.6001.112740418331256326754121315800
51
+ LIDC-IDRI-0708/1.3.6.1.4.1.14519.5.2.1.6279.6001.965523656856760127560055059644/1.3.6.1.4.1.14519.5.2.1.6279.6001.741709061958490690246385302477
52
+ LIDC-IDRI-0251/1.3.6.1.4.1.14519.5.2.1.6279.6001.157894141428308694229687552009/1.3.6.1.4.1.14519.5.2.1.6279.6001.307835307280028057486413359377
53
+ LIDC-IDRI-0587/1.3.6.1.4.1.14519.5.2.1.6279.6001.670416970629038619301651972112/1.3.6.1.4.1.14519.5.2.1.6279.6001.213140617640021803112060161074
54
+ LIDC-IDRI-0650/1.3.6.1.4.1.14519.5.2.1.6279.6001.275342292592333052340429698533/1.3.6.1.4.1.14519.5.2.1.6279.6001.276351267409869539593937734609
55
+ LIDC-IDRI-0612/1.3.6.1.4.1.14519.5.2.1.6279.6001.320384550857954988796553893403/1.3.6.1.4.1.14519.5.2.1.6279.6001.167500254299688235071950909530
56
+ LIDC-IDRI-0812/1.3.6.1.4.1.14519.5.2.1.6279.6001.129889229961080005326707611943/1.3.6.1.4.1.14519.5.2.1.6279.6001.109203031650348694844047454215
57
+ LIDC-IDRI-0895/1.3.6.1.4.1.14519.5.2.1.6279.6001.223929343925645778515146916755/1.3.6.1.4.1.14519.5.2.1.6279.6001.458525794434429386945463560826
58
+ LIDC-IDRI-0692/1.3.6.1.4.1.14519.5.2.1.6279.6001.262372993180687488521371393069/1.3.6.1.4.1.14519.5.2.1.6279.6001.404364125369979066736354549484
59
+ LIDC-IDRI-0527/1.3.6.1.4.1.14519.5.2.1.6279.6001.310869628943317589181434675447/1.3.6.1.4.1.14519.5.2.1.6279.6001.271181474656996637903928248007
60
+ LIDC-IDRI-0479/1.3.6.1.4.1.14519.5.2.1.6279.6001.173476782913985657859750913739/1.3.6.1.4.1.14519.5.2.1.6279.6001.188385286346390202873004762827
61
+ LIDC-IDRI-0992/1.3.6.1.4.1.14519.5.2.1.6279.6001.533848162484464792928836838329/1.3.6.1.4.1.14519.5.2.1.6279.6001.187803155574314810830688534991
62
+ LIDC-IDRI-0819/1.3.6.1.4.1.14519.5.2.1.6279.6001.807635771657676107005923650811/1.3.6.1.4.1.14519.5.2.1.6279.6001.149893110752986700464921264055
63
+ LIDC-IDRI-0066/1.3.6.1.4.1.14519.5.2.1.6279.6001.143774983852765282237869625332/1.3.6.1.4.1.14519.5.2.1.6279.6001.430109407146633213496148200410
64
+ LIDC-IDRI-0539/1.3.6.1.4.1.14519.5.2.1.6279.6001.774224171618605001583693363297/1.3.6.1.4.1.14519.5.2.1.6279.6001.283733738239331719775105586296
65
+ LIDC-IDRI-0923/1.3.6.1.4.1.14519.5.2.1.6279.6001.279957551156089498592959292779/1.3.6.1.4.1.14519.5.2.1.6279.6001.640729228179368154416184318668
66
+ LIDC-IDRI-0887/1.3.6.1.4.1.14519.5.2.1.6279.6001.306979641566588911923060002188/1.3.6.1.4.1.14519.5.2.1.6279.6001.159665703190517688573100822213
67
+ LIDC-IDRI-0746/1.3.6.1.4.1.14519.5.2.1.6279.6001.264320238393338793327058584209/1.3.6.1.4.1.14519.5.2.1.6279.6001.171682845383273105440297561095
68
+ LIDC-IDRI-0524/1.3.6.1.4.1.14519.5.2.1.6279.6001.226402817998131997261275093738/1.3.6.1.4.1.14519.5.2.1.6279.6001.842317928015463083368074520378
69
+ LIDC-IDRI-0300/1.3.6.1.4.1.14519.5.2.1.6279.6001.165017330457520545748655969705/1.3.6.1.4.1.14519.5.2.1.6279.6001.324290109423920971676288828329
70
+ LIDC-IDRI-0509/1.3.6.1.4.1.14519.5.2.1.6279.6001.291105837361929821655470189849/1.3.6.1.4.1.14519.5.2.1.6279.6001.200783211179294046901893379828
71
+ LIDC-IDRI-0696/1.3.6.1.4.1.14519.5.2.1.6279.6001.108965194825990605371103747168/1.3.6.1.4.1.14519.5.2.1.6279.6001.129567032250534530765928856531
72
+ LIDC-IDRI-0291/1.3.6.1.4.1.14519.5.2.1.6279.6001.471106432014627176550866096857/1.3.6.1.4.1.14519.5.2.1.6279.6001.170825539570536865106681134236
73
+ LIDC-IDRI-0287/1.3.6.1.4.1.14519.5.2.1.6279.6001.244389108887315437307204657105/1.3.6.1.4.1.14519.5.2.1.6279.6001.395623571499047043765181005112
74
+ LIDC-IDRI-0299/1.3.6.1.4.1.14519.5.2.1.6279.6001.325830590463177737667102135732/1.3.6.1.4.1.14519.5.2.1.6279.6001.170921541362033046216100409521
75
+ LIDC-IDRI-0460/1.3.6.1.4.1.14519.5.2.1.6279.6001.161084022770774658371336888233/1.3.6.1.4.1.14519.5.2.1.6279.6001.362762275895885013176610377950
76
+ LIDC-IDRI-0651/1.3.6.1.4.1.14519.5.2.1.6279.6001.531322615015231731672909400685/1.3.6.1.4.1.14519.5.2.1.6279.6001.397522780537301776672854630421
77
+ LIDC-IDRI-0047/1.3.6.1.4.1.14519.5.2.1.6279.6001.262595324886254011362748468025/1.3.6.1.4.1.14519.5.2.1.6279.6001.338114620394879648539943280992
78
+ LIDC-IDRI-0528/1.3.6.1.4.1.14519.5.2.1.6279.6001.260588761508265678453204226958/1.3.6.1.4.1.14519.5.2.1.6279.6001.235217371152464582553341729176
79
+ LIDC-IDRI-0329/1.3.6.1.4.1.14519.5.2.1.6279.6001.311543823141683719978679431015/1.3.6.1.4.1.14519.5.2.1.6279.6001.303865116731361029078599241306
80
+ LIDC-IDRI-0115/1.3.6.1.4.1.14519.5.2.1.6279.6001.140071422310372235469229806680/1.3.6.1.4.1.14519.5.2.1.6279.6001.166112018536246672777968137997
81
+ LIDC-IDRI-0813/1.3.6.1.4.1.14519.5.2.1.6279.6001.139110171863263699469684411692/1.3.6.1.4.1.14519.5.2.1.6279.6001.100398138793540579077826395208
82
+ LIDC-IDRI-0630/1.3.6.1.4.1.14519.5.2.1.6279.6001.311286315716340154235274558813/1.3.6.1.4.1.14519.5.2.1.6279.6001.171919524048654494439256263785
83
+ LIDC-IDRI-0977/1.3.6.1.4.1.14519.5.2.1.6279.6001.283363009241515390315316302638/1.3.6.1.4.1.14519.5.2.1.6279.6001.308183340111270052562662456038
84
+ LIDC-IDRI-0420/1.3.6.1.4.1.14519.5.2.1.6279.6001.269884215256755446329937557120/1.3.6.1.4.1.14519.5.2.1.6279.6001.276556509002726404418399209377
85
+ LIDC-IDRI-0913/1.3.6.1.4.1.14519.5.2.1.6279.6001.843094005962961412710063697075/1.3.6.1.4.1.14519.5.2.1.6279.6001.750792629100457382099842515038
86
+ LIDC-IDRI-0685/1.3.6.1.4.1.14519.5.2.1.6279.6001.177931410497444598503378575664/1.3.6.1.4.1.14519.5.2.1.6279.6001.196619392240146451912217585346
87
+ LIDC-IDRI-0442/1.3.6.1.4.1.14519.5.2.1.6279.6001.193438875802960011844317570223/1.3.6.1.4.1.14519.5.2.1.6279.6001.226813447046845316215094488309
88
+ LIDC-IDRI-0401/1.3.6.1.4.1.14519.5.2.1.6279.6001.344370459068774891776634727699/1.3.6.1.4.1.14519.5.2.1.6279.6001.120196332569034738680965284519
89
+ LIDC-IDRI-0758/1.3.6.1.4.1.14519.5.2.1.6279.6001.427346572209935588501414358601/1.3.6.1.4.1.14519.5.2.1.6279.6001.313756547848086902190878548835
90
+ LIDC-IDRI-0051/1.3.6.1.4.1.14519.5.2.1.6279.6001.163285696979961262813032969899/1.3.6.1.4.1.14519.5.2.1.6279.6001.779493719385047675154892222907
91
+ LIDC-IDRI-0583/1.3.6.1.4.1.14519.5.2.1.6279.6001.230901123329037029807195618747/1.3.6.1.4.1.14519.5.2.1.6279.6001.955688628308192728558382581802
92
+ LIDC-IDRI-0790/1.3.6.1.4.1.14519.5.2.1.6279.6001.107063920355575867343721608071/1.3.6.1.4.1.14519.5.2.1.6279.6001.266009527139315622265711325223
93
+ LIDC-IDRI-0405/1.3.6.1.4.1.14519.5.2.1.6279.6001.222993894345836169253703951249/1.3.6.1.4.1.14519.5.2.1.6279.6001.693480911433291675609148051914
94
+ LIDC-IDRI-0208/1.3.6.1.4.1.14519.5.2.1.6279.6001.159596875781736451820677432740/1.3.6.1.4.1.14519.5.2.1.6279.6001.310395752124284049604069960014
95
+ LIDC-IDRI-0765/1.3.6.1.4.1.14519.5.2.1.6279.6001.225520892751936930714518753705/1.3.6.1.4.1.14519.5.2.1.6279.6001.308153138776443962077214577161
96
+ LIDC-IDRI-0735/1.3.6.1.4.1.14519.5.2.1.6279.6001.534939840290931669471335109271/1.3.6.1.4.1.14519.5.2.1.6279.6001.417815314896088956784723476543
97
+ LIDC-IDRI-0215/1.3.6.1.4.1.14519.5.2.1.6279.6001.333224958421615824054029320306/1.3.6.1.4.1.14519.5.2.1.6279.6001.312704771348460502013249647868
98
+ LIDC-IDRI-0248/1.3.6.1.4.1.14519.5.2.1.6279.6001.202972199430488069905719748096/1.3.6.1.4.1.14519.5.2.1.6279.6001.174168737938619557573021395302
99
+ LIDC-IDRI-1005/1.3.6.1.4.1.14519.5.2.1.6279.6001.560355181698089203099323359955/1.3.6.1.4.1.14519.5.2.1.6279.6001.142485715518010940961688015191
100
+ LIDC-IDRI-0703/1.3.6.1.4.1.14519.5.2.1.6279.6001.145643207559809787753499447041/1.3.6.1.4.1.14519.5.2.1.6279.6001.138080888843357047811238713686
101
+ LIDC-IDRI-0368/1.3.6.1.4.1.14519.5.2.1.6279.6001.267495169884268604035801498197/1.3.6.1.4.1.14519.5.2.1.6279.6001.326084450802794941185111945926
102
+ LIDC-IDRI-0731/1.3.6.1.4.1.14519.5.2.1.6279.6001.305398246365961706334877462365/1.3.6.1.4.1.14519.5.2.1.6279.6001.265570697208310960298668720669
103
+ LIDC-IDRI-0092/1.3.6.1.4.1.14519.5.2.1.6279.6001.385976057629453563236462196337/1.3.6.1.4.1.14519.5.2.1.6279.6001.286217539434358186648717203667
104
+ LIDC-IDRI-0011/1.3.6.1.4.1.14519.5.2.1.6279.6001.292628672046109312619048073568/1.3.6.1.4.1.14519.5.2.1.6279.6001.140253591510022414496468423138
105
+ LIDC-IDRI-0138/1.3.6.1.4.1.14519.5.2.1.6279.6001.752603750437458841409277737148/1.3.6.1.4.1.14519.5.2.1.6279.6001.104780906131535625872840889059
106
+ LIDC-IDRI-0098/1.3.6.1.4.1.14519.5.2.1.6279.6001.217795632219483181846615097960/1.3.6.1.4.1.14519.5.2.1.6279.6001.286524966129599998397777745271
107
+ LIDC-IDRI-0632/1.3.6.1.4.1.14519.5.2.1.6279.6001.291460108344622455836419963313/1.3.6.1.4.1.14519.5.2.1.6279.6001.339484970190920330170416228517
108
+ LIDC-IDRI-0511/1.3.6.1.4.1.14519.5.2.1.6279.6001.160580646297142988675326833498/1.3.6.1.4.1.14519.5.2.1.6279.6001.657775098760536289051744981056
109
+ LIDC-IDRI-0834/1.3.6.1.4.1.14519.5.2.1.6279.6001.224985459390356936417021464571/1.3.6.1.4.1.14519.5.2.1.6279.6001.273525289046256012743471155680
110
+ LIDC-IDRI-0419/1.3.6.1.4.1.14519.5.2.1.6279.6001.283314504686117114905176791940/1.3.6.1.4.1.14519.5.2.1.6279.6001.254957696184671649675053562027
111
+ LIDC-IDRI-0042/1.3.6.1.4.1.14519.5.2.1.6279.6001.284028192986684647771628933377/1.3.6.1.4.1.14519.5.2.1.6279.6001.280125803152924778388346920341
112
+ LIDC-IDRI-0255/1.3.6.1.4.1.14519.5.2.1.6279.6001.241863405068914130326466911331/1.3.6.1.4.1.14519.5.2.1.6279.6001.240969450540588211676803094518
113
+ LIDC-IDRI-0058/1.3.6.1.4.1.14519.5.2.1.6279.6001.495416793311762759653372975706/1.3.6.1.4.1.14519.5.2.1.6279.6001.323408652979949774528873200770
114
+ LIDC-IDRI-0477/1.3.6.1.4.1.14519.5.2.1.6279.6001.339555666338359721401666777459/1.3.6.1.4.1.14519.5.2.1.6279.6001.478062284228419671253422844986
115
+ LIDC-IDRI-0417/1.3.6.1.4.1.14519.5.2.1.6279.6001.220535036761911718396433938390/1.3.6.1.4.1.14519.5.2.1.6279.6001.504324996863016748259361352296
116
+ LIDC-IDRI-0658/1.3.6.1.4.1.14519.5.2.1.6279.6001.221467562933372960599414594591/1.3.6.1.4.1.14519.5.2.1.6279.6001.167919147233131417984739058859
117
+ LIDC-IDRI-0489/1.3.6.1.4.1.14519.5.2.1.6279.6001.299799877133044736642536495362/1.3.6.1.4.1.14519.5.2.1.6279.6001.290135156874098366424871975734
118
+ LIDC-IDRI-0495/1.3.6.1.4.1.14519.5.2.1.6279.6001.150164970015823494629986891791/1.3.6.1.4.1.14519.5.2.1.6279.6001.111780708132595903430640048766
119
+ LIDC-IDRI-0847/1.3.6.1.4.1.14519.5.2.1.6279.6001.901103510796290218917651903823/1.3.6.1.4.1.14519.5.2.1.6279.6001.237915456403882324748189195892
120
+ LIDC-IDRI-0257/1.3.6.1.4.1.14519.5.2.1.6279.6001.429699865856208366565779600254/1.3.6.1.4.1.14519.5.2.1.6279.6001.614147706162329660656328811671
121
+ LIDC-IDRI-0055/1.3.6.1.4.1.14519.5.2.1.6279.6001.131383203689189807643685075952/1.3.6.1.4.1.14519.5.2.1.6279.6001.214252223927572015414741039150
122
+ LIDC-IDRI-0981/1.3.6.1.4.1.14519.5.2.1.6279.6001.183948389971742539190611659002/1.3.6.1.4.1.14519.5.2.1.6279.6001.156579001330474859527530187095
123
+ LIDC-IDRI-0446/1.3.6.1.4.1.14519.5.2.1.6279.6001.119049674920780852093306703519/1.3.6.1.4.1.14519.5.2.1.6279.6001.324649110927013926557500550446
124
+ LIDC-IDRI-0306/1.3.6.1.4.1.14519.5.2.1.6279.6001.204577804822753373728243956413/1.3.6.1.4.1.14519.5.2.1.6279.6001.269689294231892620436462818860
125
+ LIDC-IDRI-0359/1.3.6.1.4.1.14519.5.2.1.6279.6001.275399413024322303306387851279/1.3.6.1.4.1.14519.5.2.1.6279.6001.292868422368935585625620199750
126
+ LIDC-IDRI-0869/1.3.6.1.4.1.14519.5.2.1.6279.6001.250118712805848631355370259962/1.3.6.1.4.1.14519.5.2.1.6279.6001.163901773171373940247829492387
127
+ LIDC-IDRI-0876/1.3.6.1.4.1.14519.5.2.1.6279.6001.784007996791528844702730909529/1.3.6.1.4.1.14519.5.2.1.6279.6001.145510611155363050427743946446
128
+ LIDC-IDRI-0204/1.3.6.1.4.1.14519.5.2.1.6279.6001.190578678221433604759795450204/1.3.6.1.4.1.14519.5.2.1.6279.6001.149041668385192796520281592139
129
+ LIDC-IDRI-0196/1.3.6.1.4.1.14519.5.2.1.6279.6001.128882236014679059490275573019/1.3.6.1.4.1.14519.5.2.1.6279.6001.160586340600816116143631200450
130
+ LIDC-IDRI-0893/1.3.6.1.4.1.14519.5.2.1.6279.6001.187400292293901990471724598227/1.3.6.1.4.1.14519.5.2.1.6279.6001.765930210026773090100532964804
131
+ LIDC-IDRI-0868/1.3.6.1.4.1.14519.5.2.1.6279.6001.155894685355411131558273211903/1.3.6.1.4.1.14519.5.2.1.6279.6001.123654356399290048011621921476
132
+ LIDC-IDRI-0639/1.3.6.1.4.1.14519.5.2.1.6279.6001.117743534419290251609867537261/1.3.6.1.4.1.14519.5.2.1.6279.6001.293593766328917170359373773080
133
+ LIDC-IDRI-0209/1.3.6.1.4.1.14519.5.2.1.6279.6001.255996783379921037765414923334/1.3.6.1.4.1.14519.5.2.1.6279.6001.805925269324902055566754756843
134
+ LIDC-IDRI-0430/1.3.6.1.4.1.14519.5.2.1.6279.6001.559812581756025353887436599032/1.3.6.1.4.1.14519.5.2.1.6279.6001.323899724653546164058849558431
135
+ LIDC-IDRI-0686/1.3.6.1.4.1.14519.5.2.1.6279.6001.530012655070930408996523309860/1.3.6.1.4.1.14519.5.2.1.6279.6001.195557219224169985110295082004
136
+ LIDC-IDRI-0318/1.3.6.1.4.1.14519.5.2.1.6279.6001.261859010096419762853634942928/1.3.6.1.4.1.14519.5.2.1.6279.6001.439153572396640163898529626096
137
+ LIDC-IDRI-0990/1.3.6.1.4.1.14519.5.2.1.6279.6001.276910031320955223579056176086/1.3.6.1.4.1.14519.5.2.1.6279.6001.339882192295517122002429068974
138
+ LIDC-IDRI-0360/1.3.6.1.4.1.14519.5.2.1.6279.6001.172891325013037275999502688439/1.3.6.1.4.1.14519.5.2.1.6279.6001.449780571702869645673186059985
139
+ LIDC-IDRI-0237/1.3.6.1.4.1.14519.5.2.1.6279.6001.234418158081986309761071794125/1.3.6.1.4.1.14519.5.2.1.6279.6001.438308540025607517017949816111
140
+ LIDC-IDRI-0307/1.3.6.1.4.1.14519.5.2.1.6279.6001.119304150360419538908259539201/1.3.6.1.4.1.14519.5.2.1.6279.6001.283878926524838648426928238498
141
+ LIDC-IDRI-0319/1.3.6.1.4.1.14519.5.2.1.6279.6001.684596493379395503904158873210/1.3.6.1.4.1.14519.5.2.1.6279.6001.124154461048929153767743874565
142
+ LIDC-IDRI-0077/1.3.6.1.4.1.14519.5.2.1.6279.6001.220440176952423273988539874706/1.3.6.1.4.1.14519.5.2.1.6279.6001.669435869708883155232318480131
143
+ LIDC-IDRI-0691/1.3.6.1.4.1.14519.5.2.1.6279.6001.311744239959995611370181604400/1.3.6.1.4.1.14519.5.2.1.6279.6001.326853837126361167310734933887
144
+ LIDC-IDRI-0429/1.3.6.1.4.1.14519.5.2.1.6279.6001.322604336063659838243542603396/1.3.6.1.4.1.14519.5.2.1.6279.6001.392861216720727557882279374324
145
+ LIDC-IDRI-0436/1.3.6.1.4.1.14519.5.2.1.6279.6001.299257181285137013436464151874/1.3.6.1.4.1.14519.5.2.1.6279.6001.251204142823446211001577555181
146
+ LIDC-IDRI-0698/1.3.6.1.4.1.14519.5.2.1.6279.6001.292417350644573735869959859895/1.3.6.1.4.1.14519.5.2.1.6279.6001.208511362832825683639135205368
147
+ LIDC-IDRI-0111/1.3.6.1.4.1.14519.5.2.1.6279.6001.361004729625204263297457202086/1.3.6.1.4.1.14519.5.2.1.6279.6001.257383535269991165447822992959
148
+ LIDC-IDRI-0601/1.3.6.1.4.1.14519.5.2.1.6279.6001.292267299840811335940503268889/1.3.6.1.4.1.14519.5.2.1.6279.6001.224465398054769500989828256685
149
+ LIDC-IDRI-0315/1.3.6.1.4.1.14519.5.2.1.6279.6001.190722769298607626547238572819/1.3.6.1.4.1.14519.5.2.1.6279.6001.406508755509460310384282367044
150
+ LIDC-IDRI-0582/1.3.6.1.4.1.14519.5.2.1.6279.6001.235632691141320250472721126959/1.3.6.1.4.1.14519.5.2.1.6279.6001.124822907934319930841506266464
151
+ LIDC-IDRI-0645/1.3.6.1.4.1.14519.5.2.1.6279.6001.211028058202430803930155553655/1.3.6.1.4.1.14519.5.2.1.6279.6001.670107649586205629860363487713
152
+ LIDC-IDRI-0641/1.3.6.1.4.1.14519.5.2.1.6279.6001.191073955214402396197702655759/1.3.6.1.4.1.14519.5.2.1.6279.6001.299767339686526858593516834230
153
+ LIDC-IDRI-0529/1.3.6.1.4.1.14519.5.2.1.6279.6001.135441977655501389639333579222/1.3.6.1.4.1.14519.5.2.1.6279.6001.168605638657404145360275453085
154
+ LIDC-IDRI-0578/1.3.6.1.4.1.14519.5.2.1.6279.6001.145309426008342216455171944681/1.3.6.1.4.1.14519.5.2.1.6279.6001.313605260055394498989743099991
155
+ LIDC-IDRI-0478/1.3.6.1.4.1.14519.5.2.1.6279.6001.150842260481112310322112796796/1.3.6.1.4.1.14519.5.2.1.6279.6001.211071908915618528829547301883
156
+ LIDC-IDRI-0073/1.3.6.1.4.1.14519.5.2.1.6279.6001.271910441918529291689264844963/1.3.6.1.4.1.14519.5.2.1.6279.6001.279300249795483097365868125932
157
+ LIDC-IDRI-0899/1.3.6.1.4.1.14519.5.2.1.6279.6001.325608968275343627520297346991/1.3.6.1.4.1.14519.5.2.1.6279.6001.216652640878960522552873394709
data/splits/lidc_idri/train.txt ADDED
The diff for this file is too large to render. See raw diff
 
data/splits/lidc_idri/val.txt ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LIDC-IDRI-0828/1.3.6.1.4.1.14519.5.2.1.6279.6001.969325292841504805778529336047/1.3.6.1.4.1.14519.5.2.1.6279.6001.114195693932194925962391697338
2
+ LIDC-IDRI-0245/1.3.6.1.4.1.14519.5.2.1.6279.6001.188204058669364993757306038569/1.3.6.1.4.1.14519.5.2.1.6279.6001.320111824803959660037459294083
3
+ LIDC-IDRI-0184/1.3.6.1.4.1.14519.5.2.1.6279.6001.577239032421661596436882763701/1.3.6.1.4.1.14519.5.2.1.6279.6001.106630482085576298661469304872
4
+ LIDC-IDRI-0549/1.3.6.1.4.1.14519.5.2.1.6279.6001.298731156484751583249477309475/1.3.6.1.4.1.14519.5.2.1.6279.6001.154837327827713479309898027966
5
+ LIDC-IDRI-0385/1.3.6.1.4.1.14519.5.2.1.6279.6001.208376669554572460085205852204/1.3.6.1.4.1.14519.5.2.1.6279.6001.268030488196493755113553009785
6
+ LIDC-IDRI-0898/1.3.6.1.4.1.14519.5.2.1.6279.6001.871736676471446897375109464440/1.3.6.1.4.1.14519.5.2.1.6279.6001.244447966386688625240438849169
7
+ LIDC-IDRI-0262/1.3.6.1.4.1.14519.5.2.1.6279.6001.142440312470956325774436777849/1.3.6.1.4.1.14519.5.2.1.6279.6001.127965161564033605177803085629
8
+ LIDC-IDRI-0308/1.3.6.1.4.1.14519.5.2.1.6279.6001.310943546307547399461310181653/1.3.6.1.4.1.14519.5.2.1.6279.6001.270215889102603268207599305185
9
+ LIDC-IDRI-0562/1.3.6.1.4.1.14519.5.2.1.6279.6001.349904517868103143773797132680/1.3.6.1.4.1.14519.5.2.1.6279.6001.219087313261026510628926082729
10
+ LIDC-IDRI-0543/1.3.6.1.4.1.14519.5.2.1.6279.6001.158967312129487733823739945169/1.3.6.1.4.1.14519.5.2.1.6279.6001.792381786708289670758399079830
11
+ LIDC-IDRI-0873/1.3.6.1.4.1.14519.5.2.1.6279.6001.216596541995300108433152752372/1.3.6.1.4.1.14519.5.2.1.6279.6001.975254950136384517744116790879
12
+ LIDC-IDRI-0133/1.3.6.1.4.1.14519.5.2.1.6279.6001.138751917514248782010778675083/1.3.6.1.4.1.14519.5.2.1.6279.6001.133378195429627807109985347209
13
+ LIDC-IDRI-0445/1.3.6.1.4.1.14519.5.2.1.6279.6001.235161199041083161581467190209/1.3.6.1.4.1.14519.5.2.1.6279.6001.394470743585708729682444806008
14
+ LIDC-IDRI-0017/1.3.6.1.4.1.14519.5.2.1.6279.6001.853991115059421477233219569301/1.3.6.1.4.1.14519.5.2.1.6279.6001.108231420525711026834210228428
15
+ LIDC-IDRI-0748/1.3.6.1.4.1.14519.5.2.1.6279.6001.194890498394311571938776742465/1.3.6.1.4.1.14519.5.2.1.6279.6001.229860476925100292554329427970
16
+ LIDC-IDRI-0333/1.3.6.1.4.1.14519.5.2.1.6279.6001.119282761272977253557254714163/1.3.6.1.4.1.14519.5.2.1.6279.6001.885292267869246639232975687131
17
+ LIDC-IDRI-0260/1.3.6.1.4.1.14519.5.2.1.6279.6001.691546855561342606351412524861/1.3.6.1.4.1.14519.5.2.1.6279.6001.121993590721161347818774929286
18
+ LIDC-IDRI-0598/1.3.6.1.4.1.14519.5.2.1.6279.6001.304128927772479718113589870111/1.3.6.1.4.1.14519.5.2.1.6279.6001.939152384493874708850321969356
19
+ LIDC-IDRI-0647/1.3.6.1.4.1.14519.5.2.1.6279.6001.971476961920773226447199844576/1.3.6.1.4.1.14519.5.2.1.6279.6001.231834776365874788440767645596
20
+ LIDC-IDRI-0700/1.3.6.1.4.1.14519.5.2.1.6279.6001.181785797305004428693015149455/1.3.6.1.4.1.14519.5.2.1.6279.6001.227885601428639043345478571594
21
+ LIDC-IDRI-0903/1.3.6.1.4.1.14519.5.2.1.6279.6001.492147426349651002023084837260/1.3.6.1.4.1.14519.5.2.1.6279.6001.701514276942509393419164159551
22
+ LIDC-IDRI-0475/1.3.6.1.4.1.14519.5.2.1.6279.6001.219248583669253502298142724766/1.3.6.1.4.1.14519.5.2.1.6279.6001.140642535005388188316143069436
23
+ LIDC-IDRI-0756/1.3.6.1.4.1.14519.5.2.1.6279.6001.283065772077726118787509535476/1.3.6.1.4.1.14519.5.2.1.6279.6001.525937963993475482158828421281
24
+ LIDC-IDRI-0421/1.3.6.1.4.1.14519.5.2.1.6279.6001.145101705103753228347955694208/1.3.6.1.4.1.14519.5.2.1.6279.6001.331136451298749863730308327406
25
+ LIDC-IDRI-0909/1.3.6.1.4.1.14519.5.2.1.6279.6001.289759534306508848209269388603/1.3.6.1.4.1.14519.5.2.1.6279.6001.116703382344406837243058680403
26
+ LIDC-IDRI-0840/1.3.6.1.4.1.14519.5.2.1.6279.6001.317269195393986070164185617972/1.3.6.1.4.1.14519.5.2.1.6279.6001.219281726101239572270900838145
27
+ LIDC-IDRI-0231/1.3.6.1.4.1.14519.5.2.1.6279.6001.198021313421875017435046583973/1.3.6.1.4.1.14519.5.2.1.6279.6001.246589849815292078281051154201
28
+ LIDC-IDRI-0027/1.3.6.1.4.1.14519.5.2.1.6279.6001.228681789686851016136117645559/1.3.6.1.4.1.14519.5.2.1.6279.6001.183843376225716802567192412456
29
+ LIDC-IDRI-0999/1.3.6.1.4.1.14519.5.2.1.6279.6001.306223432026099623241869333271/1.3.6.1.4.1.14519.5.2.1.6279.6001.216882370221919561230873289517
30
+ LIDC-IDRI-0554/1.3.6.1.4.1.14519.5.2.1.6279.6001.371593558888147552115426364555/1.3.6.1.4.1.14519.5.2.1.6279.6001.306788423710427765311352901943
31
+ LIDC-IDRI-0911/1.3.6.1.4.1.14519.5.2.1.6279.6001.261881453527700554965645624212/1.3.6.1.4.1.14519.5.2.1.6279.6001.135657246677982059395844827629
32
+ LIDC-IDRI-0762/1.3.6.1.4.1.14519.5.2.1.6279.6001.215789618966985272514045108451/1.3.6.1.4.1.14519.5.2.1.6279.6001.292194861362266467652267941663
33
+ LIDC-IDRI-0313/1.3.6.1.4.1.14519.5.2.1.6279.6001.272416900158314679872946504460/1.3.6.1.4.1.14519.5.2.1.6279.6001.123697637451437522065941162930
34
+ LIDC-IDRI-0900/1.3.6.1.4.1.14519.5.2.1.6279.6001.282560440087299355954880509248/1.3.6.1.4.1.14519.5.2.1.6279.6001.183056151780567460322586876100
35
+ LIDC-IDRI-0523/1.3.6.1.4.1.14519.5.2.1.6279.6001.271916801059080642953570118476/1.3.6.1.4.1.14519.5.2.1.6279.6001.212608679077007918190529579976
36
+ LIDC-IDRI-0293/1.3.6.1.4.1.14519.5.2.1.6279.6001.319937379258174690082873343101/1.3.6.1.4.1.14519.5.2.1.6279.6001.686193079844756926365065559979
37
+ LIDC-IDRI-0807/1.3.6.1.4.1.14519.5.2.1.6279.6001.180089742036563526934101223693/1.3.6.1.4.1.14519.5.2.1.6279.6001.213854687290736562463866711534
38
+ LIDC-IDRI-0553/1.3.6.1.4.1.14519.5.2.1.6279.6001.330311286390409730062500041756/1.3.6.1.4.1.14519.5.2.1.6279.6001.965620538050807352935663552285
39
+ LIDC-IDRI-0065/1.3.6.1.4.1.14519.5.2.1.6279.6001.107410301078591208486461903808/1.3.6.1.4.1.14519.5.2.1.6279.6001.163217526257871051722166468085
40
+ LIDC-IDRI-0613/1.3.6.1.4.1.14519.5.2.1.6279.6001.174771861434175096253509271253/1.3.6.1.4.1.14519.5.2.1.6279.6001.241570579760883349458693655367
41
+ LIDC-IDRI-0932/1.3.6.1.4.1.14519.5.2.1.6279.6001.931660023131522836511470299550/1.3.6.1.4.1.14519.5.2.1.6279.6001.334022941831199910030220864961
42
+ LIDC-IDRI-0199/1.3.6.1.4.1.14519.5.2.1.6279.6001.199795594928180609213453658461/1.3.6.1.4.1.14519.5.2.1.6279.6001.302557165094691896097534021075
43
+ LIDC-IDRI-0402/1.3.6.1.4.1.14519.5.2.1.6279.6001.156618458422978822822335971869/1.3.6.1.4.1.14519.5.2.1.6279.6001.169128136262002764211589185953
44
+ LIDC-IDRI-0323/1.3.6.1.4.1.14519.5.2.1.6279.6001.245332552721136420493204351294/1.3.6.1.4.1.14519.5.2.1.6279.6001.235381170872316280538332229850
45
+ LIDC-IDRI-0043/1.3.6.1.4.1.14519.5.2.1.6279.6001.119160670718020063800771208605/1.3.6.1.4.1.14519.5.2.1.6279.6001.503980049263254396021509831276
46
+ LIDC-IDRI-0235/1.3.6.1.4.1.14519.5.2.1.6279.6001.558678722336494515704990369281/1.3.6.1.4.1.14519.5.2.1.6279.6001.162718361851587451505896742103
47
+ LIDC-IDRI-0755/1.3.6.1.4.1.14519.5.2.1.6279.6001.760815306677938279995420893266/1.3.6.1.4.1.14519.5.2.1.6279.6001.310626494937915759224334597176
48
+ LIDC-IDRI-0079/1.3.6.1.4.1.14519.5.2.1.6279.6001.303921580531000844896433537490/1.3.6.1.4.1.14519.5.2.1.6279.6001.213233719488315954975724605159
49
+ LIDC-IDRI-0502/1.3.6.1.4.1.14519.5.2.1.6279.6001.246309121384607847712377186777/1.3.6.1.4.1.14519.5.2.1.6279.6001.259018373683540453277752706262
50
+ LIDC-IDRI-0211/1.3.6.1.4.1.14519.5.2.1.6279.6001.253735246078920128978742275635/1.3.6.1.4.1.14519.5.2.1.6279.6001.173931884906244951746140865701
51
+ LIDC-IDRI-0902/1.3.6.1.4.1.14519.5.2.1.6279.6001.579308169960338143353751288115/1.3.6.1.4.1.14519.5.2.1.6279.6001.275766318636944297772360944907
52
+ LIDC-IDRI-0824/1.3.6.1.4.1.14519.5.2.1.6279.6001.164217405113124054884377740544/1.3.6.1.4.1.14519.5.2.1.6279.6001.146603910507557786636779705509
53
+ LIDC-IDRI-0135/1.3.6.1.4.1.14519.5.2.1.6279.6001.180685600263085599637486877417/1.3.6.1.4.1.14519.5.2.1.6279.6001.294120933998772507043263238704
54
+ LIDC-IDRI-0165/1.3.6.1.4.1.14519.5.2.1.6279.6001.253123637959400428278268237946/1.3.6.1.4.1.14519.5.2.1.6279.6001.320967206808467952819309001585
55
+ LIDC-IDRI-0131/1.3.6.1.4.1.14519.5.2.1.6279.6001.178055839088630125000227320316/1.3.6.1.4.1.14519.5.2.1.6279.6001.975426625618184773401026809852
56
+ LIDC-IDRI-0100/1.3.6.1.4.1.14519.5.2.1.6279.6001.318037728418742799972533240731/1.3.6.1.4.1.14519.5.2.1.6279.6001.622243923620914676263059698181
57
+ LIDC-IDRI-0075/1.3.6.1.4.1.14519.5.2.1.6279.6001.106200285452190102759452314796/1.3.6.1.4.1.14519.5.2.1.6279.6001.177086402277715068525592995222
58
+ LIDC-IDRI-0889/1.3.6.1.4.1.14519.5.2.1.6279.6001.246689028753310058145348599313/1.3.6.1.4.1.14519.5.2.1.6279.6001.108193664222196923321844991231
59
+ LIDC-IDRI-0962/1.3.6.1.4.1.14519.5.2.1.6279.6001.163747591665714002593484708741/1.3.6.1.4.1.14519.5.2.1.6279.6001.110835886706944718242055570943
60
+ LIDC-IDRI-0622/1.3.6.1.4.1.14519.5.2.1.6279.6001.315615142127549025541860963743/1.3.6.1.4.1.14519.5.2.1.6279.6001.300271604576987336866436407488
61
+ LIDC-IDRI-0970/1.3.6.1.4.1.14519.5.2.1.6279.6001.216069436844269562687497322947/1.3.6.1.4.1.14519.5.2.1.6279.6001.145283812746259413053188838096
62
+ LIDC-IDRI-0689/1.3.6.1.4.1.14519.5.2.1.6279.6001.496491930918288198728143484533/1.3.6.1.4.1.14519.5.2.1.6279.6001.888615810685807330497715730842
63
+ LIDC-IDRI-0764/1.3.6.1.4.1.14519.5.2.1.6279.6001.244373570322096288150284305419/1.3.6.1.4.1.14519.5.2.1.6279.6001.596908385953413160131451426904
64
+ LIDC-IDRI-0575/1.3.6.1.4.1.14519.5.2.1.6279.6001.320868967976297780563487478878/1.3.6.1.4.1.14519.5.2.1.6279.6001.743969234977916254223533321294
65
+ LIDC-IDRI-0311/1.3.6.1.4.1.14519.5.2.1.6279.6001.256415982022395230813284649190/1.3.6.1.4.1.14519.5.2.1.6279.6001.177252583002664900748714851615
66
+ LIDC-IDRI-0070/1.3.6.1.4.1.14519.5.2.1.6279.6001.101493103577576219860121359500/1.3.6.1.4.1.14519.5.2.1.6279.6001.178391668569567816549737454720
67
+ LIDC-IDRI-0395/1.3.6.1.4.1.14519.5.2.1.6279.6001.618131472311494996047749006675/1.3.6.1.4.1.14519.5.2.1.6279.6001.276831325040358815613434606380
68
+ LIDC-IDRI-0443/1.3.6.1.4.1.14519.5.2.1.6279.6001.765963830187381205722436255156/1.3.6.1.4.1.14519.5.2.1.6279.6001.202464973819273687476049035824
69
+ LIDC-IDRI-0777/1.3.6.1.4.1.14519.5.2.1.6279.6001.226719444846209417020566423366/1.3.6.1.4.1.14519.5.2.1.6279.6001.192256506776434538421891524301
70
+ LIDC-IDRI-0018/1.3.6.1.4.1.14519.5.2.1.6279.6001.818004751275342069818453790263/1.3.6.1.4.1.14519.5.2.1.6279.6001.882070241245008756731854510592
71
+ LIDC-IDRI-0531/1.3.6.1.4.1.14519.5.2.1.6279.6001.117677112723692713709361521135/1.3.6.1.4.1.14519.5.2.1.6279.6001.203179378754043776171267611064
72
+ LIDC-IDRI-0377/1.3.6.1.4.1.14519.5.2.1.6279.6001.264393460861616413192668347002/1.3.6.1.4.1.14519.5.2.1.6279.6001.295462530340364058116953738925
73
+ LIDC-IDRI-0032/1.3.6.1.4.1.14519.5.2.1.6279.6001.188500211166440175211144953482/1.3.6.1.4.1.14519.5.2.1.6279.6001.803808126682275425758092691689
74
+ LIDC-IDRI-0210/1.3.6.1.4.1.14519.5.2.1.6279.6001.304088547901303960997044129270/1.3.6.1.4.1.14519.5.2.1.6279.6001.193808128386712859512130599234
75
+ LIDC-IDRI-0737/1.3.6.1.4.1.14519.5.2.1.6279.6001.245530495041322714988642038927/1.3.6.1.4.1.14519.5.2.1.6279.6001.224845111941302943990256315343
76
+ LIDC-IDRI-0771/1.3.6.1.4.1.14519.5.2.1.6279.6001.721161755719965069770622927051/1.3.6.1.4.1.14519.5.2.1.6279.6001.141069661700670042960678408762
77
+ LIDC-IDRI-0926/1.3.6.1.4.1.14519.5.2.1.6279.6001.186165274648953680758061039841/1.3.6.1.4.1.14519.5.2.1.6279.6001.170765551637157813497344006818
78
+ LIDC-IDRI-0013/1.3.6.1.4.1.14519.5.2.1.6279.6001.331662654015358587276208254750/1.3.6.1.4.1.14519.5.2.1.6279.6001.174907798609768549012640380786
79
+ LIDC-IDRI-0168/1.3.6.1.4.1.14519.5.2.1.6279.6001.155422883755338970256390193392/1.3.6.1.4.1.14519.5.2.1.6279.6001.295298571102631191572192562523
80
+ LIDC-IDRI-0071/1.3.6.1.4.1.14519.5.2.1.6279.6001.194873495479991751098187519883/1.3.6.1.4.1.14519.5.2.1.6279.6001.290410217650314119074833254861
81
+ LIDC-IDRI-0444/1.3.6.1.4.1.14519.5.2.1.6279.6001.329613415894061309409362825998/1.3.6.1.4.1.14519.5.2.1.6279.6001.335866409407244673864352309754
82
+ LIDC-IDRI-0677/1.3.6.1.4.1.14519.5.2.1.6279.6001.637798773907788996937534925551/1.3.6.1.4.1.14519.5.2.1.6279.6001.814122498113547115932318256859
83
+ LIDC-IDRI-0290/1.3.6.1.4.1.14519.5.2.1.6279.6001.952440288393343800284327753087/1.3.6.1.4.1.14519.5.2.1.6279.6001.340012777775661021262977442176
84
+ LIDC-IDRI-0218/1.3.6.1.4.1.14519.5.2.1.6279.6001.193060940991432251540234479399/1.3.6.1.4.1.14519.5.2.1.6279.6001.172845185165807139298420209778
85
+ LIDC-IDRI-0690/1.3.6.1.4.1.14519.5.2.1.6279.6001.243265164379948694363428442147/1.3.6.1.4.1.14519.5.2.1.6279.6001.153181766344026020914478182395
86
+ LIDC-IDRI-0037/1.3.6.1.4.1.14519.5.2.1.6279.6001.250770014904528873190814943829/1.3.6.1.4.1.14519.5.2.1.6279.6001.219909753224298157409438012179
87
+ LIDC-IDRI-0838/1.3.6.1.4.1.14519.5.2.1.6279.6001.153879314331255637907074508526/1.3.6.1.4.1.14519.5.2.1.6279.6001.225227615446398900698431118292
88
+ LIDC-IDRI-0908/1.3.6.1.4.1.14519.5.2.1.6279.6001.144067942028925306269987156361/1.3.6.1.4.1.14519.5.2.1.6279.6001.265960756233787099041040311282
89
+ LIDC-IDRI-0544/1.3.6.1.4.1.14519.5.2.1.6279.6001.268602395458796193334776892547/1.3.6.1.4.1.14519.5.2.1.6279.6001.230078008964732806419498631442
90
+ LIDC-IDRI-0760/1.3.6.1.4.1.14519.5.2.1.6279.6001.390772419716078897913409775988/1.3.6.1.4.1.14519.5.2.1.6279.6001.111017101339429664883879536171
91
+ LIDC-IDRI-0343/1.3.6.1.4.1.14519.5.2.1.6279.6001.225952820864846070881460157728/1.3.6.1.4.1.14519.5.2.1.6279.6001.160124400349792614505500125883
92
+ LIDC-IDRI-0054/1.3.6.1.4.1.14519.5.2.1.6279.6001.244560540649171231768816505483/1.3.6.1.4.1.14519.5.2.1.6279.6001.174449669706458092793093760291
93
+ LIDC-IDRI-0426/1.3.6.1.4.1.14519.5.2.1.6279.6001.279815994089337890330418719400/1.3.6.1.4.1.14519.5.2.1.6279.6001.118924792893665851774878880764
94
+ LIDC-IDRI-0178/1.3.6.1.4.1.14519.5.2.1.6279.6001.218441204865582835284481030822/1.3.6.1.4.1.14519.5.2.1.6279.6001.140527383975300992150799777603
95
+ LIDC-IDRI-0282/1.3.6.1.4.1.14519.5.2.1.6279.6001.149109655051916227035843294920/1.3.6.1.4.1.14519.5.2.1.6279.6001.257840703452266097926250569223
96
+ LIDC-IDRI-0439/1.3.6.1.4.1.14519.5.2.1.6279.6001.226088449233409636933226805676/1.3.6.1.4.1.14519.5.2.1.6279.6001.300724599751226863091983308838
97
+ LIDC-IDRI-0599/1.3.6.1.4.1.14519.5.2.1.6279.6001.254284452408440744726985192393/1.3.6.1.4.1.14519.5.2.1.6279.6001.139444426690868429919252698606
98
+ LIDC-IDRI-0345/1.3.6.1.4.1.14519.5.2.1.6279.6001.311849240521371267537044867782/1.3.6.1.4.1.14519.5.2.1.6279.6001.387954549120924524005910602207
99
+ LIDC-IDRI-0363/1.3.6.1.4.1.14519.5.2.1.6279.6001.181593981812293966599842811096/1.3.6.1.4.1.14519.5.2.1.6279.6001.184412674007117333405073397832
100
+ LIDC-IDRI-0482/1.3.6.1.4.1.14519.5.2.1.6279.6001.189430712542278422214701249585/1.3.6.1.4.1.14519.5.2.1.6279.6001.319009811633846643966578282371
101
+ LIDC-IDRI-0102/1.3.6.1.4.1.14519.5.2.1.6279.6001.144098736774350495825430776051/1.3.6.1.4.1.14519.5.2.1.6279.6001.234400932423244218697302970157
102
+ LIDC-IDRI-0295/1.3.6.1.4.1.14519.5.2.1.6279.6001.184813778824165059499766817473/1.3.6.1.4.1.14519.5.2.1.6279.6001.300693623747082239407271583452
103
+ LIDC-IDRI-0019/1.3.6.1.4.1.14519.5.2.1.6279.6001.192544770425703459348950670623/1.3.6.1.4.1.14519.5.2.1.6279.6001.330425234131526435132846006585
104
+ LIDC-IDRI-0732/1.3.6.1.4.1.14519.5.2.1.6279.6001.298180121619674780553933016732/1.3.6.1.4.1.14519.5.2.1.6279.6001.244681063194071446501270815660
105
+ LIDC-IDRI-0800/1.3.6.1.4.1.14519.5.2.1.6279.6001.133142523452166818708847170969/1.3.6.1.4.1.14519.5.2.1.6279.6001.450501966058662668272378865145
106
+ LIDC-IDRI-0740/1.3.6.1.4.1.14519.5.2.1.6279.6001.516865813624724440843920586986/1.3.6.1.4.1.14519.5.2.1.6279.6001.233001470265230594739708503198
107
+ LIDC-IDRI-0997/1.3.6.1.4.1.14519.5.2.1.6279.6001.106068656437895419353734796481/1.3.6.1.4.1.14519.5.2.1.6279.6001.803987517543436570820681016103
108
+ LIDC-IDRI-0768/1.3.6.1.4.1.14519.5.2.1.6279.6001.276145303905683401700212326794/1.3.6.1.4.1.14519.5.2.1.6279.6001.194440094986948071643661798326
109
+ LIDC-IDRI-0874/1.3.6.1.4.1.14519.5.2.1.6279.6001.201981314170126152586920703158/1.3.6.1.4.1.14519.5.2.1.6279.6001.115386642382564804180764325545
110
+ LIDC-IDRI-0158/1.3.6.1.4.1.14519.5.2.1.6279.6001.107117680739311641559517949056/1.3.6.1.4.1.14519.5.2.1.6279.6001.244204120220889433826451158706
111
+ LIDC-IDRI-0616/1.3.6.1.4.1.14519.5.2.1.6279.6001.115280343269128534820068558233/1.3.6.1.4.1.14519.5.2.1.6279.6001.229171189693734694696158152904
112
+ LIDC-IDRI-0379/1.3.6.1.4.1.14519.5.2.1.6279.6001.190045142764457963256735097041/1.3.6.1.4.1.14519.5.2.1.6279.6001.620476670380256054392660616754
113
+ LIDC-IDRI-0846/1.3.6.1.4.1.14519.5.2.1.6279.6001.267354935124724968585540389507/1.3.6.1.4.1.14519.5.2.1.6279.6001.674809958213117379592437424616
114
+ LIDC-IDRI-0547/1.3.6.1.4.1.14519.5.2.1.6279.6001.139007379520761595657549251638/1.3.6.1.4.1.14519.5.2.1.6279.6001.725236073737175770730904408416
115
+ LIDC-IDRI-0266/1.3.6.1.4.1.14519.5.2.1.6279.6001.318387528257740161829281579408/1.3.6.1.4.1.14519.5.2.1.6279.6001.341557859428950960906150406596
116
+ LIDC-IDRI-0998/1.3.6.1.4.1.14519.5.2.1.6279.6001.214802309639542154012576451584/1.3.6.1.4.1.14519.5.2.1.6279.6001.120301525825493211649827266081
117
+ LIDC-IDRI-0240/1.3.6.1.4.1.14519.5.2.1.6279.6001.147379540710364690031394735651/1.3.6.1.4.1.14519.5.2.1.6279.6001.187451715205085403623595258748
118
+ LIDC-IDRI-0518/1.3.6.1.4.1.14519.5.2.1.6279.6001.253018306736883838620886843861/1.3.6.1.4.1.14519.5.2.1.6279.6001.501205984478455794251416553685
119
+ LIDC-IDRI-0150/1.3.6.1.4.1.14519.5.2.1.6279.6001.249778071616205114955151949358/1.3.6.1.4.1.14519.5.2.1.6279.6001.400871509992541458184881866614
120
+ LIDC-IDRI-0321/1.3.6.1.4.1.14519.5.2.1.6279.6001.995561512722026805270815340218/1.3.6.1.4.1.14519.5.2.1.6279.6001.231002159523969307155990628066
121
+ LIDC-IDRI-0657/1.3.6.1.4.1.14519.5.2.1.6279.6001.139195294068636036088709372879/1.3.6.1.4.1.14519.5.2.1.6279.6001.113586291551175790743673929831
122
+ LIDC-IDRI-0048/1.3.6.1.4.1.14519.5.2.1.6279.6001.208177797605474151106520124306/1.3.6.1.4.1.14519.5.2.1.6279.6001.250863365157630276148828903732
123
+ LIDC-IDRI-0638/1.3.6.1.4.1.14519.5.2.1.6279.6001.508213936241272779545636798976/1.3.6.1.4.1.14519.5.2.1.6279.6001.133132722052053001903031735878
124
+ LIDC-IDRI-0374/1.3.6.1.4.1.14519.5.2.1.6279.6001.288142673190348607009892502290/1.3.6.1.4.1.14519.5.2.1.6279.6001.231645134739451754302647733304
125
+ LIDC-IDRI-0513/1.3.6.1.4.1.14519.5.2.1.6279.6001.139336671328588936769008918609/1.3.6.1.4.1.14519.5.2.1.6279.6001.109882169963817627559804568094
126
+ LIDC-IDRI-0918/1.3.6.1.4.1.14519.5.2.1.6279.6001.285544678683551057709080736846/1.3.6.1.4.1.14519.5.2.1.6279.6001.186021279664749879526003668137
127
+ LIDC-IDRI-0278/1.3.6.1.4.1.14519.5.2.1.6279.6001.314166198948235683770741486536/1.3.6.1.4.1.14519.5.2.1.6279.6001.106379658920626694402549886949
128
+ LIDC-IDRI-0310/1.3.6.1.4.1.14519.5.2.1.6279.6001.514061889253028999256401521179/1.3.6.1.4.1.14519.5.2.1.6279.6001.136756942516460150151065708673
129
+ LIDC-IDRI-0327/1.3.6.1.4.1.14519.5.2.1.6279.6001.301171277391758789763526477213/1.3.6.1.4.1.14519.5.2.1.6279.6001.229664630348267553620068691756
130
+ LIDC-IDRI-0250/1.3.6.1.4.1.14519.5.2.1.6279.6001.145271800733926000322166019837/1.3.6.1.4.1.14519.5.2.1.6279.6001.230491296081537726468075344411
131
+ LIDC-IDRI-0577/1.3.6.1.4.1.14519.5.2.1.6279.6001.322524653283033873625769278172/1.3.6.1.4.1.14519.5.2.1.6279.6001.323132750133803288886848693067
132
+ LIDC-IDRI-0349/1.3.6.1.4.1.14519.5.2.1.6279.6001.288600044561367666308581395376/1.3.6.1.4.1.14519.5.2.1.6279.6001.296066944953051278419805374238
133
+ LIDC-IDRI-0088/1.3.6.1.4.1.14519.5.2.1.6279.6001.236722533610330821341378792527/1.3.6.1.4.1.14519.5.2.1.6279.6001.113679818447732724990336702075
134
+ LIDC-IDRI-0936/1.3.6.1.4.1.14519.5.2.1.6279.6001.278388415999131655907385534718/1.3.6.1.4.1.14519.5.2.1.6279.6001.296738183013079390785739615169
135
+ LIDC-IDRI-0021/1.3.6.1.4.1.14519.5.2.1.6279.6001.165741627456266454825445080793/1.3.6.1.4.1.14519.5.2.1.6279.6001.188265424231150847356515802868
136
+ LIDC-IDRI-0534/1.3.6.1.4.1.14519.5.2.1.6279.6001.321085339464682432111441689315/1.3.6.1.4.1.14519.5.2.1.6279.6001.255233548387770235844350895151
137
+ LIDC-IDRI-0662/1.3.6.1.4.1.14519.5.2.1.6279.6001.998144378008088787705870980497/1.3.6.1.4.1.14519.5.2.1.6279.6001.226564372605239604660221582288
138
+ LIDC-IDRI-0113/1.3.6.1.4.1.14519.5.2.1.6279.6001.313935464622070730633776692194/1.3.6.1.4.1.14519.5.2.1.6279.6001.336225579776978874775723463327
139
+ LIDC-IDRI-0865/1.3.6.1.4.1.14519.5.2.1.6279.6001.250807847445096579567542381073/1.3.6.1.4.1.14519.5.2.1.6279.6001.655242448149322898770987310561
140
+ LIDC-IDRI-0408/1.3.6.1.4.1.14519.5.2.1.6279.6001.202128825827009854792580489975/1.3.6.1.4.1.14519.5.2.1.6279.6001.205523326998654833765855998037
141
+ LIDC-IDRI-0425/1.3.6.1.4.1.14519.5.2.1.6279.6001.324010126067181018301854747805/1.3.6.1.4.1.14519.5.2.1.6279.6001.314519596680450457855054746285
142
+ LIDC-IDRI-0213/1.3.6.1.4.1.14519.5.2.1.6279.6001.280531413986295071283803322793/1.3.6.1.4.1.14519.5.2.1.6279.6001.200841000324240313648595016964
143
+ LIDC-IDRI-0586/1.3.6.1.4.1.14519.5.2.1.6279.6001.100036212881370097961774473021/1.3.6.1.4.1.14519.5.2.1.6279.6001.130765375502800983459674173881
144
+ LIDC-IDRI-0713/1.3.6.1.4.1.14519.5.2.1.6279.6001.694111741408084165729604375833/1.3.6.1.4.1.14519.5.2.1.6279.6001.205113715251629496479289015582
145
+ LIDC-IDRI-0101/1.3.6.1.4.1.14519.5.2.1.6279.6001.584233139051825667176600857752/1.3.6.1.4.1.14519.5.2.1.6279.6001.340202188094259402036602717327
146
+ LIDC-IDRI-0988/1.3.6.1.4.1.14519.5.2.1.6279.6001.127337418291965622570751117460/1.3.6.1.4.1.14519.5.2.1.6279.6001.250438451287314206124484591986
147
+ LIDC-IDRI-0517/1.3.6.1.4.1.14519.5.2.1.6279.6001.849666522017598388280673804221/1.3.6.1.4.1.14519.5.2.1.6279.6001.202476538079060560282495099956
148
+ LIDC-IDRI-0767/1.3.6.1.4.1.14519.5.2.1.6279.6001.733596311057474916459070445858/1.3.6.1.4.1.14519.5.2.1.6279.6001.332453873575389860371315979768
data/splits/msd_lung/test.txt ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ lung_005
2
+ lung_016
3
+ lung_022
4
+ lung_023
5
+ lung_027
6
+ lung_028
7
+ lung_041
8
+ lung_051
9
+ lung_059
10
+ lung_071
11
+ lung_073
12
+ lung_081
13
+ lung_093
data/splits/msd_lung/train.txt ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ lung_003
2
+ lung_004
3
+ lung_006
4
+ lung_010
5
+ lung_014
6
+ lung_015
7
+ lung_018
8
+ lung_020
9
+ lung_025
10
+ lung_026
11
+ lung_029
12
+ lung_031
13
+ lung_033
14
+ lung_034
15
+ lung_036
16
+ lung_037
17
+ lung_038
18
+ lung_042
19
+ lung_043
20
+ lung_044
21
+ lung_045
22
+ lung_046
23
+ lung_047
24
+ lung_048
25
+ lung_049
26
+ lung_053
27
+ lung_055
28
+ lung_057
29
+ lung_058
30
+ lung_061
31
+ lung_062
32
+ lung_065
33
+ lung_066
34
+ lung_069
35
+ lung_070
36
+ lung_074
37
+ lung_075
38
+ lung_078
39
+ lung_079
40
+ lung_080
41
+ lung_083
42
+ lung_086
43
+ lung_092
44
+ lung_096
data/splits/msd_lung/val.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ lung_001
2
+ lung_009
3
+ lung_054
4
+ lung_064
5
+ lung_084
6
+ lung_095
data/splits/nsclc_radiomics/test.txt ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LUNG1-001
2
+ LUNG1-004
3
+ LUNG1-006
4
+ LUNG1-008
5
+ LUNG1-016
6
+ LUNG1-017
7
+ LUNG1-018
8
+ LUNG1-019
9
+ LUNG1-020
10
+ LUNG1-023
11
+ LUNG1-025
12
+ LUNG1-026
13
+ LUNG1-027
14
+ LUNG1-032
15
+ LUNG1-034
16
+ LUNG1-044
17
+ LUNG1-047
18
+ LUNG1-048
19
+ LUNG1-059
20
+ LUNG1-062
21
+ LUNG1-065
22
+ LUNG1-068
23
+ LUNG1-079
24
+ LUNG1-080
25
+ LUNG1-084
26
+ LUNG1-086
27
+ LUNG1-095
28
+ LUNG1-103
29
+ LUNG1-106
30
+ LUNG1-110
31
+ LUNG1-112
32
+ LUNG1-115
33
+ LUNG1-126
34
+ LUNG1-129
35
+ LUNG1-134
36
+ LUNG1-151
37
+ LUNG1-156
38
+ LUNG1-157
39
+ LUNG1-175
40
+ LUNG1-176
41
+ LUNG1-202
42
+ LUNG1-206
43
+ LUNG1-207
44
+ LUNG1-213
45
+ LUNG1-249
46
+ LUNG1-251
47
+ LUNG1-268
48
+ LUNG1-269
49
+ LUNG1-275
50
+ LUNG1-280
51
+ LUNG1-281
52
+ LUNG1-283
53
+ LUNG1-284
54
+ LUNG1-287
55
+ LUNG1-292
56
+ LUNG1-297
57
+ LUNG1-299
58
+ LUNG1-305
59
+ LUNG1-314
60
+ LUNG1-315
61
+ LUNG1-320
62
+ LUNG1-326
63
+ LUNG1-336
64
+ LUNG1-349
65
+ LUNG1-359
66
+ LUNG1-361
67
+ LUNG1-364
68
+ LUNG1-365
69
+ LUNG1-369
70
+ LUNG1-370
71
+ LUNG1-373
72
+ LUNG1-374
73
+ LUNG1-378
74
+ LUNG1-382
75
+ LUNG1-385
76
+ LUNG1-391
77
+ LUNG1-394
78
+ LUNG1-396
79
+ LUNG1-402
80
+ LUNG1-405
81
+ LUNG1-409
82
+ LUNG1-411
83
+ LUNG1-414
84
+ LUNG1-418
data/splits/nsclc_radiomics/train.txt ADDED
@@ -0,0 +1,294 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LUNG1-002
2
+ LUNG1-003
3
+ LUNG1-005
4
+ LUNG1-007
5
+ LUNG1-009
6
+ LUNG1-011
7
+ LUNG1-012
8
+ LUNG1-013
9
+ LUNG1-014
10
+ LUNG1-015
11
+ LUNG1-021
12
+ LUNG1-022
13
+ LUNG1-024
14
+ LUNG1-028
15
+ LUNG1-029
16
+ LUNG1-030
17
+ LUNG1-033
18
+ LUNG1-036
19
+ LUNG1-037
20
+ LUNG1-038
21
+ LUNG1-039
22
+ LUNG1-040
23
+ LUNG1-042
24
+ LUNG1-043
25
+ LUNG1-045
26
+ LUNG1-046
27
+ LUNG1-049
28
+ LUNG1-050
29
+ LUNG1-051
30
+ LUNG1-052
31
+ LUNG1-053
32
+ LUNG1-054
33
+ LUNG1-055
34
+ LUNG1-056
35
+ LUNG1-060
36
+ LUNG1-061
37
+ LUNG1-063
38
+ LUNG1-064
39
+ LUNG1-066
40
+ LUNG1-067
41
+ LUNG1-069
42
+ LUNG1-070
43
+ LUNG1-071
44
+ LUNG1-073
45
+ LUNG1-076
46
+ LUNG1-082
47
+ LUNG1-083
48
+ LUNG1-085
49
+ LUNG1-087
50
+ LUNG1-088
51
+ LUNG1-089
52
+ LUNG1-090
53
+ LUNG1-091
54
+ LUNG1-093
55
+ LUNG1-094
56
+ LUNG1-097
57
+ LUNG1-098
58
+ LUNG1-099
59
+ LUNG1-100
60
+ LUNG1-101
61
+ LUNG1-102
62
+ LUNG1-104
63
+ LUNG1-105
64
+ LUNG1-107
65
+ LUNG1-108
66
+ LUNG1-109
67
+ LUNG1-111
68
+ LUNG1-113
69
+ LUNG1-114
70
+ LUNG1-116
71
+ LUNG1-117
72
+ LUNG1-119
73
+ LUNG1-120
74
+ LUNG1-121
75
+ LUNG1-122
76
+ LUNG1-123
77
+ LUNG1-124
78
+ LUNG1-125
79
+ LUNG1-127
80
+ LUNG1-130
81
+ LUNG1-131
82
+ LUNG1-132
83
+ LUNG1-133
84
+ LUNG1-136
85
+ LUNG1-137
86
+ LUNG1-138
87
+ LUNG1-139
88
+ LUNG1-141
89
+ LUNG1-142
90
+ LUNG1-143
91
+ LUNG1-144
92
+ LUNG1-145
93
+ LUNG1-146
94
+ LUNG1-147
95
+ LUNG1-149
96
+ LUNG1-150
97
+ LUNG1-152
98
+ LUNG1-153
99
+ LUNG1-154
100
+ LUNG1-155
101
+ LUNG1-158
102
+ LUNG1-159
103
+ LUNG1-160
104
+ LUNG1-161
105
+ LUNG1-162
106
+ LUNG1-163
107
+ LUNG1-164
108
+ LUNG1-165
109
+ LUNG1-166
110
+ LUNG1-167
111
+ LUNG1-168
112
+ LUNG1-169
113
+ LUNG1-170
114
+ LUNG1-172
115
+ LUNG1-173
116
+ LUNG1-174
117
+ LUNG1-177
118
+ LUNG1-179
119
+ LUNG1-180
120
+ LUNG1-181
121
+ LUNG1-182
122
+ LUNG1-183
123
+ LUNG1-184
124
+ LUNG1-185
125
+ LUNG1-186
126
+ LUNG1-188
127
+ LUNG1-189
128
+ LUNG1-190
129
+ LUNG1-191
130
+ LUNG1-192
131
+ LUNG1-193
132
+ LUNG1-194
133
+ LUNG1-196
134
+ LUNG1-198
135
+ LUNG1-200
136
+ LUNG1-201
137
+ LUNG1-203
138
+ LUNG1-204
139
+ LUNG1-205
140
+ LUNG1-208
141
+ LUNG1-209
142
+ LUNG1-210
143
+ LUNG1-212
144
+ LUNG1-214
145
+ LUNG1-215
146
+ LUNG1-216
147
+ LUNG1-217
148
+ LUNG1-218
149
+ LUNG1-219
150
+ LUNG1-220
151
+ LUNG1-222
152
+ LUNG1-223
153
+ LUNG1-224
154
+ LUNG1-225
155
+ LUNG1-226
156
+ LUNG1-227
157
+ LUNG1-228
158
+ LUNG1-229
159
+ LUNG1-230
160
+ LUNG1-232
161
+ LUNG1-233
162
+ LUNG1-235
163
+ LUNG1-236
164
+ LUNG1-237
165
+ LUNG1-238
166
+ LUNG1-239
167
+ LUNG1-240
168
+ LUNG1-241
169
+ LUNG1-243
170
+ LUNG1-244
171
+ LUNG1-245
172
+ LUNG1-246
173
+ LUNG1-247
174
+ LUNG1-248
175
+ LUNG1-252
176
+ LUNG1-253
177
+ LUNG1-254
178
+ LUNG1-255
179
+ LUNG1-256
180
+ LUNG1-257
181
+ LUNG1-258
182
+ LUNG1-259
183
+ LUNG1-260
184
+ LUNG1-261
185
+ LUNG1-262
186
+ LUNG1-263
187
+ LUNG1-264
188
+ LUNG1-266
189
+ LUNG1-267
190
+ LUNG1-270
191
+ LUNG1-271
192
+ LUNG1-272
193
+ LUNG1-273
194
+ LUNG1-276
195
+ LUNG1-277
196
+ LUNG1-278
197
+ LUNG1-279
198
+ LUNG1-282
199
+ LUNG1-285
200
+ LUNG1-286
201
+ LUNG1-288
202
+ LUNG1-289
203
+ LUNG1-290
204
+ LUNG1-291
205
+ LUNG1-293
206
+ LUNG1-294
207
+ LUNG1-295
208
+ LUNG1-296
209
+ LUNG1-298
210
+ LUNG1-301
211
+ LUNG1-302
212
+ LUNG1-303
213
+ LUNG1-304
214
+ LUNG1-306
215
+ LUNG1-307
216
+ LUNG1-308
217
+ LUNG1-309
218
+ LUNG1-310
219
+ LUNG1-311
220
+ LUNG1-312
221
+ LUNG1-313
222
+ LUNG1-316
223
+ LUNG1-317
224
+ LUNG1-318
225
+ LUNG1-319
226
+ LUNG1-321
227
+ LUNG1-322
228
+ LUNG1-323
229
+ LUNG1-324
230
+ LUNG1-325
231
+ LUNG1-327
232
+ LUNG1-328
233
+ LUNG1-330
234
+ LUNG1-331
235
+ LUNG1-333
236
+ LUNG1-334
237
+ LUNG1-335
238
+ LUNG1-338
239
+ LUNG1-339
240
+ LUNG1-341
241
+ LUNG1-342
242
+ LUNG1-343
243
+ LUNG1-344
244
+ LUNG1-345
245
+ LUNG1-346
246
+ LUNG1-347
247
+ LUNG1-348
248
+ LUNG1-351
249
+ LUNG1-352
250
+ LUNG1-353
251
+ LUNG1-354
252
+ LUNG1-355
253
+ LUNG1-357
254
+ LUNG1-358
255
+ LUNG1-360
256
+ LUNG1-362
257
+ LUNG1-363
258
+ LUNG1-366
259
+ LUNG1-367
260
+ LUNG1-368
261
+ LUNG1-375
262
+ LUNG1-376
263
+ LUNG1-377
264
+ LUNG1-379
265
+ LUNG1-380
266
+ LUNG1-381
267
+ LUNG1-383
268
+ LUNG1-384
269
+ LUNG1-386
270
+ LUNG1-387
271
+ LUNG1-388
272
+ LUNG1-389
273
+ LUNG1-390
274
+ LUNG1-392
275
+ LUNG1-393
276
+ LUNG1-395
277
+ LUNG1-397
278
+ LUNG1-398
279
+ LUNG1-399
280
+ LUNG1-400
281
+ LUNG1-401
282
+ LUNG1-403
283
+ LUNG1-404
284
+ LUNG1-406
285
+ LUNG1-407
286
+ LUNG1-408
287
+ LUNG1-410
288
+ LUNG1-412
289
+ LUNG1-413
290
+ LUNG1-416
291
+ LUNG1-417
292
+ LUNG1-420
293
+ LUNG1-421
294
+ LUNG1-422
data/splits/nsclc_radiomics/val.txt ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ LUNG1-010
2
+ LUNG1-031
3
+ LUNG1-041
4
+ LUNG1-057
5
+ LUNG1-058
6
+ LUNG1-072
7
+ LUNG1-074
8
+ LUNG1-075
9
+ LUNG1-077
10
+ LUNG1-078
11
+ LUNG1-081
12
+ LUNG1-092
13
+ LUNG1-096
14
+ LUNG1-118
15
+ LUNG1-135
16
+ LUNG1-140
17
+ LUNG1-148
18
+ LUNG1-171
19
+ LUNG1-178
20
+ LUNG1-187
21
+ LUNG1-195
22
+ LUNG1-197
23
+ LUNG1-199
24
+ LUNG1-211
25
+ LUNG1-221
26
+ LUNG1-231
27
+ LUNG1-234
28
+ LUNG1-242
29
+ LUNG1-250
30
+ LUNG1-265
31
+ LUNG1-274
32
+ LUNG1-300
33
+ LUNG1-329
34
+ LUNG1-332
35
+ LUNG1-337
36
+ LUNG1-340
37
+ LUNG1-350
38
+ LUNG1-356
39
+ LUNG1-371
40
+ LUNG1-372
41
+ LUNG1-415
42
+ LUNG1-419
data/splits/rsna_pe/test.txt ADDED
@@ -0,0 +1,1060 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ c28f3d01b14f/7d17c72fd0ce
2
+ c8fbf1e08ac5/275497911f02
3
+ c04645a2c8b3/86cd87aed82f
4
+ 045a692f7143/de09eb5de208
5
+ 8e562155acb2/90405c602301
6
+ 7b7d8152fb36/e19c6954d1fa
7
+ 342bb8369d0d/c53b10b9818a
8
+ 7d45093fbedb/cc83769bea32
9
+ dcf730d0849e/7f0a70f4d776
10
+ ccfa625b668c/3e1ab06b4da4
11
+ d1a28b54e201/9a09faee70c5
12
+ 846a02873152/132a3e027491
13
+ 626a5f7ca695/4063863596ff
14
+ 4b2bca37dd8d/9afda9b6efde
15
+ 9af6ecd6a949/6370f1878dcc
16
+ c8216be82491/2a87a845bbd0
17
+ 5207ea64bfae/cd1880921825
18
+ 28be582e394b/8679ce988cf7
19
+ e3b256467eca/40979883ce51
20
+ c281eca04485/63b3051f8064
21
+ 9a33aea77cd0/363a4cdf6078
22
+ 0e86a0d09110/00b88d1ab7df
23
+ 9fceddad0c22/5fe37042aeef
24
+ 61d86c1dea3b/a6ad31c09734
25
+ 43cf44be6c83/933539486412
26
+ 31d45aef2660/d1e5b9a83182
27
+ 89cbdb791b95/7bb2dfb731d8
28
+ 6866d7046e21/a3ab9481503e
29
+ 79c2cce72c7c/2d35649f8566
30
+ ce2c0d1b935f/361674f7814c
31
+ 137939b0ef61/3d3d027c8458
32
+ 5d5ca775a78a/28fb3c5399f5
33
+ 16bdfb58e8bc/4b274d1673eb
34
+ c304a7b5ba11/57ebd004812c
35
+ 01796cd8f2cd/9cfdde6c6987
36
+ bed6309efd9c/bc9d80d6465c
37
+ 66fdaaf58411/fc281d10b0ac
38
+ a04f318e9972/6543eb357a5e
39
+ 2e0bd039b5b7/8d6317856dc4
40
+ 2c55ab4208e7/5a88757bc338
41
+ b11069ee2edc/234194487423
42
+ 1cdfc1f4a361/8aa7be285f03
43
+ 02aca64c04a9/ec4e2e757b0c
44
+ ab258d6f29fa/1ddb57d522f6
45
+ 9eb3957fea06/dd3d275e553b
46
+ af75f0c70d47/e217163d5c77
47
+ 66dc6bf4fb34/a7ef380f88ec
48
+ 7c8cd92e95a1/4944c658b972
49
+ 8f03763c075d/fe75153fda05
50
+ e6b7dcf7ba6a/07bae124b876
51
+ 11d79469b0a7/ec773d9c1e49
52
+ 08593ebb71c0/03a45c4f1b62
53
+ 35edbc3dd723/e3044cab184b
54
+ 60bc0d5537da/9835779f9b59
55
+ 68467eb971ed/c0e8eab353ab
56
+ 72570ed4f11b/295a7f87f90d
57
+ 0e6d4ce846f0/c85917886eb3
58
+ c3444ab3fd95/7f686692e721
59
+ 641b92741d91/567d356b2dbc
60
+ 80fa9469f822/a26656d6b726
61
+ 70a9d4697544/2c03f432fe00
62
+ 8eb9436eb1d3/6410211659b0
63
+ d63062d7b008/4bd21f60391f
64
+ a2ec221c4a45/b28f7a622453
65
+ f973ca8f115e/5a6eefec0112
66
+ e5de2a410783/0f09c8dcf100
67
+ cd3c74b021ca/6fce07cfd3e2
68
+ 70e13ce738a5/673dcda7ceef
69
+ b6e2140114de/ccf4c0690f9a
70
+ 16c727d8e944/ecb5af44bae7
71
+ 8044be3b73ac/d3cb4e2963be
72
+ 69d8cd20d746/09bacf72df50
73
+ 84b8ac0519c2/c29b953ed7b6
74
+ 29a33d6eb620/74530d395fa9
75
+ 2590e43a14cb/0835f188afce
76
+ 19cc83ced61d/2bb9cdd02ad8
77
+ 0e8d3041d4f4/582477b968f9
78
+ ce7b3c57aced/12b5b351c726
79
+ a92b0916c359/3ddf7a9dfeb0
80
+ baa23ea7f9c3/ffcfb2c00799
81
+ 5874fab6cba1/3314c7d679af
82
+ ea58e786bbd8/eb96c5d2d99f
83
+ 816527f6f3f2/a336bbb91c69
84
+ 06e70cd10c06/70babc852388
85
+ 4a77b40bcc6d/9ab004fc6d9f
86
+ f566e2667875/d13951491da5
87
+ 1a04526b9a07/0d84b58410d9
88
+ 2f7adb40cea2/dfbe52ef9371
89
+ 1a6e7cc9b408/429b86a79edd
90
+ f374a5907536/fc97f8fb9a8b
91
+ 6aa4b1d15d11/60012ae7cc0e
92
+ a1f470acbe86/ba9d5dc1ad05
93
+ 92447e6d9e20/a24390686a01
94
+ 132fb66536a9/f1cf78063731
95
+ bebf55e2b748/7d42eb832a66
96
+ 6c610b729b75/3c5c2f720796
97
+ b98caff1a761/ab25ba0e9244
98
+ 0d0cb1121d9b/38ff628d769c
99
+ 9d5ae56b0c56/0af6615830bb
100
+ 72749eccb697/79f5bb5de8ad
101
+ 962452ae9809/a7cdd4d2c946
102
+ 44599a900366/cd29cc3e0345
103
+ f3a692c30117/50df2cfc8171
104
+ cfa66351ee74/74cdc35d1071
105
+ ff98e871bdea/812ca0683d0c
106
+ b2c915a37745/5f69f83a2f8b
107
+ 8c217452a40b/93475d9d44ca
108
+ 29df7a88e60a/38895e440e37
109
+ 12fa7859eb92/854af9bbd4be
110
+ 9779eca3c3bd/58537e14f293
111
+ bab2d48b501d/e4f737b7d65f
112
+ 4e071da9895f/da55ea0cc1fb
113
+ eac70c27f5dc/df39e024184f
114
+ 57a8f1286d38/52e2a1a1f51e
115
+ ded710ecec5f/cc873a6cd7ad
116
+ 8499d0b009d0/d00e5fedc292
117
+ b75a7b79552e/29b52807d7e3
118
+ 88d5adef6ed8/7a90061af6a5
119
+ 4c85614d8b9e/c69977331f41
120
+ eb54b1f75d84/13b5f79ecfb0
121
+ f6cd2a223333/4e69f1b138c4
122
+ a9dab067d0ad/f566cbcc8617
123
+ 9ed002b26ea9/c9e62d9e75cc
124
+ 3bc92a9daeb9/51a2fc604368
125
+ fd690edd33a4/ff347e0885da
126
+ 3194977e4b84/0da23d4caf48
127
+ a5dceecd7765/e9c21170a59f
128
+ 5f7fe5a573e8/085e88323bc0
129
+ 0c6b413f7e96/8cdb55dac1c4
130
+ 97cdf3de6de2/777d9ece86b7
131
+ d8417dfe5e10/bcb08bce7066
132
+ 8a69b9a644d4/3a38ab1164d0
133
+ 8d0f2d173d51/9ca2b63c1bd6
134
+ 6946c2fff125/62b9d15dce39
135
+ 236b6522b420/61b7c8af565b
136
+ 0d1bc4db8f17/ea6b8ea181e5
137
+ a3e08640891e/504cfa13340f
138
+ 7648a8fcaeac/3d14cbfc1f98
139
+ c9bd8d2fa26a/639a18d2a588
140
+ 5ce07b9a4dfd/cf64b78ff865
141
+ 18d8a9ad7dfe/ef564eecd050
142
+ 51cd691ce89d/415862e76121
143
+ 1bce9bf08060/f684ce7d2bf6
144
+ 8d5e27a287fc/f61032e84f51
145
+ 5c20c2996989/2d3640965787
146
+ 95b1c9bc0b2e/72cfa27c0769
147
+ b3daf6cd1e22/7a3007c20e08
148
+ 45adc0eadafc/58aad3518617
149
+ be991c7b43fd/990abaceb920
150
+ 4fb6d1be7e25/672bb97e58ca
151
+ b98cb0dbbb6a/6c6e9f7ddd31
152
+ 323526c9fcc1/20d5e020613d
153
+ 732c31688ffe/8586f0b23885
154
+ 8bfd23237f17/259152387b67
155
+ 2a9f1a50949a/ad308b75d389
156
+ 1f1f6f8df5a5/f256d006d9e3
157
+ a9d657c41044/f5060d6423f7
158
+ 6fcf1faf3f50/c808d975d889
159
+ 4307640260a4/d273a46646b6
160
+ 53091fe72d11/7bc379411476
161
+ 4705029a05c1/b6d35f21f988
162
+ a8614bc66895/1087ba22e484
163
+ ac948aa8347f/5b301495c87b
164
+ e1a983ffde08/928b77edf390
165
+ e327fbf2dcbb/da31149240ef
166
+ 0ae5d661fdb8/2a9d327a638f
167
+ af05105ab7d3/6511d714a151
168
+ 1b2273f06c64/707e8f50841d
169
+ bbb8a353faa2/8b604179d15a
170
+ 0a5de04981bc/5d0dbc8956bf
171
+ a8a3199be40c/325bf7b4fa1c
172
+ 344f0d78aef2/0639e529eeb8
173
+ 8e5a143434c9/fdea4ea1daf8
174
+ 9a748e31f786/c8be35136058
175
+ 053a5b717406/ca36f9185e80
176
+ 66e7a2394020/a6a7b6822be2
177
+ 9788970b3473/e8d69a2a94ca
178
+ c02ccbf7b023/42a36c562e0f
179
+ a9d111a25a85/309e1f6e5bd2
180
+ 2ca61930de9d/65df51153cc7
181
+ c6e7b1d236de/f2267cc4abc3
182
+ f88043fbf843/3b75396d4154
183
+ 4fae84368598/9522e45b3176
184
+ 5f5ab23d5d98/c1aa2e1fd94a
185
+ 0309f8b75f8e/4841ac65c9fb
186
+ c1ce6176c9f8/31203f784ef3
187
+ 97aa549228cf/556c1db755de
188
+ 30e616458023/ebe0ad9b0700
189
+ 844805726305/a17056d0ae18
190
+ 9771a63fcf63/ef0b77f8ad87
191
+ 6d0c269f65ea/002eb8f228d3
192
+ f90d25ca8c89/1d11d20c2d63
193
+ 85a4d75a3d3c/685db52e026c
194
+ bfe2c4844477/0d52c69eb6ac
195
+ 1f169031216e/15421737f6d6
196
+ b39640b9c08f/035ec00a07be
197
+ 34863aee8054/49ad183bb435
198
+ ab6930467781/a680dc19c83d
199
+ 228c5fff5f08/9c9a7856d65d
200
+ 8fe42fbb07d3/4d1d26385eee
201
+ 00c07cd8129d/8877e4d12ce9
202
+ 90cd80093e37/dc1de8830f40
203
+ b59dcc2e59af/59549d344521
204
+ 46a0d99d0b7e/e649a0a88e56
205
+ 8fe3d9877ca9/f8315cbbfdcd
206
+ e63908b8788e/337613cf72da
207
+ 980feaeaf088/f181cb9ff735
208
+ 9e3a45c921a2/edfa52b7e49e
209
+ 1a9b9caf288a/f8552dcfaac7
210
+ 103b7051cf6e/93c96b72e389
211
+ 2ce2fd70e0f1/83abd2178519
212
+ f3904e63ab7c/955fe9971f39
213
+ 5c411df30028/90e66aae2dbd
214
+ 1652f936ad22/0bfd1502f6d2
215
+ 3b570d2a5969/458a7dc6f23c
216
+ 5cfa6acef9a2/f7f85a3abbd8
217
+ 634a0f6f86c0/e7bcc5191e06
218
+ b30da0fb5f26/bab977d920af
219
+ 905a2991baba/0402b9dd927c
220
+ fb528b831955/366b958b05d0
221
+ 46fc10ddf8ef/0f9f765392f1
222
+ 5b8288e6c2d9/d38e8d8f9afa
223
+ c6b4c4461d71/bbfc011d376e
224
+ a118b6da2579/f2ea844cc193
225
+ f1f0c67a3f84/8370749d46c0
226
+ 09b8ffc4cccd/cd930b6c067e
227
+ ef3834dc2f85/4b818ab86f1d
228
+ 6099b6006914/e2e65c3bb3cd
229
+ b6bb8941a173/37e2440e2c03
230
+ aec6b0220398/23e3226842bb
231
+ e035c38129e0/250a49641501
232
+ 1ed0b4192f75/83dccfdefd73
233
+ 25dee9e5c3a0/90ba446d8a99
234
+ 8cde728b028b/21a4dd687414
235
+ 292d1d1c0ba0/45d5663d2920
236
+ b63a373f18b8/d268e3df432f
237
+ b0ce2d5394dd/589dda32262c
238
+ a91d0044beb1/812555770a9c
239
+ 66e5c33a2a85/2bf4ce1c7856
240
+ 83eb55cdd559/ee1712935369
241
+ 75d9c9d01ee2/eafc395e26fa
242
+ cfcb2a56fc50/21be82611c44
243
+ 6084c6a6f176/f05c56d6655e
244
+ dcb6d01456a4/28872d84f7ce
245
+ e627ad646018/3fead11ef39f
246
+ e2608327fec2/0a99b12d2dd0
247
+ d0b73623397a/8f4bd9abf205
248
+ 84652e52e131/ae7f231c691e
249
+ 0aa6e4302b13/03c5ef5e58ce
250
+ 41a360cc47e6/f3d114719749
251
+ 1bfc276a5443/73437a138433
252
+ f1b5e0433476/7cc9f52f8b12
253
+ 8f6c9a1b2e75/c89ad306d2c5
254
+ 569c58bba1f6/776b7ecdf938
255
+ 6333454aa82b/89ca6a753d5f
256
+ 19bc9b9dd53a/fe0e1d6222b0
257
+ fac036c6dbfe/f9788320f140
258
+ 1d2060782ee4/df4144c8133f
259
+ cdb9f3044ea0/20526ef0e71a
260
+ b4f964d21fe5/ffaa219c3453
261
+ f352ee8351fa/195520c47d16
262
+ c3ed6bdd5863/9818605868ad
263
+ 7e9bf2316f94/bb5ddf810f39
264
+ 8c95d4b71816/6ceafaaf8aed
265
+ 24790cb71c7e/7a2bef94b42a
266
+ 535846a06fab/fe7ff8a18f34
267
+ b8e945fdd1ba/a4a414901e90
268
+ d481837c7ae8/72c3bbaf2fb7
269
+ f6cd87f929cf/6711bbef64ad
270
+ 8d6ffcca4264/dbddab457d61
271
+ 4ab77604e694/da143f0998a9
272
+ f35ea8a60249/9f6d834518a2
273
+ 41df04dd1523/0624d1559f98
274
+ 79c46f6bb0c7/6929b3500d49
275
+ 099baa43e7e1/4137deee66fd
276
+ 897a3a543183/c02aea92740c
277
+ 6f6272ae8014/6cc517c941d5
278
+ 93b343e2d784/293b18baa1a0
279
+ af805a561426/e7c102ddccc7
280
+ d3e4fdf54f69/6f311520f2bf
281
+ e260175c0019/873ee289c08c
282
+ 654a4e7c11a7/e83e368727c6
283
+ d786bd094767/ff8f295621e4
284
+ 62c89235c95b/80a42ac0a3a5
285
+ 1d973ed768f8/26e455de8644
286
+ 0ca00e676ae0/387d1fc6ddb6
287
+ 9e445fc6e05a/fa3eebc9bdeb
288
+ 0e3ef1c4fdf1/a9621cac9401
289
+ ba13358533ad/7ab648b812fe
290
+ 0734852d9756/355f20f3c585
291
+ f5de25673393/8cb13ff02a8b
292
+ 2d5315dd8f60/798b685cfd7d
293
+ f2648cc5b5ab/9eb6f0f6ffc6
294
+ f3d7db1ccba2/1db7c9479e7e
295
+ 359fcf25898a/02254e65788b
296
+ 374bc2d74c7d/22fb5ed7b1e5
297
+ f51882be24e6/446334971ab7
298
+ 779c4793b9b0/49802d0a1686
299
+ 704998e76aaf/e4190ae04aa7
300
+ 21653b5f8c2b/abb1cd302742
301
+ e30fdd259609/34a691fa3802
302
+ 0c64eef9de44/e01799898a22
303
+ 7d70595a6bce/8b58ba2d11e5
304
+ bba30757f3ce/1ca7c1f42da4
305
+ b169051501d1/ad24f743bfa5
306
+ 541e7e1f77bb/433f069cc727
307
+ bd1f8f72ca9b/333f84135ebc
308
+ 157dbbe11f4f/1feaa1bfd3e1
309
+ 26cdfef9f495/2664d3a639ed
310
+ 5f2f3874ef5b/a6dce3bf2161
311
+ 91b7844717da/47e68b88426a
312
+ d87db3a03f9c/d9e32ec37bb8
313
+ 47c37e0f514d/54fb1203edee
314
+ 427be88dc32b/deec05441419
315
+ 2a4aba6f25e7/c1f314dee0ec
316
+ 51cea7a1eda6/043efae89d5a
317
+ dcc189ae0493/425e50ebd104
318
+ ecb89a3f1339/de8ef80912c6
319
+ 4b7c2c735fa6/ee40404aadf9
320
+ e8395f871e43/abdf876f5d1b
321
+ dbe9de304b7f/3d454eb0f6f9
322
+ 61bd7119083a/b362a8040ee0
323
+ 7414b2a32f82/ec9f23c4582e
324
+ ebd28939d460/9d618198da15
325
+ 2cf8ed1edee7/0817545d1975
326
+ 59a6b6bc90bd/78510f953c06
327
+ 3a9fb69b44dd/4215240a35b2
328
+ 89612921a0b5/4ad33700acc6
329
+ 69190eaa7a35/362cbdaddc0f
330
+ 93aadb937c2e/79ca01934d28
331
+ e45c6f076370/090c9f0b4e21
332
+ d7336bab2eb2/c6e41d08dae8
333
+ 2047a9f3af76/69e6408ed3bc
334
+ ddd443eb777e/dfe7fa1fb69e
335
+ 48cf1882ba15/1cccda9621c2
336
+ 39302ed98db2/34a4095fc642
337
+ 6d952bf057d4/0fb17c1caed0
338
+ 6158a10eeb26/cdb5cf479d30
339
+ 65ce89a4490b/7dc8bcc6d8e9
340
+ a577ee8acc1c/1d4d7d354e5b
341
+ fe339f06006e/dd547317ded8
342
+ cd0f7d6be318/67abc75cd81c
343
+ a94d4f0ee51d/9be92c23b5fc
344
+ ccd6e3c07a9d/3583a806db2d
345
+ 3dc925e7098c/515cebc0ff9c
346
+ e183658ba6f1/bdee66cf3434
347
+ 9d63438d5cf6/3609684c810b
348
+ 9fcd00b6f0f5/295a5c2049d4
349
+ 5fcf36fa8982/3e738409ed2d
350
+ ae463fa7ac85/83cde7f1c9d1
351
+ fd0619e03494/32d2b8d31a05
352
+ 37b9ef51b0df/8bdceaef594e
353
+ 4c6e3ed76a43/751ca0aac57e
354
+ 1dcc3d602b9e/e624780a0566
355
+ cf6295696faa/41a24904dd7f
356
+ 69414657cfb7/8895a73033f1
357
+ 0e01669875f8/baf9f361917f
358
+ a0c212c4b66b/6c1db4926cd9
359
+ 72e37de30190/86418adf6205
360
+ 059a49f4be83/af86b1326c51
361
+ 816cf103579e/05972230533d
362
+ e94394190527/7d07b3391b5d
363
+ c2a7742c8f4a/69ee851b5619
364
+ 192456f87491/917e17e94150
365
+ ae084bd62973/99ace04bc7c3
366
+ 6d235d50401d/4985ca7da5fe
367
+ aea92893519e/d877f389e9cb
368
+ 88be784d6e76/5a8562c28e58
369
+ 04d2a3f68b35/631229005965
370
+ 9fe4c864bbf3/630b01ca3288
371
+ def7e41d1601/0cd65962d713
372
+ 9badfa08dd34/7c34706145c0
373
+ 02cc50d73472/c2d5d0efffa3
374
+ cfdd8ebb33ff/cc313ed5d931
375
+ 2032a7408cc0/12d1b7475312
376
+ 6dbe8885ac6c/832df54b675f
377
+ 39c6121a2968/719830c27f9a
378
+ 0c267fb8ed5c/1fc6d142193f
379
+ fe6a82e9fd4c/d18bbcb54537
380
+ 517db929f10d/738a5904ab66
381
+ 4d7140eaedcd/8684b46634ff
382
+ 97e57767a613/cf3dce464b69
383
+ 9587fa0453ec/770fd099c675
384
+ 736dcc83389c/9ecd5ee85e85
385
+ 56a0f6a5218e/fce288780a6c
386
+ 49ed871d288a/6c736c9ed0d4
387
+ 36e7992d20be/9dd026eade01
388
+ f7eac7c624ae/0ce516758e87
389
+ 58c3b6f069f3/31413000b710
390
+ 4c5a708c0b2c/33907971b800
391
+ 5f2cddb5e396/1cebbb758e75
392
+ 68251ee06f8d/b54fc577e735
393
+ e31ce4993bdb/92f1527db044
394
+ 5f75d13f6117/bc57853d61f4
395
+ 13438b17ef38/ca6f306616c1
396
+ b1f287ec8ce0/daf5bf3053e1
397
+ 98cd7cea1269/5b633e20cc64
398
+ 40a42ac5c233/8688fbbf24c0
399
+ 97a460c6cacd/f5178f5311f3
400
+ 38d7b9457066/36a906d4ec03
401
+ 5258e511ea92/9f7c606520b5
402
+ 878cd2b268e7/6f594d56777b
403
+ 2b659f3281e2/4db77a1b4998
404
+ 31a6cfbfe024/92af8747c9f1
405
+ 27f53c2857b3/5693ba4a5e1c
406
+ 516a2b72ad2c/b490b32cfae2
407
+ d8615e965879/4aeb953089cb
408
+ 442feb8d6672/d65595cb463c
409
+ 5b054eb64bc0/c1920c782f16
410
+ ed891d4f18c7/097e4a41612b
411
+ 4f7632478cb2/4319b37b11a2
412
+ 372ff1e3220f/9390ff77e986
413
+ 7c2f5b42c50d/c3cc65a69c65
414
+ 924831350e58/02b0a791468f
415
+ 6c39a57fe4f6/f4bb7912196e
416
+ 92d483a45500/b1cb7bf1a2f4
417
+ 9ba006f51174/883ebe36151b
418
+ 5464e5f34851/c694d4dcd689
419
+ 25625710b73f/8191a5e9ef3b
420
+ cfdf31b8f1c0/2632decb0858
421
+ f68f31092b39/81a2787aab8d
422
+ 8ef2aa86f4fc/84302d460acb
423
+ 0339d309cbd8/82f25f644b05
424
+ 027cdf65feca/b1f45a16aa6b
425
+ 0aaef6556aeb/d02aef08c66a
426
+ 44a7dfd2709e/babd9e108bea
427
+ 3c56b54a0cd4/004239e2b403
428
+ 3a49d9eb41c2/bbcc446fbd11
429
+ ec371324fc6d/b7c69e3cd7e9
430
+ 98c6b3f7a8b6/57d0f1f5d7c5
431
+ 2ad11c985c3a/a18b829cb4e3
432
+ 7c49bc98ec0c/9bf634939eb2
433
+ f7dc547cb4b2/0f6f15e3f748
434
+ 3510d8a975e7/1a49acddc495
435
+ 9bbd9c291127/fa717a6ec2ff
436
+ 58701a107619/d4413668db57
437
+ 8472a4638297/8a175ca4840a
438
+ f73e18ae30d9/11ad11ceb7b3
439
+ a84aef6563dc/25b0f8a1a922
440
+ d35dd369724e/76a1b88c5fa6
441
+ 62f3e64412b2/e07f60c9035c
442
+ 2d522bb8be2c/1401282183d9
443
+ b2f289d03c41/fd61b4032e9d
444
+ d230b7b34dc0/75a7a52eac67
445
+ 176a106d2c93/ac6f874fdb74
446
+ 275659d5be28/283bce203dae
447
+ ce6bcbc307fc/108d41826083
448
+ 0fc9bbe02c1a/bc32187710da
449
+ 051e5b98c59f/fb81c441251c
450
+ aed49d6a7a7c/9f05ec485992
451
+ 72dbc18b74ab/ee9c757c1290
452
+ f1ccf4128e9d/4350df849660
453
+ 60c1e671a529/421ee53c9087
454
+ c3d9be4fe9de/06516f266c93
455
+ 412f65e90437/625e1d655572
456
+ 4267e8620627/e8a1891e9ea1
457
+ 37a78c50098a/c77f6ee6b7d1
458
+ a7ef4f8b26fc/c3e6e2b7006c
459
+ 2581d79dffc6/0394c2645ff1
460
+ 947fa53912f3/07a9c2efef14
461
+ 7fe38ee485c8/70a4f83f6f08
462
+ 128b5e6f11d8/4063e5cf8e54
463
+ 6cad64e45a6a/ff7ba0bd6e91
464
+ 84b137d5a696/fb54973d9654
465
+ 01272322296e/dba6e47d954d
466
+ 713a88a6cef2/6c79c4d7743e
467
+ 879be8348032/d4ee60f3b18d
468
+ c296c41ff497/751b2a8153b7
469
+ ab336b035f00/9e398c74218b
470
+ fe7dd2dbc2a2/4208553d505f
471
+ 85a554ea7c0a/7e3ebcded62a
472
+ cb7c060e24b5/d0abcb368bc0
473
+ ad03e07c55fc/8a5394b43547
474
+ fe4ff15d497c/0e5ca99d3c3c
475
+ 75c48895b9ed/2ba8f7204605
476
+ acbac424356c/c50d9fa383ac
477
+ 2a7aebf87ed3/482b8c08c0a7
478
+ 19380031c8d5/1166e2520acc
479
+ 1ebe0342c44e/48860ba70bc7
480
+ 0ac3c394df85/771d85c1424a
481
+ db00b91864ac/9a1faf3e75db
482
+ 7dd2b3af970d/d9ebc18ee451
483
+ ff77be0b7e03/1ebd7e15bff4
484
+ 4f3493c4dd6c/0c93197af9b0
485
+ ca4da39edfd0/3b38b15f2123
486
+ d810150f65b1/f1171125c0a7
487
+ 912bab251d8c/5164b2087432
488
+ ef6cd403e239/d8fd9e9b4af0
489
+ 3b1c38935540/33fdcad52fed
490
+ 6bbcc0621298/cd528121589b
491
+ 49ffbe90fe16/aaaa3c642dbc
492
+ 2ad6ba5db4b9/eccff0d8c76d
493
+ 044e4178ab16/d6aa2ab04811
494
+ 307a24c18f40/297dce30feb5
495
+ b9716006589c/a52e60d498d8
496
+ c753f42d2897/323612d3289b
497
+ ef3da8f1b826/81d0d39e4488
498
+ 15a9c76ffeb3/d42df1e9c0d1
499
+ 93e2b3320386/7f541ae22876
500
+ 3ac971503ef7/61771f36dbb6
501
+ 880b46d8a9f3/d7323e1bebd6
502
+ 3a0c1a84ba86/9a21502c5d53
503
+ c34a7acea0d3/71483bdf6513
504
+ 2ca55b966ad9/6590a923916e
505
+ 66970f31d33c/b926adbaed0d
506
+ 1e393c5dd32f/b09baa23b8cb
507
+ 5c859cdbf6c9/9f26fa91ee5b
508
+ 2dfe32a68e27/8714066c8e94
509
+ 055745e72fd5/919b29770058
510
+ 4659830e0f69/64c5693b16df
511
+ 40a45b2ad5a1/3c363bb02832
512
+ 7ef920a12d07/8399e1e0d2cf
513
+ 65a7e9fe2989/6d8e95d8ae91
514
+ 141631e28716/0a7e62775104
515
+ 8b7c35518a63/d751749e3f64
516
+ 4672b70bfef7/1301da625c65
517
+ 68fbe89cff06/9cd9e86869d1
518
+ 6828d79b1dce/211d40c9b233
519
+ 453c2bce0c3b/56d193a2834d
520
+ d9610cc2626a/a2fa4927b256
521
+ b484e715f02c/f8c03c333489
522
+ b439cc758160/5f9ef5f5e8c0
523
+ 0121d6824848/455041e88df2
524
+ 318f27dda11f/10b3329ce108
525
+ 7e5c20954c05/e0cff33c5928
526
+ 24fb144aa818/a393ab127271
527
+ 52012574c2f1/cbe4eeb3da9a
528
+ 0f5949dbb87e/c454eedf0377
529
+ a242f96dd2a0/08dd6e21cab9
530
+ c04d664645b4/c29f6705c393
531
+ ad00e11d5100/f5bfdc8db465
532
+ ff1401ebe49f/5824aed5cc48
533
+ b873c04f58e8/4021f3c43056
534
+ 1dd16bc8a55e/9a661ef2f872
535
+ 013b3d90394c/6f26da5ca30e
536
+ 20f899cb4191/6f7f324fcb91
537
+ d7d7072c7b45/53f5a570ad4b
538
+ ff3dd9e4bbce/f4a7dcb6c940
539
+ c1c88d1b8c2b/845121bee067
540
+ 09c5fb9f44ff/54ce61defa92
541
+ 42ec44c50ba7/4a1b93c0bcff
542
+ cfe300a23eb6/418caf50875f
543
+ 872fb358efcc/8df5a013312a
544
+ 9f03e1e55791/76ed03625431
545
+ 8961d459d754/a29cde64ef78
546
+ 32c81507d420/d2b37c1fabd6
547
+ 0c0674b0c598/9e5b583c3b5d
548
+ 4d0395e609bd/805bc65122c0
549
+ 8648ae3d5ea4/78022c71636a
550
+ c18ca5d62b9e/7e637566b2f2
551
+ 8c1f0a186ad3/488c78e5ae00
552
+ 300bcadfa4fc/01709369d2cb
553
+ 91f93d899e97/451d719782ec
554
+ 45b9ade582bc/450d60c94f4f
555
+ e860772e2253/653dbd9237c9
556
+ de9d23bb3ec3/d2946a9f5e54
557
+ a4dd0ecf472e/42e19269178b
558
+ 1c5d1a104eb7/d78710c9685e
559
+ 43d2522df771/5b9ecde90b3c
560
+ 4da8b602a11b/b108f3c4aad7
561
+ 515ec65f2434/1666576f9112
562
+ cf4f4c064aa7/0c02e37869c7
563
+ a18c3d19202f/67f10701f69f
564
+ 977c29299625/b5bbad85bc90
565
+ 420cdcdfc830/70d987f42a91
566
+ 478cd18c3232/b308ff6a9bbe
567
+ 3e9329201d8f/8c4f5898cad6
568
+ 248f8438c2d8/f437968d209d
569
+ 1235dbfe09d5/49ca030547a0
570
+ 715cba876e1a/2efae9fa3aea
571
+ 0b64c632fb13/fc3ccde0b910
572
+ 5d8c052e8cdb/51ae68225c98
573
+ 6ac737447163/60baea30418b
574
+ 3ffd4352275a/96a5bcb9a5ac
575
+ ad73ce4936db/63038d3c3462
576
+ b30251130f6b/ac8359e445ff
577
+ 71331297e7a6/d48b32cca444
578
+ d6927d5375b4/2d92a2ce9eea
579
+ 1d5f4ffcb140/509eb54f8ba8
580
+ 619256c21a39/532860004c05
581
+ 22e91b27539f/6d5101023c6a
582
+ cad3910e9bd9/6e34e69475a6
583
+ bec31eb22f4a/99a7ad0b90ab
584
+ 83304b705821/a83d58ccb5c8
585
+ 66906d7c7946/add7a2405f3a
586
+ 0f6a468d9fce/45e5b9f5950e
587
+ 403689cf04e8/acbd20f2e9ad
588
+ e5a06ab5d2c1/b5aae76c79c6
589
+ 1f01142c13ce/ffe83fd9be90
590
+ 64226ca854a7/8d0a2407908a
591
+ 29078d951cfb/c5cdc5ed16b0
592
+ 7acb7553f2f7/1626ba188672
593
+ 3509f84451f9/b7f74a0aed93
594
+ 302f92a6336b/54e90b564192
595
+ 7e33e21b0800/ea46e6218cff
596
+ 8a49f9259d23/a67c235559b5
597
+ a45845965ea6/9c1de192a4ee
598
+ 0e3afc276c91/6288b41b99ad
599
+ 21c0f03d443c/9b4bfc639ecb
600
+ 9b1375ad2890/f649ae97c68c
601
+ ffadf3e7559f/c3f3c032a34b
602
+ f2a52ed4d532/b8da6775ba25
603
+ afd97be10565/6a9f5ef1693a
604
+ da42bd1713d3/7369300df975
605
+ 8e0bea44a8f3/c9a930150d6e
606
+ 1e7884a99282/9d4cb669914a
607
+ aa1e91ebe883/20ad489a45da
608
+ 0fc4ab33c831/0da40388f032
609
+ 8e9a6ab0068b/233f91d2eb21
610
+ 6121e334506c/a11b08729f98
611
+ c9c143c79202/c2295f4c7e5e
612
+ 21b615e2b5fb/f74657fde253
613
+ 593f1a8360b3/e7d28a7d202b
614
+ ce1a64956d34/1b9e61350a06
615
+ 294b54dce5ac/3f55be4fea41
616
+ f74896f52bdd/1318deccc039
617
+ f6bcd324b462/5ec48ec9a98a
618
+ 1802f2d4a29b/050dcea94033
619
+ cd31ff0cef09/02ea3277c95d
620
+ 2d8739bb255f/9eba9d7289bc
621
+ 5fc2a705d4f6/a77b49c48cf3
622
+ d9b553e847e5/f172473e483b
623
+ 78c88172d658/47287485537a
624
+ d623a2cf798b/58cbeeaa7132
625
+ 986b30b45605/5af88522a73a
626
+ a0336158d6bb/03a09f42f80b
627
+ 9c7624a8205b/8f16a5aa8e48
628
+ e4091efd68b1/b18dbdba0f67
629
+ 863fa8f6d3ed/812c2e8aaf5f
630
+ c527b8799e90/f7e9a7b35d4f
631
+ 5ec802dfbbea/20bbe57affe0
632
+ 8e4ab36c78c1/190ce48f2bf4
633
+ 4affaf00f0e8/338b4b76baba
634
+ 400ed03f9a71/4f4032821db1
635
+ 12f0e2a02060/2aba5205ab64
636
+ 1c731d559fd9/0342dd405d97
637
+ b7ca686757cf/b0787f3c2271
638
+ ac9350709953/f4fccf096515
639
+ af0c80f796f6/29302a1575d1
640
+ 760c7741d43d/747b5fd40023
641
+ b2649f29fd6d/8d515f642906
642
+ 0fa8dc3d3b2d/d8e81fab4953
643
+ 9e7b461cd4f8/6c87e4d407f5
644
+ b3ee825ab1df/9cd385de127f
645
+ 5acaef4bf2af/8f47437b093b
646
+ 647c04f9afe0/13940a2a3fda
647
+ c5825fe111ca/f0453cbc2a1c
648
+ 5b2a6e58a6d1/089d8d923d69
649
+ f19b78a3ffe4/a038a49dfd7d
650
+ f9acdd72ab8f/18d6a4bcdde1
651
+ 7490bcd09d3c/a9196cc78ab9
652
+ 313bfa7ee761/86dca52a35df
653
+ 8e17c38c68a7/0fc835595652
654
+ 3f6e55e9344e/9576d55f2051
655
+ 2019e94cfb38/4455261f9343
656
+ 2a0d5faa2cd3/3012065b55f5
657
+ 3f50b4271d23/9a95ebf1988f
658
+ 29111a426aee/6c409f370977
659
+ 438a71eb8a53/99c978a181e2
660
+ fbf3be6963d2/d40c2cc5917f
661
+ a24bb4faf1e0/947a3d91c4b7
662
+ 032f245a99ad/befdbb2e5463
663
+ 610b1b54c022/4a788850e7d3
664
+ ae5703200346/bf1696c8a665
665
+ 827cbc71be23/3df3e4abeb3a
666
+ d133479314fa/07525c6033aa
667
+ e18a24f3f5b0/c0509140a981
668
+ 19149a203d5b/6d0d38cb6196
669
+ bcc2c21befaa/5fed60369e10
670
+ e3293f71bd51/c79cc320a6c9
671
+ 2af16d66cc16/eb87ca71cfb0
672
+ ce479841500e/17c8f4e3dcad
673
+ e28d1c093b08/1d78244141a1
674
+ 25a2e53a688e/f443eb4f267b
675
+ 110eb6da195f/e1a0c89e2fc5
676
+ 4a118c24a30c/5cf8fb61ae80
677
+ 0394159f41a3/83be24fc7ff4
678
+ 4689b42593c6/b63bc360aec5
679
+ 2498aad0b03b/0960be41b6a7
680
+ d80924d317ae/be97d9095f8b
681
+ 52ca8adf589f/f7b718864865
682
+ 9af25e5b3dbc/9623e7457cd2
683
+ 626bddce7e3d/c4e848643f56
684
+ cf9ac3a06e94/43e960f58dd7
685
+ 8ffa7426cc49/4566456e8b30
686
+ a77ea22d62b3/67dfff9fbd83
687
+ 6cb300e104e3/748df3f3a271
688
+ 59c9a1fdfe99/92ab003e849f
689
+ fefbffca06ad/e28c39469cd6
690
+ 955ef68c45e1/179202721fa8
691
+ 777dae26c730/4f63ab66f1cc
692
+ 1352330ed2c2/9947abd5f6f8
693
+ f26895e28423/abc76f59eefc
694
+ 7f1495a71b02/2b73d18727c1
695
+ d2adbf160058/e6d90f42bbdc
696
+ 1f1e69e88491/edfdce55700a
697
+ 1b3abcfd34b4/ba16a1db315a
698
+ 6ea53b243716/0441bf1b0005
699
+ 848ecdaf1c61/aeebe4cac843
700
+ df7090e8545f/df8a5ded719f
701
+ d40cdd117143/61d5578f3ad9
702
+ 2611868a2a8a/4d44dd27435f
703
+ a936a0f4083d/476e2e15037c
704
+ c80b8d5dbc22/6299757b00d8
705
+ 55a6a314910f/2a62d4e7eb32
706
+ 3a74d09fb2fe/a13d7725e363
707
+ c20e5e5e49da/cd4cbe328275
708
+ f84376c97ce8/e2b4eaf696fc
709
+ ade5cf694f9a/c0a29834d738
710
+ 6842db0937cf/51a8ec9ed5a8
711
+ ad0b6280fb8f/1a2ae40f9855
712
+ ce04e88c5add/5cbafb8f0e11
713
+ 287066847e20/3b4991059330
714
+ c13a81f1c6ab/3741580ce16e
715
+ 3e418c85077c/795b103b131a
716
+ a7213a8e7bb5/6b1d97562cc2
717
+ 8406c8a059ed/280840c5fd82
718
+ 571e548bc68b/87f10bf2aa37
719
+ 15e3e27994ce/0810fb2f6d63
720
+ 86aa5abaaf35/132c57d772f9
721
+ 3a38e12fc7eb/693ff297ce4c
722
+ 26ee978a4eb7/ff7ed995fc13
723
+ b1b53c79d4b0/45c6c3b99836
724
+ 5765fd2fa313/e0d194a41718
725
+ 31830cd5c5a4/9be1f866bcf8
726
+ f6e3b695e470/b0b1b9099dab
727
+ bcd48aa10710/b1142d300fdf
728
+ 533e6f5528f8/d614e9e808de
729
+ 21606a00619a/d45d89d019e0
730
+ f57e936e4f7d/88591b8c04b0
731
+ 90f4bfe47f93/97f91f155727
732
+ 4bb434892d95/275926a08a3f
733
+ 05ceb37bcb79/c827887f35d4
734
+ 14351fd2b130/b1b640041527
735
+ c628af95d291/59c2f58656bc
736
+ 4203360dc74d/1ea389106e48
737
+ f7955e17a64b/98718169a718
738
+ cae5fda32e4c/60c233486d27
739
+ b02f75e7bab7/3ccbf72b34cb
740
+ cd3a45ab948a/5f9221263131
741
+ 88d0b6ea6489/ccc2ff1fbe48
742
+ bbee93fcb2ec/cdde98880a4b
743
+ 321e5fdd007a/0aeb0f789fa1
744
+ d0d057562870/e7d2ae09fb1a
745
+ 351a7f66a571/7d27343beb8b
746
+ 00681a0d8068/948cab7241c4
747
+ 2bc52c1fb4fe/afa7cb8fc54e
748
+ c00e7f9cd5a0/26d9b3fea3f9
749
+ b11febe4d8ac/a11dc4034649
750
+ 63952fa89399/36c475ad8340
751
+ f3ec5324e980/4a7b9e94d128
752
+ 056be1354905/c2216ff63031
753
+ 2513b708d70c/869cf33bb86c
754
+ 4715d03539f9/a3751362514a
755
+ 8a3511301f4e/459c72e12d2e
756
+ 952319f4fecb/ccc8629893ae
757
+ 7844d1bf93b9/e065ae9c39a8
758
+ 6aac823c0a54/f758f2e6f81a
759
+ ee9caf175fd0/e2e20a47cfc3
760
+ 021b180c5113/594d3f4d8503
761
+ 5bb3d0a6235f/c000e4da7687
762
+ 6476e76a7e49/0e457fe85770
763
+ 9e2a6935f171/95ebefcc4c71
764
+ cd3b3178979a/5ba27be4ac4c
765
+ f6ffb3eddcec/5ba8473d8d7b
766
+ fe5132e17ace/9d8bda038e5b
767
+ 18fb7f9286be/0841d9c2a5cf
768
+ 95333fd514f5/09a838b7ea21
769
+ 7699814cfc1f/e2c064884dfe
770
+ a05cb7e896fa/0ce0528f4b28
771
+ 95a6db3f8be9/98c7a4fb18c1
772
+ 7f63908e9197/7c55069657e7
773
+ 524924a3fa95/a1b8bca58a8f
774
+ d9a1e4a3e19d/7d9959f2fb6b
775
+ 9a304e46c76a/51a40e30c431
776
+ 2155000d84d5/d7952e7c62d7
777
+ d7e2b439a2a6/843c57433c20
778
+ 18d5916fd015/be55ec08c813
779
+ 57b6b317db7f/398f58e3b64a
780
+ 8d7ded0bbe5d/3c785fee5859
781
+ f1aa1d2e9714/d575e0d7cd5f
782
+ 2edd21213a2a/7709a2cbc062
783
+ 539bf380a7b3/359fca1a117c
784
+ f329235f536f/2fb3dc5492d2
785
+ a574ba062ef2/6e04f9e7bfa8
786
+ 41feadf64832/f413b6735ee9
787
+ 8239120331ab/56672bbe7e98
788
+ d6d2bf05f955/668db4336a39
789
+ 2c34a9bb7eeb/b30067204387
790
+ b158cb867cf1/f83bde9e5297
791
+ 1a910df1baee/877bcad1332b
792
+ b113c5713e50/d4f912c0e0ca
793
+ 4ab804fb3514/91c0b0ffacfd
794
+ 42fcfc49f03e/20deef038a29
795
+ 844e58665622/c1479f13f7d8
796
+ d1e4ac595f08/909cea0b4059
797
+ b07558ea489a/100c0556cf63
798
+ 22b614581f03/61862e5c59e9
799
+ 093076d2f238/54919b911b6c
800
+ aa80e59c7672/ec6bdf4746c2
801
+ ac45b47801cd/1567b11c192c
802
+ 4194e29bbe7e/f4987177ca24
803
+ dc2eb267f301/f62c91233aeb
804
+ a61965f97e68/84bb1b4a2e57
805
+ 0b2e9cb1ec60/cfdcf0a72715
806
+ 4544fe4c79ce/4edb2739dabd
807
+ f19ff247be53/c52b64ced65d
808
+ c93b2a5edc80/c714dc8e5c1e
809
+ 103cc28ba522/6e42e1da6189
810
+ 22307af0b033/27612e73d1aa
811
+ b369374e4736/b298012a5a96
812
+ 82a0714e2ed3/54cb64fb65d1
813
+ 760c20ea782e/ad9526ba1f6e
814
+ affe5683f05e/711ade0179c7
815
+ 63423c3af65d/f9456e94543f
816
+ 2703a032a8a4/2e7ee5db8896
817
+ 849cb65a3719/65b88b0d3ce3
818
+ 256d7fb73118/b77fd82d07b7
819
+ 7640738fb687/4fc6b9c1b0be
820
+ 1ea596369d36/cba96a30119d
821
+ e5b9e5ea722b/5eadf4f7ec61
822
+ a000a6f3cf65/60d5ad710306
823
+ 2c18de7c90bf/be1814525226
824
+ c38bbc6bd415/244d7074c70d
825
+ 9287485c243c/d76b713897de
826
+ 186c58866a53/0011aef83cab
827
+ 4cc291df6d7d/24ba6704755f
828
+ fdde906222c2/2a594a0207f5
829
+ f9f92dbc4370/e42260b5ad3e
830
+ 6bd2a20df718/a04d67b1e501
831
+ 709b2d7f5fe0/74fa76f848d0
832
+ 63150fc3a16c/35f854f01c11
833
+ af7169914fad/778f5e13e5ab
834
+ 966497db3501/4590c1388031
835
+ 78f42b2c36f9/5ae5fdfa5e0d
836
+ 2bd689f31b73/d20a597a9e8c
837
+ a9c2fb0a87f9/c9a9110039ef
838
+ bf2c77382300/8ca8680ad48d
839
+ 7bb1783368d1/b7750353fd77
840
+ b523dbb2b803/e287ab11e1c3
841
+ 4ccac827258d/a92419803b17
842
+ 0301e50fa532/9c33024a5ad1
843
+ ab2f8488a01f/47b835c4ab51
844
+ 4dc73849f4cf/c1751a8a5f72
845
+ 647baebf076f/fb38773b8a64
846
+ d6720a177355/5ee5e9fd96e2
847
+ bf74f635d1af/e540ebe2495e
848
+ 8d9e03038012/815f475679cf
849
+ 91106a43f8bc/baede462af1e
850
+ 18f4965f1306/5b8c643e896f
851
+ 738d9b7afd02/1d734903a9b8
852
+ 34893d2ad428/8ab8b5d953db
853
+ e90dea1e1994/3f5151491f01
854
+ 560f82dee36f/c96c1c8b371d
855
+ 1590f02b8cfc/489645a740c7
856
+ fbe76b0deffe/6b26e3296bf3
857
+ b41a794b6d1e/b0fb99f5b3f0
858
+ be6a645f6998/702c2dcf1a7e
859
+ 898c6e50f784/3fb0587c4d89
860
+ 2d98d43c13e5/6d388cad8cc7
861
+ 184ffd11cdf1/38b832a3dffc
862
+ 920b2d5ba98c/4f0e3d254928
863
+ 95d8e905178f/b40317ef536b
864
+ 1e522e52de67/bcca932bafce
865
+ 521203a29810/e07e0b142d31
866
+ 432c2b5d327a/5392eb7811d0
867
+ f49dfacb5cc2/7c19fb794fba
868
+ e07656912a07/96133a839155
869
+ efe0e53f4fef/f81756bdcf5e
870
+ 26436b5ed078/471ea159baff
871
+ cec0b348c8a0/40db364dec03
872
+ f19e14c9cfda/7ba5019e4a31
873
+ 23782d47b633/fdf3a4f50169
874
+ e8cb8d4b20e4/4bb63fccfe69
875
+ 5aab861e82c9/af2acf62317b
876
+ 55cbe2c1804f/de414777b77a
877
+ 7e05600c4d36/2e1f42395454
878
+ 808a045bce69/be9331520c60
879
+ 8fe87af0ad83/136cb4958740
880
+ 011adabde70c/c1c431e19cd3
881
+ 2822e27e3226/da322144489a
882
+ 0878745aa8d9/a57e11cc6fed
883
+ a2aa26d2fb25/a25aa88b7580
884
+ 58ba53f96a49/eac1e812a836
885
+ b9fac8282a20/261c6c270c86
886
+ adb7bb0c83d0/c0c2711e423c
887
+ c11f88aee4f0/b6d0e0d94ceb
888
+ 8302668c57e8/e98eae6ecff1
889
+ 904fdf6f6a61/980a0528830c
890
+ 5439a942116c/786788aaa18a
891
+ 268f88b48278/d95ab7fd36c0
892
+ acfe0aded1d3/a8ba57d7c942
893
+ adcb4bb5622a/14df861a9135
894
+ 7f42137dd75f/0b9aac7f81e3
895
+ 3e5fabafac80/bef01f274d09
896
+ e1cecee138f1/1e92c67c0d0a
897
+ 14992f4bbeb6/7908c7fb6cb1
898
+ 32fdaae623cc/b03f21b61c8f
899
+ ed89d0a88348/dbe8d1f111da
900
+ 217748d80c1c/8667b327fe37
901
+ b6bb79577b33/8e4f7847f98f
902
+ bcf22393a137/42327de22600
903
+ ada92f4ebb11/8a461fa98a63
904
+ 2071ce74e713/3e165c7cbeb8
905
+ dbd1f2b9850d/ed8940bba9eb
906
+ bf90b435873d/e901996be5d3
907
+ c9d37a1a8d03/1ad4675cdf0d
908
+ abcbc1b5a359/c3150dbe3d43
909
+ 10f0b3bc01dd/29f8f659043a
910
+ 9697cccda6e9/e1c7e215b33b
911
+ 915177f0845e/bbb72ee5a9de
912
+ 5ccb159f5114/c6a4feb7e605
913
+ 96306bea8990/b0834265f6fd
914
+ 600c63a9d095/138a0a175393
915
+ 93072a8bf3c4/e45cfc35f68d
916
+ 2bd05c0d2ae6/c31005ce0d32
917
+ bf2000565e1b/b14f90a4af29
918
+ d408552ff1d9/5abee9bf4112
919
+ 9d8851ab383b/a17ecddb5a9f
920
+ 4826d80cec60/169f3170f88e
921
+ f0a9988367d4/c3ff27be7356
922
+ ef8b71887dfe/c24c1ee29087
923
+ 195524fda4f7/ceaa048ed1de
924
+ 81db6b02ac0a/6be4fef1d0f2
925
+ 375bd5a71e6f/a6327ab79bf9
926
+ a40d4f8ff7fa/2a5765f1e19b
927
+ c879562c9f5f/2c1311be1a38
928
+ 099e40f80b1a/7b0539dcc4ae
929
+ 59c6af9f813d/3ad3549fed3a
930
+ f92b8b063d30/d6abd312734e
931
+ d4d4a1de0d9a/6748d843a684
932
+ bd83881fd2c9/4219a47c9740
933
+ 7f0dad8bb24d/8357dc95ed8e
934
+ de9bf5ce4c3e/abd47fe51a3d
935
+ eb7d305f939a/175966d46541
936
+ 756cd5f4d4c5/b8a797a4182c
937
+ 77c54123731d/25afebc5eedf
938
+ 6619a123f51a/8dd5f06ce945
939
+ d2e50d1184d6/02e5ca22ed6a
940
+ db528a499463/646d9a8f2c98
941
+ 1f19d8a172f2/c97f9131243e
942
+ 08284c22ce7a/a4aca74f8a29
943
+ a496cb573a3d/d57236eb6605
944
+ 574b472e4a8c/f1f335cf53b6
945
+ 7c235cc4d019/04d99ed416c8
946
+ 18e5d346c3f4/56fb7c346eca
947
+ 635fab5c507c/434f1059e22d
948
+ afa2bf8b7dc6/6e047cd84d36
949
+ b30f01fcb846/eb5804fd6b71
950
+ 1332400aae88/b88a0ba01b3d
951
+ 199e872af666/897cd917915f
952
+ e1a578106fea/5507e340b5be
953
+ f82b7347a106/ac76984ab99e
954
+ 199afd46e10c/f0ccbc9ee191
955
+ b7328b8f3f1b/8d36511f49f4
956
+ 1aa4de68fdea/d6a7d2abb7fe
957
+ 4c0ae3ecb7e0/0f107e7b9df2
958
+ e6bddafdea2a/eb22ed5c61b8
959
+ dda4aed27462/23fb22fdc899
960
+ 4833c9b6a5d0/57e3e3c5f910
961
+ bd41829a70e5/d5b02211bf73
962
+ d119b9df7300/e411b067e702
963
+ 0c8ddd1e5048/67597faf06b6
964
+ 8d2e355906f2/f04b638bc7b0
965
+ 3f4fa55af48c/f98401564c76
966
+ e133a6904073/f7259f59a6dc
967
+ e68850417123/4a72d0b74226
968
+ 2572dddd88ce/643ce7f56248
969
+ f02fd2541f35/1297c0a7e99c
970
+ d7da6e6840c6/b1895fa56df9
971
+ 6e3042dfd41e/cb4804a19383
972
+ 132bf64c1776/cb3ec18f950b
973
+ 50b6969c0aa6/d8a15b4b9843
974
+ cd4b8ed4438f/1ad8588954ec
975
+ ed1d3ecf6ce5/b1c6c5f0c9d5
976
+ efc8b87b2fc6/221557f31ad8
977
+ c896e44539c2/b596372d1894
978
+ 3736f9d855b0/7ecec169aca0
979
+ 94b827e0848b/8b66039fe7b1
980
+ e337042c520d/bce2a49dc2dd
981
+ 1c6acc0e6964/7859f1826b22
982
+ 6bc2b7b3b57c/ab419f7faa0f
983
+ 9481cac65f72/22902912661d
984
+ d306bb34b230/a73a2fce7a08
985
+ acb1310992a3/3285672cf036
986
+ 4963a7ee6fea/a56150119019
987
+ 3140e4976204/770c160bb9cc
988
+ 47c337096496/c1267e829335
989
+ a24ea8ceff2f/3043afc1f985
990
+ a59f1699552c/f37796cf913f
991
+ bb2c3733ee07/8cad8b30da82
992
+ f6dfd2c7773f/1e7a163d5687
993
+ 8257c43f4b9c/2bc421c0a0a3
994
+ 4017da7adc80/5552462fd438
995
+ cf5625b6279d/4eeb42e346f0
996
+ 105918b839e5/08d99889f477
997
+ 7de2d554ca2a/1ac40f55a1c8
998
+ f70cf6df15e6/1a7966a1294f
999
+ 01539f82909c/e54f6b602a76
1000
+ b9ef58b62a0f/74e11f4e6634
1001
+ bea3236f4e4e/9439b7da8976
1002
+ ca1b3eceb9be/2c8340afb095
1003
+ 242ef334aa07/0530f773115d
1004
+ ae0a88a205f3/ff91dd3fb684
1005
+ f01c03ea5855/bf7fba2b4c1b
1006
+ 2aabea825334/80ebb1ccdd52
1007
+ c0d9dd389594/005f8a090cd1
1008
+ f37b7958f77a/999d8caf8690
1009
+ 9d75125f784c/cb0983f5a34a
1010
+ 1f87d7705934/c7eb0a7524db
1011
+ f888036388de/e2b93a41a5d1
1012
+ a1fd02cc53be/817d7eeb44d5
1013
+ 4c387a7c4600/67e24b634d02
1014
+ ae44d0cf3ad9/058809f0aa43
1015
+ c71f8f4bd71c/ad276c7f7989
1016
+ 9599941f9dbd/e5bc1bdd44d1
1017
+ 77f7c1a7b693/c1af1b8cd1a3
1018
+ 50611cbdade4/452f42b0a15e
1019
+ f3bc2d421c1b/f4834d98980b
1020
+ eb067115e5ab/4149122cd3d3
1021
+ 8b10e8af1ba6/eb57f49083a0
1022
+ 891fa31d1088/3fb4f360de98
1023
+ be1ad463b6bc/9d718df005c5
1024
+ f1175ac74587/f950d50ab217
1025
+ 1a67a60b5384/5e0de3040874
1026
+ cc11ee2ffd74/0e08e20d8087
1027
+ b70b8533c01e/bebcb944e7a9
1028
+ dad6c93ee90d/248f08478d95
1029
+ 34609159bf1e/a8cf1798891d
1030
+ 6920ba69a5cf/9130ff170fe5
1031
+ 65cb27364aca/56a32d56ec09
1032
+ daae29374b59/4d819d7b8a92
1033
+ ff060657de5e/940eb4f6c323
1034
+ d392831f22c7/02a669704946
1035
+ 243bc7b94236/e514cd198da4
1036
+ 26b59b600bb4/03d5e00abdd4
1037
+ 4f2907834a70/736ecbbbb576
1038
+ 87bde134a507/827bd7e488b4
1039
+ 62ede8feab6e/da65a2dd00bb
1040
+ 257cef167b9b/4211a6448520
1041
+ b6689933db7e/6ad82cf597fc
1042
+ 941992985f49/ac6da044c0cc
1043
+ 881175d3c694/566f15eb1c69
1044
+ 0f7b6af842d8/752e31deaf72
1045
+ 18f2ec1a1069/a574028e5e05
1046
+ ed2cd6e73ad9/0c6d12bfe16d
1047
+ 977a1854c0a4/5a29c285ef61
1048
+ d1459947b1e7/3fd9e9e44baa
1049
+ 106e431a1456/88c99556da62
1050
+ 37a01ba21d32/d45b1ad6d2c6
1051
+ d2d5843a6eff/d99ab799dd18
1052
+ cca374ef213d/cc8732837c88
1053
+ f1cdbf00f1cc/f1fc7a3b6f89
1054
+ 07633fd8ac5d/61d74d5a121e
1055
+ 724c747348bb/6948b7160450
1056
+ 54115bf48244/62f4db3bdaf0
1057
+ b8bbb29154cc/d1bcff9620a4
1058
+ f141fad5df3f/b290893ece36
1059
+ a43a36cc8792/a95e9ab75e15
1060
+ 2e42719153f3/ecd4f91df11c
data/splits/rsna_pe/train.txt ADDED
The diff for this file is too large to render. See raw diff
 
data/splits/rsna_pe/val.txt ADDED
@@ -0,0 +1,1062 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 66b048cd99ac/7eb149b96d62
2
+ 1ab0bf3198c4/546febda784d
3
+ 9820a5517bd4/d78f53e45279
4
+ 1ae6a23952ff/2b40732acc7a
5
+ 73864f06e96e/add8695526b8
6
+ 46e614d66734/e8d5602fb7a4
7
+ a84c2373adef/d210adff9690
8
+ 4ef74c5e5ce3/e67187f4d780
9
+ 437caed08598/de714f210450
10
+ eb65207fcdee/bb6ec895749a
11
+ 583fb125addc/654a72c7136f
12
+ 16e616e9da6f/e771f7a48d8c
13
+ 1bc89370c743/4a504334f3ba
14
+ e1c0ea5e7a1c/868e0fafa26c
15
+ 2486734f52b8/8ac2a6b1001f
16
+ 565d68be0f68/420b55be0d11
17
+ 2bb4fdce19d1/c5d8086a63b7
18
+ cec0e2a5869f/3b8cfce60596
19
+ 3324a7eb9bb2/2cbbf98a270c
20
+ 0a970be732a9/0d7059ed9ebf
21
+ aa4e8b79cf10/1208e60a0c9e
22
+ 6b18f159d733/77c1ed644918
23
+ f3b5f9a59ad6/dc34a5a3d7ed
24
+ 1a028f53d74c/5c83ab2e2ceb
25
+ da7c47d260ef/c42437c1d1f5
26
+ 29387e715bd9/aa374c8ffd80
27
+ 3578ec39ac8a/ed70b484580d
28
+ 28686db13062/be4339740819
29
+ 79304df6a87f/3551ac2b466d
30
+ 87481e8f16dc/c8f3e9bd20eb
31
+ 018b5097a129/0729127097da
32
+ 3ff2e0fac430/a50e0a328afc
33
+ f8b02ccb4215/478162a07b06
34
+ a54d5d8cadeb/780fbafadd42
35
+ a68f02603ae4/f734cfc2cc63
36
+ 75b62fa72a7d/a0ed0ecbdc1d
37
+ e88a9aade24a/2d61ea8d2e4e
38
+ 4b1de3eb252d/7c1c8808e645
39
+ 213e09559039/fe39fbe39278
40
+ fbf07b871839/f19ba65b222a
41
+ 3d87b898b381/3661027fac6b
42
+ 3d2a538d6ae1/b4d74ae43469
43
+ dad33e23e08c/299738fcc58e
44
+ c18bfa87ce50/b6ee2ad43897
45
+ 89b3c87726d4/514c15c3c09d
46
+ 45f10f5a9f4b/ba2a044cc939
47
+ 0112fd91fdd0/2b363f6cfd3d
48
+ 5d35fe271a66/7178706eccc6
49
+ b6e8bc34b552/72eed160f34d
50
+ 06755d30ab5e/d7dd0e1a9ec3
51
+ 3a9f089c7d99/dfdbed15981e
52
+ fbc8ea6cd700/fac6c1207959
53
+ 866833783b95/56f973a558a5
54
+ ddef3e0290f3/0a6eeb26a06b
55
+ cf26902c572b/84f0e28ed537
56
+ 43e2cd7fcfc7/8867031c9b59
57
+ ef69e7578a05/7ac9859ede2f
58
+ ae4f84f6fafb/75224aa64fce
59
+ b36d9324daec/df86124e3af7
60
+ e6fc04eceaad/d3f18e516e1d
61
+ 1010deb093d6/e7afb2206cc5
62
+ 77b5169c4ee8/7bc4bac32ed8
63
+ b4ed2db75bea/c0fb059ad6b8
64
+ 008626c99017/461fe63dec07
65
+ 2ff7b5ae4247/5a949ff61911
66
+ bb0c399591eb/9a3086d22cd3
67
+ 1fd0ac287c7f/17f85880bbf5
68
+ 57eb28c2498d/783a3eaa03ca
69
+ c8a4dd1bc9c1/6768ef342b11
70
+ b0819f257149/085417874b40
71
+ 96046d8efae4/274e8a9a6b9f
72
+ 004f9a1605e7/d24902cc3c42
73
+ 0c2a250bc517/7090fc00483a
74
+ f1f78e1982d7/66f5dc60e1bb
75
+ c975b0d1c818/a8c0de9cf994
76
+ bb37544d9ecf/f8667a40f661
77
+ 873e589bbd4e/8ec1b1181466
78
+ 6e56909f2d70/07179bd262df
79
+ 95b9b19057e0/da70b865077f
80
+ 4cd025307c88/38b92e722988
81
+ 7ecd5d3f494b/98114e60dcaf
82
+ 5cd4ddb05661/826ffbe83d3a
83
+ c8f975cb6fd2/2b9c18edc7a9
84
+ f777d15bbd8b/301737ebe079
85
+ 14bf4ec29e94/ffb4ebee76aa
86
+ 96aba2c0ff5d/fc5f6d8e90c1
87
+ c758ab40f977/eccadf73c9da
88
+ 8bbc09022874/16c291f910da
89
+ d1a9ef0c6496/f899255b566b
90
+ c307b9c85c68/624d061c2cf3
91
+ b4de1e1739d9/4a5d2a56d579
92
+ fa32d4ca3965/576b90a4d6d7
93
+ 4b1d154fda11/65deb3107eb0
94
+ 137be7b5a03e/cd8eaf9a2c91
95
+ 9d8619d10909/6e268bad5c20
96
+ 8d1b2c8e3857/f4bc2cc32b08
97
+ 4d0e1bc3ea88/339abf26fc44
98
+ 6b0e9a56045b/a5c69bed4446
99
+ e268a12b9476/a08ffaadc650
100
+ 2e43e1196490/8b2837ffa345
101
+ 1fa9ffc1ce65/f1a22c2106f4
102
+ ea5d80e66958/5c6625f77715
103
+ 85cb60c97d07/b22ed37dec49
104
+ 844f9abdd071/22b84b3e1cb0
105
+ ca09590a1457/a7e6ebd13d68
106
+ 5a245a786914/ce5cc22f930f
107
+ 25c6b1cd7719/e4ee55ca902d
108
+ b5e5c3560eff/f048e0f49448
109
+ ba3577d0d423/b9fcb489269a
110
+ 917024cf429c/14d72b048c4f
111
+ 098052e59646/867ffd3aa538
112
+ 3badcf26ca79/e8ac97fcb3d6
113
+ 0460d8363304/a3869b785731
114
+ c06ddd22f78f/ba77a3552b36
115
+ f3db0cc358cd/e7713b5b8687
116
+ 16922e5175f2/c9cf3ce3c357
117
+ 6e45ea074094/09ed93abd8cf
118
+ 4c5397c29ca0/6953650553a7
119
+ 72e60dca85a2/c84b525b3fbb
120
+ 06fcd515ebd3/afa17b3639a3
121
+ 9c79f4879733/1389413d6292
122
+ 61dbadc35aec/08f37e8b40f4
123
+ e7dbdaefac50/a4b6d8ea2f53
124
+ d89134b89685/36c8a66d40ed
125
+ 6dc41e6ea9be/97532a996560
126
+ 289a1a844ac8/438f89e3c20b
127
+ 8597451f5cf0/c3896f15a291
128
+ 634bbe95aa58/7613de531329
129
+ 362cd70b4307/410d7d7b9edb
130
+ f07df02bb9a5/e31608ee28f4
131
+ 689bc4a73450/57899fadcab5
132
+ 485be2438930/a802fcc4ed92
133
+ 7cb26948b2b2/6fd8f27f136b
134
+ 43ac1016f81a/62ca64a5640f
135
+ 0d620a51fbf9/9811455aaf94
136
+ 6b5b39edbe91/9b246cbfc33a
137
+ 4e7558f1725a/e1e7843db854
138
+ f70a25ba030a/c7bd5d9f3292
139
+ e8dd226f80a0/3a3df0b276cc
140
+ 465b692bf6f6/31e9c99d3cd5
141
+ 2bab32188b8f/6ed39334e4b7
142
+ 216a69eb3a93/be839b374fae
143
+ 8b138b08cb61/a802a70aab8c
144
+ 20e00921a91d/2b5f45c75f7c
145
+ 3dd8998eca9a/6d69361da770
146
+ e4bfc801bda0/b3fd7a132b28
147
+ da9c76867400/0934e7724156
148
+ e27ee83ff120/e626910b77ee
149
+ b9c310a22473/e6ee1be65ac6
150
+ 4dc66e775565/f646abc097ea
151
+ 6a1e9c057a05/aa67309ee91b
152
+ 141c1f161371/81a044189ea6
153
+ 82fc15af1484/740d815c4d28
154
+ b07d6263c7ff/b8412b98306d
155
+ 58617b8f468b/d2b30f382ee8
156
+ bf580f3b16fe/923afe21750f
157
+ 8b4902beb6da/dee870f26166
158
+ ea7abb53f90f/0aa0bb40a3b1
159
+ 2153097d7555/eda6b3a3453f
160
+ 0f7b13e09ca4/5ea27b4b2cea
161
+ 8691b0cd58ea/c123657c7329
162
+ bf7be06f1bce/97dc44f2ef9d
163
+ 892ab1485372/742b02ee080b
164
+ 9667c26dfe06/203a20b2f4f2
165
+ ee7db0419432/71eeb7a6811e
166
+ fffda3f22362/39ca5eaafffe
167
+ f772f2dd8f22/b6a589aa7b9d
168
+ f95df622d53d/8bfa10ffb4d8
169
+ 1074fe1164e6/643e2fad48b8
170
+ dda580cc44f3/a1252e6218ee
171
+ 36f34d462054/a191661efe48
172
+ 2c469453d0bb/0dc0cb27c84e
173
+ 7403eed181f7/a8e7115955e8
174
+ 9b45f8886d2e/b40fc1e711de
175
+ fea8e1ea843e/87a0df3ab848
176
+ 6ad386213d0a/17a5723c3f84
177
+ 27fc4b010ec5/c465377de152
178
+ 4ecf58adbb89/02aa0c7cf9f9
179
+ d3c94d3c92af/ff6bc80b385c
180
+ 07e173095c42/b482d5aeb09d
181
+ 19fa2c9f97e9/ba67c816584d
182
+ 9d223375dac7/ccdf78b6d513
183
+ ca7290859ff4/2f91780b7650
184
+ 4775122af69c/c5eb0d57328b
185
+ 55858126181a/ccc2249d6292
186
+ af0fa891991a/eb43a6786159
187
+ c4ddccf1f86e/de1531c9909e
188
+ 3ea327df4e36/14283cdebad6
189
+ dd146dc9a5a1/e65b5c00caca
190
+ 68f09338e280/9b9ecc6bf2fc
191
+ 9386efe4e83b/7a30f01d8157
192
+ 20675fd1ae26/462acd0de70c
193
+ aaa759f74916/abc509592109
194
+ 3d66245a1865/181699bfcec1
195
+ 84fa4ac4cfd4/afb7b590b8b1
196
+ 59331ab0d7cd/f423e5b0f21a
197
+ 0e83a0d6516b/bac040099799
198
+ 9d292b620241/c0d5cd0e407f
199
+ b912a01489ad/63f3e1ff8592
200
+ fdd5123d24ec/80984831bda0
201
+ afe8c4282f0c/3be38654b160
202
+ bf0ef391bbc5/051d2d40cfdb
203
+ 802ec3c3639a/5a43229ad563
204
+ 5e2608127652/efeb3c15a156
205
+ 65de7e375851/0100d4bf7577
206
+ 314b5c309cde/5d857182f18c
207
+ 38f7a65644ca/4f0a37594c60
208
+ dc354bab4c24/27e71a0dc2e8
209
+ 2ab547d2ca40/c6590ed2c591
210
+ a8357d4d477a/3ae73db03153
211
+ ff928f96c863/fc0acc6b5f61
212
+ 7ada74a00592/7b97ece7385a
213
+ 7faf38442276/58f18fc7e0e4
214
+ 681ce6e04b61/7a7b867854ac
215
+ a53d88e6fb20/beb04e80a8ee
216
+ 56cf16540907/6dee1745e036
217
+ 51927511a250/ecce535465fd
218
+ ad102aca015f/1c9a64395a82
219
+ c38bda4f5135/6b8a6c38cbb5
220
+ 3dd2d0d80070/c97920646015
221
+ cd0ac16de9ba/b7c819a086ca
222
+ 03fcfad0bb12/cdc0826e721c
223
+ df6fb0c21dbc/07dbdbaea591
224
+ cb505c336b11/df35423a555d
225
+ 1c6a3b1e0055/3b359662039e
226
+ f133b54091dc/1ae901318d4b
227
+ a17e808a1d15/fb3a494d0890
228
+ 5622956a2e32/b1c829ef2624
229
+ b8bc7716a290/81b6e2b29889
230
+ 064f64bac62e/bb39845f08d8
231
+ 567c4a53a6f9/c0967e981b67
232
+ aed5f3773d87/5ebfa7c5285f
233
+ cdd4968a1ee0/cc9c94e04801
234
+ 1dd34abb1022/4dea9bea69b6
235
+ 905c0d74d18a/b9b962d340df
236
+ 1b2119082f2c/ca01a3c2fa1d
237
+ 629b785d977a/9f004b6e38c3
238
+ 3f28b9d32596/8167f9ae30fa
239
+ 8cff506ccce9/50035a6520ed
240
+ 3aa195b75ae1/f57b42c7161e
241
+ 24e95d6fa91c/b374b302d997
242
+ 6577c331c3a7/95a4ae510771
243
+ eeef39ac5519/cbf2dac61bf0
244
+ 264dcb42dff2/23b8add4b50e
245
+ 385340a5b714/d8c8e5250e3e
246
+ 5e41a4403134/c5c5b84e69b2
247
+ bcf6bb23b143/9a504bef531e
248
+ 923f4474f187/2927cf6302a0
249
+ 40438abbc0df/2605a01dd180
250
+ 25d400e9ec5a/4c7e616018c9
251
+ 98e34cd6bd9a/d67034fcab32
252
+ ce20ac7fa297/b776494f103c
253
+ 61462f3676cc/92ed5ba6c737
254
+ d9b29750158c/3b0e81996494
255
+ 5953351a1898/cee713110fd0
256
+ f6bd126cd9e2/9541c4df404b
257
+ b6e40f432824/b7676c467567
258
+ faa5ecffa39f/f28d14ac19b9
259
+ 0c728924c7cc/1acba88f28f2
260
+ 1ae50531694f/0f8e58301698
261
+ 5be1a905c56a/d385289415c1
262
+ 462432f2ed18/edab0127f712
263
+ 87836de605b7/ae4ee06d00fa
264
+ 4f093c06f440/3a5b5a4ae982
265
+ ceff046d0144/77db5b8d0ce8
266
+ ffb0a0633cd2/a04a4ea91da4
267
+ fdf53f597835/cd9176b321b3
268
+ e10900a2b081/cf02b9dd0f75
269
+ c87417527f3f/cc20f60defa5
270
+ 5520262d09a9/23d9ad53669a
271
+ 7877d884e67c/be4831153f07
272
+ c14d74ae2614/dfc23bd330e4
273
+ e2dc7899d876/93533eba4a50
274
+ a350f403177f/648447fe3aa5
275
+ 9fb267edb9df/27077adf82e5
276
+ ab46d65a05a1/00376aeb1ec4
277
+ 14c57dc12f12/ee9efe094804
278
+ aae60213c3a6/3dab6ab5db4e
279
+ bef4f5fb2a6d/e74a04baeba8
280
+ c9f792cf2fd1/e04d2220cfa6
281
+ 33139afd4d3d/f78cca570dc3
282
+ 9147f873e8e0/1b4e80557caf
283
+ 8dab7007a628/3b73b54bee79
284
+ 0441b1e12bf7/947831b101fc
285
+ 909f785f928e/443d8860dc8e
286
+ 1c8e8f2fb99c/f3ae27b5138e
287
+ 937ffa67fccb/95e50b4ae34e
288
+ 364e9bd00df2/adbc0c17bd0f
289
+ 0365d4e26dd2/30d73b064f85
290
+ d03de449ee14/12ed95504028
291
+ f56b76936e30/3510c0866f2b
292
+ b78ef5612f25/ac8db3500726
293
+ 7332d0c4486d/db8b7e3a2488
294
+ e30d908122e1/c7b3fc8c0eb9
295
+ dbcc0e386892/14f2c2537cb6
296
+ 96f528c5cdad/3b5bb8ed68be
297
+ 51e9945f7953/23fab8d2e18e
298
+ d1b1c55c54a9/ca5ad42e0e5d
299
+ fc987fac3fcb/0e709390585e
300
+ 64ea6edf4566/6c82739ab546
301
+ f0eaa8927fbc/aab163a72a61
302
+ 605c9f373255/f1a609903495
303
+ ddfad31686c9/d85b13dca8cc
304
+ dcbec76e4c1a/541d8c6cdcdd
305
+ 65526b7e751a/652fd5e8aecc
306
+ 806a6f685ffd/5629a4f28b87
307
+ 7698d162c30e/c7e7e2830f71
308
+ cf66a790fb41/3a5851fdc104
309
+ 2341d3b55832/2057cea0cedd
310
+ 77a4d769c337/99d1031ccf2f
311
+ b1e1e834d492/222102ee1ccb
312
+ 4b34828774d4/213745b7e648
313
+ e86704eb3158/40e81f77bec5
314
+ 00c56dd61b33/1cc61e6e0233
315
+ 196818309a7a/90e0eddb3861
316
+ dff5bcd870f9/123ccbf819ec
317
+ 054383da7552/72b009bddfbc
318
+ 93c8ea4b3013/e24f89228d17
319
+ 836e1c1c9316/4ec939e57b08
320
+ 56f495e09e36/ab60dbfacea8
321
+ 47fed58478ca/376b50ba5955
322
+ 5530adbbdbae/404b0e7ebb14
323
+ 401e81bac70a/f14daf4876d4
324
+ 799483828e98/9928349d7448
325
+ 304c8048085b/cfddc9465cbe
326
+ 90868cba442a/c7f47fc9e4d4
327
+ 8f980d09fdc5/4a1d58848a14
328
+ f8e08335995e/fc94aff1b6cd
329
+ a170941e75ef/8f4d86567182
330
+ 2d3047d85830/652a97064748
331
+ 314e364c21e4/72c4868b9927
332
+ af45bde18edc/796f42f3f3dd
333
+ 158aba74fa75/27a48c667565
334
+ 6e861de7e84d/00810cd10c8e
335
+ 6548787acbdd/09395d25f15f
336
+ 4fc501e07c65/2b683d683f7b
337
+ 407d52358822/0ecb2d312ba2
338
+ 1ca290346593/908713c55f3c
339
+ bc6ff1c5061b/408f0fd9e8c4
340
+ ff4d90c50ec7/586115efc964
341
+ 68982c6dcef0/bdacfd4d5809
342
+ 8a0fa55be8f3/7bf47804bef5
343
+ 0e41597fa5c7/3dbb03781d94
344
+ 341c7022e7d0/a73d292c8f1f
345
+ a5ad89a78764/416e72a771dc
346
+ 156ab7293e53/64324c0bd6be
347
+ 7bcad36fdfa3/1444482af1c9
348
+ c20d5bb5ffa5/d958d167ce77
349
+ 2ecdb74fdac6/b16492f4dd53
350
+ e2eaa325081e/9f9bf4ea330d
351
+ a65ef4139811/82cdd360b55b
352
+ 76b746c9f701/601047e252ed
353
+ 6b36f6ae67bd/74b1fac41cfb
354
+ 333494d5edf8/bec1c64f009f
355
+ 74b8baa96417/6bbb5c7cd8e5
356
+ 24e9e7ae1972/0783812bbb9c
357
+ 499f69ee7d8b/9de824145f15
358
+ d7009ecd872f/36e43f44201f
359
+ 005a0dbcb4b7/4ceaee66edc8
360
+ 86560951ebf7/186054349475
361
+ 323f96f173ce/82bbf34146c4
362
+ 95c97d74a4f1/47615e001e43
363
+ 831898042c68/0cd720c0dcc4
364
+ be7fc3e7cae1/db86f914eb3c
365
+ 5dfd2ef3e012/8b78ce11f559
366
+ 00d4f4409f0c/38a51605b9ab
367
+ 3d01779f6c1b/67213562ce77
368
+ 207c2cdf9547/1cb343cead97
369
+ 88747208ff6b/722628a0340a
370
+ 890dba457b95/749f05587376
371
+ 5f74364b8fa4/3894cf3d3538
372
+ b35ba29c9bb3/e19126209c23
373
+ 440d4445b719/5e7b5e63532c
374
+ f9bc8bbae698/dbf504e710ec
375
+ 7b3184672ce1/107bb4f5b598
376
+ 81c433f3947b/cc3326f6a216
377
+ fa669201f10d/567590d1287d
378
+ d4fa82ac40c0/ec53e81dc349
379
+ 324d5dd7f9e4/d2fb2861bcbe
380
+ 1b78cdafd658/1e5db18f5e7e
381
+ 983c2c029c42/5f3a96b9839c
382
+ 6d5eb832a58f/341f0b007614
383
+ 355861934641/02325079e645
384
+ 94a5a995efab/c42960d46945
385
+ f1d5c4802385/7d6214bc47f6
386
+ 4d8d8f1b1c81/2b60973ab968
387
+ 582d923283a7/383c0cba1025
388
+ c26633e114e5/9b0eadb1f3dc
389
+ c8d65acf79eb/f92674c2e170
390
+ 9a08fd13fc94/646bc595a45c
391
+ 58444f51d254/b06b67a53947
392
+ 4744e04156f8/5a7d9b562382
393
+ a4828b5ceb95/c472dc5ce8bb
394
+ 02873a298396/8c7596e2cc1a
395
+ 1dcea6e18ad2/d27befb849fd
396
+ de6cf946cacb/4f993af9e9d0
397
+ a290b381411f/b76df5d4c466
398
+ fd9f3904846c/f8e1fa7aaffb
399
+ ada8ea3ca937/c641a447f5b9
400
+ 4b082e5875c9/3a20e42aef67
401
+ 0706aaa554bd/91b391f4ff9c
402
+ 31f86eea3f0e/341fe00f5d6a
403
+ 86bbf267dba4/dd6208d6960e
404
+ 613cd2c4979e/6adbb98845f6
405
+ 8c308ddaacc8/da5476a003bd
406
+ 702d99cfb78b/e1e0107bbd37
407
+ 110d6a574d94/3570ea0c4bd6
408
+ 9af0202f5957/601e3f5e8c7c
409
+ 45e827bb65e4/8d76eee5fa1b
410
+ c67e7b167617/505b3c76d0b2
411
+ ac5d5d77c23d/319d03ab3bfd
412
+ 64557ca988de/dc055f85e1cb
413
+ 7a3889f87ec1/b779f4f2ed3d
414
+ a78520b823f9/0ef769cce18c
415
+ 34102de8be71/7822f3938514
416
+ 779e49106c99/704231bf0a2d
417
+ c32e71ac0bca/9edafa010c07
418
+ 6074c1c68976/c6b84e64a18d
419
+ 73d6bbe17c01/4eee51317cea
420
+ 0b8d44d09125/f97bd8b9021c
421
+ 6c45df39411a/42696f8ab7e6
422
+ 7c316cb6913f/d369fd506049
423
+ 051b3092bef5/62515784ac0a
424
+ 45f464935743/025640f2cbe1
425
+ 0565bf1b23d6/fbe13dbf449c
426
+ a87dd174efcb/3e909d3e1c0d
427
+ afdc554a8544/a72eb1740f02
428
+ ef79ebda04d2/de880935133e
429
+ 01d21d521f2e/3caf4adfde9f
430
+ e6d7c925be28/8f80fe906c57
431
+ c8dd71adcc04/3b9aff38b500
432
+ 14d973251ec3/c27b027109a2
433
+ 9589599e6c29/327b552939b5
434
+ 72f3ab6d9fa8/d2ac50bdbe5a
435
+ ce43b5640396/b3986c3d2fec
436
+ a54746e65833/be400214871c
437
+ f1982acb1ccf/40213ff1e97c
438
+ 77cad15dee59/52a545699578
439
+ 90af43cf7b92/3e0bc2a9735c
440
+ e3240752be0a/0c500ee18e06
441
+ c7867089cefc/aa1373fc2ead
442
+ 19fff8d322b4/54ec4599b785
443
+ fc2bf881f4dd/75f0fd1ad072
444
+ d11302ed97f3/cac33a132b25
445
+ 78d2c2bdafc5/6219099024bb
446
+ d51c3da2cd86/ebab40bffb20
447
+ 8d992323ff89/067d9540e784
448
+ a7b2db609994/ac1a0d252c77
449
+ 8bb7f579e600/2b8f11b41f3c
450
+ 2115de83a41d/e2e7d2c5888f
451
+ 690916e818f9/76a24afa5fc7
452
+ b4c2198cbf44/38ec1c6254b9
453
+ 78316ab0762c/92c73b46858d
454
+ c5a1fa4c8a16/160e87970512
455
+ d04532c6aa9f/78b9f7c92837
456
+ d41a171b6b01/978dd299ca0f
457
+ 96f350d8aa6d/d3ac25f3eb7e
458
+ 2d2e0709f949/df20acacd06e
459
+ f1dd9190908d/e6b0c4409d99
460
+ f46de8d316dc/02d5184ce107
461
+ d9bced33a821/c8e6b72c4c1e
462
+ 65410bb6c55b/e1623dd674b8
463
+ 244b74e822d9/5aa9c6bd64a7
464
+ bf72c51c28db/a3b4578a3017
465
+ 826f0f6d4182/0825ac990857
466
+ eafbecb55e53/b22786dc6776
467
+ 7a08da51e050/44420cbbe114
468
+ 5c435222b61d/3a5cfcf50e82
469
+ db3d47962890/5748e6bd896b
470
+ c7cce50c1475/c9ddb3383978
471
+ 03f428020b93/e61d2459f6ef
472
+ 0f8e755a8c72/4d2a352c01bd
473
+ fd81caa98e5d/1cffddccd550
474
+ d2a8fdf8dc1b/39742a05d812
475
+ fea72d249a92/0492bf992d3b
476
+ a20d844b4b98/0225e09e7611
477
+ 33e5b140f030/7a7923b51a43
478
+ 958589fe665e/7ab4fc6d5a01
479
+ 7c156fac2448/e9e89b6b6b5e
480
+ 7aba014984b7/3e66ea19ebc6
481
+ afe186f1593b/ad6f9811302e
482
+ cf6311397367/42b5a042ccfb
483
+ 7024fd2e20d3/b68c6b9832cd
484
+ 24325d68a871/5e1ea92c1c45
485
+ 0eaf19b7f31d/9b01bb5345e4
486
+ cd01c695763d/9d16bac6a479
487
+ c9c1b5990ea0/a8b788a38f0b
488
+ e6bad4d97ce8/2ce4cbe26b6e
489
+ 760f1ecadf7e/e1193df8a213
490
+ e39eff6b304f/a621c4f17b28
491
+ b75979bf64d8/f5864588434c
492
+ f8e3b8d95d6c/e89893bebce4
493
+ 66aa2397d1cd/4d8ca3b82bd9
494
+ bf2df7b23d17/c60ec4043992
495
+ 5d43ca942f1a/23db8e068cb9
496
+ 449fe9e8952e/eb0434da3d7e
497
+ f4427c04ae34/63b8acbb4dcf
498
+ 6bd08ce5bef4/62d9788e82df
499
+ 1074699b8245/798bfe7324d0
500
+ 44d22edc0fd1/8516b4b406d8
501
+ a55662221227/d1951fd523cd
502
+ 100528918324/ad65228c635d
503
+ 9959702db6e5/b79faa40132d
504
+ 1ec7df67e59a/74ead20c0dd3
505
+ 3248c9f12ba4/da754bacad6a
506
+ 55949ea7a1bf/b5b77cbe70ae
507
+ 676c4a162f7a/ca97508c513c
508
+ 9ec7f9c3942f/7f045c4e54d0
509
+ 76d1e8d43815/2d80010c608d
510
+ ad83df549ebe/92652c5456ad
511
+ aff66e00ade6/0bfcffcb9cad
512
+ 027aafbec929/3148d52a9501
513
+ a1c15dcc86d2/b99a2a5f552c
514
+ cf385eb5811d/0a650a843a27
515
+ ffb066f2944c/869ff882b841
516
+ 683ddc468822/8942fb46dc39
517
+ 5aba34e03cef/63545463702e
518
+ d36913f32a1c/ffcd1096b23a
519
+ e03bf2df44b7/a4a6800f86a6
520
+ 9a2140b97584/40bcfd17bc77
521
+ 4604902705aa/5707fdfe3956
522
+ 5b757365c206/a1b39d29eb5e
523
+ 1229c0fe4ee4/e6cc318dfd4e
524
+ 617c0cd396a0/bfb898dc2282
525
+ 85c2a6362ab7/c96921b7c3a0
526
+ 2e2c8c1582e4/b79efb02c30a
527
+ 6a85ec33cd27/11974290d749
528
+ f0222de13946/28c1f9cab53a
529
+ 97fbfba10324/9f28cc346ec6
530
+ 7413c116409b/7898c63e4d8a
531
+ 6124bcc72ac3/b5fe2dbe0531
532
+ 1e120e7e2b71/9738316fe3fb
533
+ c90fff95ec84/f7158b7dde7e
534
+ c857ccb1e13d/efcf38ef064c
535
+ 0b4f89c5a287/bc014383aaff
536
+ 3bee61288e91/5548c8f1a6d4
537
+ 281eb2b42203/d9ae0a2eeb9a
538
+ f1f18b6cc5ad/c789962b99b7
539
+ 959f9ea58752/ce12c3e647d8
540
+ 0947fbb9fe99/31591153e64d
541
+ 3ddf95ae2711/e403781e8396
542
+ 114617f864a6/19383608b4cb
543
+ 32b307ec57b2/e24c5ab6eaab
544
+ 0f29de75f7be/cea1315d5630
545
+ c5e9dc0cbdf9/6c0f32a7526b
546
+ 9c0af222440c/60bec48d05b1
547
+ 057ed3ba0fb0/fbddf85cab06
548
+ a9e168212446/668d322b93f1
549
+ ebadd74bc8b6/9bad0edd58ae
550
+ af90b2b8f05b/248e1c54c4ee
551
+ 9f1f853da397/0d6af8c8424e
552
+ 745ad2552a9b/015e209002f2
553
+ c10e408bee50/1e86b35cfb7e
554
+ 859a705239d4/807d8f3c50f4
555
+ 661bcf3decd2/bed56fa7e720
556
+ eeb816d8f2bc/8a221a5610bc
557
+ 70572862d7a0/997524c4bf94
558
+ 41d63a87e4c4/6f8454cc63dd
559
+ dc8ef3dfb0f5/9c8a5fed5316
560
+ aeb3a92b7836/73471dff4c70
561
+ eb2a6b2b21fb/34a6db28bf6b
562
+ c81735d3d9bb/2ca78becb9fd
563
+ c7cd2d31a785/af91ce0e2d8e
564
+ d18acc42fc27/e7cee14e43c7
565
+ d66cb1aac87b/9573d2dea6aa
566
+ 0ff5a98cf60e/e27d5fc08bf7
567
+ 5b060419d64d/8b4052412b21
568
+ 7b525bafd231/bd9604248f98
569
+ 954bdb5cd715/9202015024cb
570
+ 31630cd893ed/b88b25a873a9
571
+ 20cd5ebf2b5d/abdaf4560f19
572
+ b95e3c046d71/24dfa4c72c3c
573
+ 0d8116decf04/047babb0f0c2
574
+ 43d8d49e12b7/731f9dce84f4
575
+ ef52a6d70d92/e063e983ca76
576
+ be4cf9057bb5/42a507709a9e
577
+ 9f6bad15a75b/89f0b4fe6d7d
578
+ 83dfad4f6546/06f1dcf27882
579
+ fb86440bd85f/46b29b8e73aa
580
+ 45b1d7b8bcea/87fa31072723
581
+ 147e504371b3/8b8859acae53
582
+ ce5f245064e1/32fcc3dd90b8
583
+ 609f7ad093a7/a249858147c0
584
+ 1e0c475c8423/a9e6b07c4bd1
585
+ cb57ea5f137a/2fdd9250ee05
586
+ 501cf57467ad/90d9535d6f0b
587
+ 553a2c8efb14/afc720afea15
588
+ 1863d6d03f5a/77d5ee0042a7
589
+ bcd797a108b9/8cbb47179019
590
+ 69bafbe087f8/9a1ae8417275
591
+ 0cfbcbc7b969/cf2a3faa9b0b
592
+ 05f7f4dc543f/3662d3bbabb0
593
+ 7e984a69ef2b/fb89330c8338
594
+ 7d4abaef7809/5825bcfeeeab
595
+ 8221a917b1ec/3f2fd220fb6c
596
+ 7d19ade19449/89b569f8a5d8
597
+ a9384faf44ad/ff3fc415615b
598
+ e71018c0dd19/27a266bb20e7
599
+ a1c06d1d459f/895857fc4eb1
600
+ 4f7e328f2df5/e63002421046
601
+ 3d4e4ac5731e/bc0a9fe0cd1d
602
+ 8dbd5f4b903c/bad3a1310583
603
+ 4b6da2108b25/96d6dab0219b
604
+ 15194d021b94/3c9ed916bc04
605
+ 2d29cc6e215f/c681a6deab3f
606
+ ce3357bb2342/4a113a240079
607
+ 316e29731f07/1b617a71487e
608
+ 29d8fb689291/b77d9af9f3ea
609
+ 64d73b99056b/5cb3c79c0cd9
610
+ 636ea37ed57f/7a7af3133d2e
611
+ fa8b8cde099c/0f8e2a781b5a
612
+ 0b9d6b9f6a5a/c384cf13e8eb
613
+ 749b978a9b89/c45925cfc572
614
+ 1a342da9fff8/cafd6e007cde
615
+ 543fa3a576c5/9abedb99fdfa
616
+ 246fc93db4cf/7805bac5069f
617
+ 17acbfec2855/6ff051535d6c
618
+ 7ae911216160/b159c484b5e8
619
+ 745c8cc2d8fa/e9fe51231120
620
+ af1841c5ec5b/505a36534301
621
+ 6cc97f077de5/ab4ecd134977
622
+ d469916480e7/aec7566a948c
623
+ 854ddf06727e/30085e57c048
624
+ 648529b7d83a/11598fa847bb
625
+ 43f3a49b5ecb/af8dfe95e3cc
626
+ 8b3c9f40ce4a/60d522975a8b
627
+ cdc4ce03759e/2bb3708b72c6
628
+ 9269b93987f5/4ca88f5e5449
629
+ abe3e25c27a6/59f304d2ce4c
630
+ 32b7eaaffc69/58a462227816
631
+ 6465a57caeb3/ecd96e44231b
632
+ a122d4aaaa43/a30cb1db1121
633
+ c9e36b6f3487/84db11ee96ad
634
+ 6c506e98ab39/d1bde4d81201
635
+ 8806953b93d9/8599d42345de
636
+ 0252f7faaf2a/af12e8322d15
637
+ 4733a551438b/453e20ece981
638
+ 2c1e0f802d8d/a3a8f903d849
639
+ 028a800ae986/bbdcf5e82e0c
640
+ d017ac29bea8/0ee5a821fe31
641
+ b5ce079232eb/94cc10a16d83
642
+ b1203d0fd446/3121790d29a8
643
+ 326bd6b1d2c5/4e2ce8dfde95
644
+ 618adb14f46a/8cdd848edfac
645
+ 63d496a5c75a/43529d5e7974
646
+ 582fc56c21b5/c698782a0041
647
+ 892789689a71/44e5c7c5370b
648
+ 44241eb40c01/ab4c49b00e3f
649
+ d0ae2768f435/e463f7571ffc
650
+ 6ddcd39d32b6/91b6e938b0fe
651
+ 666b9ad4f63b/7a07ea3c3eb0
652
+ 867077b5cfd4/a25ddb9aaf52
653
+ 0a5d4ba6e645/451fc5923b1f
654
+ b11f26c7a5ba/cc80db0a68d4
655
+ cec6ec6e6b27/14fca8ec71d0
656
+ a31dbf8fa10e/27fb8c0a3336
657
+ a1b00776bcb1/bd146260fd84
658
+ 1df1a7041801/df494a64a761
659
+ 89375ab32a97/3a998b43395d
660
+ 178289f909a8/387be8e8c47a
661
+ 82cb3be70776/9283bdc5a848
662
+ 575d796240b6/9f04ddcc0afa
663
+ e5feb628a152/f8c45e8ac894
664
+ 2a4732b84a27/aafe568a481c
665
+ bdce209d6278/847606c7120c
666
+ ec8bbf55a147/3e152ff07f7b
667
+ 20a0454797b7/71099bfbad45
668
+ 9b3c1daf3e55/385db2ac7128
669
+ 9c29dd10dd5c/2d9b7f197d74
670
+ 6f6938175a51/8354f4e68c73
671
+ 4ca899e96b8d/ae0a6372859d
672
+ 6949b98efc6e/8511cc6431af
673
+ dee00309a4c8/ccb904999a27
674
+ 26cdf5c03d36/f7b53438d036
675
+ 4005994a21bd/75f443622a88
676
+ 3815ffaef5aa/c737869bded3
677
+ cd0973feed36/eb71a843863e
678
+ 3e64df5b7b3b/7c1c3f03744a
679
+ 4d5c9db367ec/98a153d54578
680
+ 8acfce813977/003a0cb56488
681
+ 4ff23914e6f8/af4e6421d052
682
+ 99d67fcc0a3a/d1a7d3c11e4b
683
+ 40c0ac498189/097ef73c742f
684
+ 77f1b7e42326/47c9fbeb3905
685
+ da84a42e5d31/bf2c2939ba78
686
+ f17d04c717e8/0dd9dcc81bff
687
+ 73fcb1ac2dba/7d4400d6aa54
688
+ f309bc5c8683/18cfc0e7b651
689
+ e0e68355fb27/ac04bbb10b68
690
+ 22fba4d650d2/c1cbf2285806
691
+ 72ad6a56f14a/c8cb3d1c73ec
692
+ ab9938c70eea/14bccd6245b0
693
+ f8b188988551/397a6937415b
694
+ 36f2f3fe9bb4/f7b020994900
695
+ eecfd4094859/f2c9fcae4483
696
+ 6f8d12f8f4f9/f3847144f7b4
697
+ 1b11ceb137ac/d6c90f4847d2
698
+ b74803f30fca/a904c562534c
699
+ e6030417f54e/1483f130f5e0
700
+ 38e2e3db4112/b18a9a3d7c03
701
+ 50e717917318/e9796c927c16
702
+ 78ed9f77ea3f/9ad8d321c846
703
+ 78b7d31e9753/130525fbaaf9
704
+ 37f370b75a74/0219c6bf8cdf
705
+ 6b6574adee52/652a195ff841
706
+ 9fce54e8dddc/16037d845640
707
+ 85a7f354ed24/6086f862b08e
708
+ dd8c6bdf21a9/ae2b2a89d6a6
709
+ 77cb3ce3328d/ed4dd658f9e1
710
+ 8b92a2a76e59/c1a29e488e37
711
+ 2d4c810fbddb/26685ab77d0a
712
+ e43ec6635173/b8ced5aa0c1b
713
+ 06fca4e12c3d/7533c83917a5
714
+ 978aecaf2042/98eed9b23ce6
715
+ 120890c1c87a/6beb6762fbb3
716
+ b892a7bec83f/362d6310438f
717
+ 8b09dff95c1e/792738846ed7
718
+ f291126b784a/c590d7b05f47
719
+ b2477959c640/a555659635f9
720
+ 311795510418/a95886d3e93f
721
+ d2900d793607/c142af714fd1
722
+ c379762d7f6d/4a349c956cb6
723
+ 9a22979eddc8/2489f62a440a
724
+ 3b33e8408bba/e50dd7b1e59e
725
+ 6529e394d99d/548517a2e670
726
+ 19b1a92b03d7/e097e1b3a80e
727
+ 22b338d5574c/976e90951ac0
728
+ 1b7800f91427/9f9637aa9bb5
729
+ 31b56f4b9f33/6e5a7538ad09
730
+ c71b19eea988/ad5cb57de32b
731
+ 2cb382e52b1a/fc3066a96704
732
+ b3aa71a35bea/f62a280a1fa7
733
+ 6a28dcf3599b/aea55c5f28e8
734
+ e24505c4b33f/375d195991f4
735
+ 8b56f5f68c7a/292f1a125052
736
+ fc8db117d50f/923f3b5dd088
737
+ 4fecfb32d697/3255002a16f4
738
+ f549328c79ab/5176966ef821
739
+ 386c04e39942/6bdb70229b3f
740
+ 230cf88406b7/b8e3f189baa2
741
+ cfa368b39411/a40ce668e60f
742
+ 26f9b79b2a26/0d8be159081d
743
+ 871bb1bc5471/02a740ea40a0
744
+ 703a5326277a/9e08785d8fd8
745
+ 630f3b20f89a/1963b8c80d56
746
+ c16d413a5cf2/017b7834da90
747
+ d143f739c890/e9a68dc22d89
748
+ 77e58b4bdfcd/83762da2cbfa
749
+ 67781ff7beff/218a911d1e9e
750
+ fad15cd60e8d/ce6cb0657a89
751
+ f936a23abaf1/1ee623daee55
752
+ 40086b51a222/29b58ab73dd4
753
+ 175dff1e7d4b/bc58708aeaf2
754
+ 02372090b912/7f08d0ef93f0
755
+ fe84e2d408ca/2b3af8a20763
756
+ 721be1d06220/de3441ed13cc
757
+ c46ea88b778e/0af8bc5ab052
758
+ 4629aae5b5e8/b0bc193dfc3f
759
+ c56a15aacb9e/2fbb9bc4b973
760
+ 975e0ad5fbf7/6bce791d214a
761
+ 0137615ed6ce/789ac279f7b3
762
+ 5545fdd6015a/730997233836
763
+ 46ca024ee5d7/b8e91d2ea5d6
764
+ 56f8da8e106d/651dd12e83dd
765
+ 791c9c9594ea/b992816e5d6b
766
+ ec36deb204d3/a61de9033439
767
+ 4e3ce011704f/5ab0308fdd71
768
+ ea9a32a2cabe/6d19355425c2
769
+ af57d9eb2318/966f21d47fd0
770
+ 0e42d4a2cacc/95bc1848844f
771
+ f42a9c91bf88/d67741735192
772
+ eb3306a28a0e/40813e6bfb43
773
+ bdaba6add594/2fe4842fad2a
774
+ bede3a3606ee/1eca3089a372
775
+ 1a34f22425e9/3804cbf85c6b
776
+ fa09a60689f0/32070e1c0d3a
777
+ ef63be386036/003ab82c1d1b
778
+ ddf76aac7392/b0dcc7f5399a
779
+ 84683ef46f3c/cde5aaccc1a9
780
+ 5dcce1f4ab5c/9f5797c783fd
781
+ c2e8e9be1778/8ea54501f5c2
782
+ 822188539ce2/2032fefd13ef
783
+ ca50c0453d28/f0a2d8f2b909
784
+ a93a6bbbd2ee/d8b106f0d611
785
+ 928b16f3f380/eeaeea6da602
786
+ e9a19db076b3/9b7df7a2da0f
787
+ dfe28ad81fb1/78f81f8df0fa
788
+ ceaf1b15cc25/2d4b6258ebcd
789
+ 978ce0c60432/bbbde5b8b13b
790
+ ce03fcf2788b/66388b0164fa
791
+ d29ef48aa5de/2f6d322c919d
792
+ 1bd225846cf6/fc945a0b546b
793
+ 3bc99fb9fb85/4f5aba8e5f9f
794
+ c51107b1d9c5/446f23b58093
795
+ 0e429ff3a5a7/6eb7cab52805
796
+ a9f521942320/ec9bc8b2c075
797
+ 161672270c2d/b12fb9c9f5e5
798
+ bff2cf0b9ab4/56c022dc5335
799
+ 6b542e36b6e1/49571615de7c
800
+ 79fe80dc909b/2b260de3db8a
801
+ 9da2cdf2b6b8/052f904936dd
802
+ 1acebaabf5bc/637ab884f1c8
803
+ 45740eef8b62/da345a41d6a6
804
+ 6be6b9432b2b/917abcf08ce9
805
+ bce8993c8990/fb8d5cec1f60
806
+ 03fe9fa78df9/5e2aba4851fa
807
+ d04381c00d06/e23dd4092bf5
808
+ 1a61c8535dc8/ee7cef1a558d
809
+ fdbbca3abae4/f1f0fbed2f33
810
+ ac3b29444fb3/f7b2f632c795
811
+ 84e494d67539/5f10c2bb4bf2
812
+ 78e100d6172b/8d2c40d49bb0
813
+ 4d7a4494d46d/8990fd7598ae
814
+ f06c848b502a/009ffd9eaa99
815
+ 49938af0b20f/791c60930315
816
+ 8220e2a5aa82/b6b0f06b756c
817
+ 535d3723e7a7/eab0c125cf90
818
+ 929912d2b288/073f86368050
819
+ 92611a987890/dc2abc867553
820
+ fb9b494baace/cbc4204efaea
821
+ 4e5e65303833/d427c5b93dfb
822
+ 53e3359d15c8/03f8d5f1b30a
823
+ 633deb30f61c/5094703ad2fd
824
+ 69ea1de748fa/301f4988063a
825
+ 5b3a50b351e5/d02d8a7ac578
826
+ c51b4083faca/b4fe5d30f6e2
827
+ 1d42a664ee07/a84042e2f6f0
828
+ 07d9755cb618/e35599a6270d
829
+ 582634147bd3/9d8e7bbffeec
830
+ edc54d1d8380/129a2e273a00
831
+ ab1a02775273/74522669e62d
832
+ 00c4802978cc/0a4fb4e3e4ee
833
+ 8e324e942e64/4200216cc840
834
+ 1fbb6ed79dbf/01afeaeffdf7
835
+ b0ad2944784a/3f4886da2d99
836
+ b975f5d8d90e/735aba329141
837
+ 6eed1cdbb56e/b6d21abc0d73
838
+ 9ac218d1fcfe/3c5f004effbd
839
+ b295f3d8ff34/92e746486faa
840
+ 613c0bf1e1a5/d9c635aebfbc
841
+ 629db5c9ea76/fb0285228268
842
+ d4f5a34eaffb/f538ef65360b
843
+ f673adb91a15/578d5d64aae8
844
+ 6b99f6e28ffa/e8782563bcf7
845
+ 22a8722cc905/98b409fada79
846
+ 98d1236c9975/c8159efc4682
847
+ 8d22f76ce016/f6aa2395ff33
848
+ 0d5307d3479b/0a571708d325
849
+ 519a5760402e/848cfa5ea2d2
850
+ c3907f554dbc/40843c82875b
851
+ 89a199b96c0a/341a486665f9
852
+ b6c8a8776ba9/e2c903897df1
853
+ de6a640cdd5e/b45f0846eb09
854
+ 38d3c151ac4a/9184ca4f06a7
855
+ 4afe1d929c96/a14467191305
856
+ 747b205f7edb/14f1ed74cd4c
857
+ 692d2bb6d199/21c07b11947a
858
+ 5fa968b6297a/cbd943783c0f
859
+ be315d88502f/34e9df3aef7d
860
+ dcbfcb51de16/2463cc7e9ffe
861
+ 131c5b1e80b1/5c1fe4cf55fa
862
+ 03670f025ba0/28e72c8dd9f7
863
+ abb17dd35abe/51429341dd87
864
+ 159a3668d288/1a98d3a61ba2
865
+ 338e4e685b9f/5dc340036908
866
+ 0c8557147145/0c5d2f085ae7
867
+ 861d1d9240ac/3b1e6363d5ae
868
+ f1f15b327d31/37e7bf349501
869
+ 0824fbc900e8/e4679791b31d
870
+ 43fbfcc80bb9/65d76e4f53fe
871
+ 7bfc32f77e08/ee22b0cca931
872
+ 4ed6a69f97fa/f297d633775e
873
+ 4aa9ff069d67/164b3c27553b
874
+ fe86fddba87a/1322d8df5c8e
875
+ fd06e114baff/49fcc49d06e9
876
+ 29435386dee4/e429748e7f6b
877
+ 728cf8765ef0/fcbc9d7b2b18
878
+ 1adeedc6e428/7dba65827ffe
879
+ 09cac8d48f3d/79f893438661
880
+ 5011fc552393/b2b75cd504ca
881
+ 92c8f419fe0e/50db0457fcf4
882
+ 7f5aff57f0e6/6199aa6b1154
883
+ 20e5ca8a54ac/c4610c10316c
884
+ 8b9d5987d7a9/fe29541fc39d
885
+ 5ce4550dfcb2/2839bb3af37b
886
+ cfa69cd28346/9f11e7c481ae
887
+ 88c5b873f66c/b96e84f4445f
888
+ 00cf4b2b751b/540a03df1d81
889
+ 722cef1f45a9/d291e532ed4d
890
+ f758dab43d1f/f531ebf6aa3e
891
+ 33059ff5fc1f/02f2321db49e
892
+ 536ea012fd0f/24d8b9f7d2bf
893
+ 2512f20a2611/c2a997083c18
894
+ 0e984cfa9271/a7f28ac005be
895
+ 59d9a33132ac/9bb2d834d61e
896
+ d74822a8d716/673952504823
897
+ 084535453801/9789f8fb93e8
898
+ fa8e30993788/cde40435602a
899
+ 004a429fc727/e282793e4272
900
+ 9358ddf0b423/b3eafbed7120
901
+ 3b2c03d7a474/e590947e5210
902
+ d8c80d231c1e/80221ab4239f
903
+ c674e3114758/e1166ba38f8a
904
+ 66b13a0dff35/3400c052c186
905
+ fc5acb426404/f9a9750f96ea
906
+ 881dc817175e/759b6679f563
907
+ afa4c7bf3f19/2f14435467ed
908
+ 360b78bdc9c9/dbd54f7413e4
909
+ 0783218c1c2c/f103d1455385
910
+ 569e8cb14e19/90400b2c1461
911
+ 331a8168811c/37434187c041
912
+ eb6d4dc511d2/73372a89d495
913
+ 3d8ce6b80cb5/0f0339a5726e
914
+ f620513ea916/9e254df0d161
915
+ c4bcb3112065/45d50fb7ca49
916
+ 072df5d8112a/293266afce36
917
+ acbbfebee699/63ea88104c69
918
+ a646058006ba/bfaf6ab559ae
919
+ 6f226e8b89d0/9be987fb1915
920
+ 15de51795f8c/e1a6ee869fc4
921
+ 71de2c0ba21a/742fd46f4acb
922
+ 3f72ecbf2e11/17c44f85dd48
923
+ 741e8b67ec47/6d04fb8d7488
924
+ 4386ebd270a2/f9e93095ced2
925
+ 0af5610bf683/6ee796097155
926
+ 73b3c3869e7d/3d9801207c95
927
+ e18d101c081d/289cd45e89d8
928
+ b7dd19241d7d/7cea76752154
929
+ 4a9f6cf43918/275d80dca775
930
+ ccc88e93158a/17ccced826e3
931
+ 298b85b4a912/4450184e0e2c
932
+ 68bd57679780/0cf6ae1ee9a4
933
+ f8f6415debee/8a69e98dc50e
934
+ 37ea972a0aa1/bc8363db0e89
935
+ 5233a0c01815/ac3bdb1e65ef
936
+ e7a377645bae/3a022abb164d
937
+ b8aaea9c772b/fac75ae2f2a6
938
+ 7146ac33a85d/23ea66492849
939
+ 4eb88257a3c9/bcde208350de
940
+ b0c314108f96/7c13f301d608
941
+ 7202fc54f3c2/4e51edc32761
942
+ 4271dfae08b6/8d3cbf80c1ce
943
+ df0b6bc61367/d0180ba72f88
944
+ bde81b2222f2/4569fc0edb2f
945
+ 10485d76c805/65a79ad0b9d4
946
+ ab6f5aa37b3f/1a5516b73701
947
+ 42524b845dd7/a4d115fc9dc9
948
+ 4f968a90b21f/5a8788c12089
949
+ bb579184729d/7630473043f6
950
+ 112b8e9e54cd/d606d5193b73
951
+ 22a655c29ec8/b52bc9c20925
952
+ e1dfdf78de0a/9866d2d26124
953
+ 29d1cf6863a9/968072b2269a
954
+ a232528c5249/570ad5999801
955
+ a958a774a74e/0fa117cabe47
956
+ 152e381992d1/4f3885f49a57
957
+ 3dcf13978bd5/e0e6812c39e0
958
+ 15422ea8ba8f/ea3517a21a76
959
+ 910b0f5ebc07/72f124a8a394
960
+ e1a13580c296/65d6ff73a0a0
961
+ 6caafb14bc0c/55d56eb0ec51
962
+ 9100d4ab24e8/2652a09f5054
963
+ b454b0818c07/a244c2e1d0f9
964
+ 6834b6d40d27/13f58f71db8b
965
+ 31503eecd085/18a5362f5f08
966
+ f0eefdd3595b/937946574653
967
+ 235ecf426dd8/686fa038dde7
968
+ 3e3a95713ba6/333394a6e065
969
+ 3dffab658da4/e3a1d95d751d
970
+ b09eaad2e75a/3e360725c37a
971
+ 5f0efd9c2b4b/5faca54595c8
972
+ 406539bcd44e/e0fd55ae1726
973
+ 7f54ea06b8bc/0ec029a94ea9
974
+ 847e5be3c156/f2cfb3becfbf
975
+ 08e9793b0871/f54bf7e350f8
976
+ 2cee24120c14/e20dd7db576d
977
+ 19d31d7f076a/558768084200
978
+ 1417f4655ee3/887af01a742d
979
+ e07ae049f530/2b9693a29a44
980
+ bf50df197564/2bc858584a3b
981
+ 5ea1e4378c10/7979d6f813f6
982
+ 56e6b37e8807/9fb05819210a
983
+ cb12b7d18fd6/e72e6238b1ce
984
+ c0a3759f93e4/4d9466a1dcf0
985
+ 7ea75eeb227c/ab297c7a9a25
986
+ 52e53123ac43/ef28c6e4a45d
987
+ de9b4b84dae9/9ef1c830506f
988
+ a8eb13ea24c0/1c5bee76587f
989
+ 6153370af2e8/473f761425da
990
+ 83816269f4fd/b52f1cd8f3ab
991
+ 433de9f48203/8f372621c614
992
+ f03251482bbd/da2816acc320
993
+ cfc09d5b3e3a/229136b9a630
994
+ ebf77fb0d833/3ff23f4235a1
995
+ b6afed4265e4/579ccb2453e8
996
+ dd5d7fc35e3e/46d301027ebb
997
+ b6b0aedfe156/6de56256e1ff
998
+ f527c0b5fb75/7cb57c0eccb4
999
+ a1803bfc196c/4aa637f61f23
1000
+ da409c38de3a/3ee39a8d6ceb
1001
+ 09259de2747f/79c27f29ddf9
1002
+ 3eaa5bf61d97/0bdd63a977fc
1003
+ 49d2d4640b8d/5a8620b63763
1004
+ ad00a44e0b42/04250b34a0e4
1005
+ 3c3571dee457/f7b22bd17dc0
1006
+ b3890c338959/3e17d8a80676
1007
+ ee59f9929ef4/3a7ea18b5db8
1008
+ da066b39592a/857e9d8130c8
1009
+ 8f88f39fd8fc/3d2f03f03887
1010
+ ff7234715ecb/ce7dc3c497b0
1011
+ 9424e8ceeafb/044bfd77ddf7
1012
+ 1f527838137b/bdca4a32d143
1013
+ 2e7545970fce/8a2ce4da7407
1014
+ f37f094554f3/9d16d40a0950
1015
+ 761454583cf3/e5ead5198d80
1016
+ 8ada6cc02d0c/cff626d795eb
1017
+ f13bd4ef05f9/d155fb01ebb3
1018
+ a80c4cf5b981/5977462e8382
1019
+ 261dbd842df2/c8f1eaddcaef
1020
+ a8c493d0104b/c89d1dc9577d
1021
+ 026051220e43/4e325e9b47ae
1022
+ 0e81dd7637d7/6b10844992ef
1023
+ b8e98e53befd/c02aee845193
1024
+ af1685f05100/a9d95d772d77
1025
+ c5561b55bab7/5e803ef5f47f
1026
+ 913d192a50b5/cf9943a855e3
1027
+ 08d0a66f40b9/8998b9737df3
1028
+ 817d3f6f17f1/709d25128c56
1029
+ 539ba15a6061/bfbd618586d7
1030
+ 5fa8dca7168c/eeceabf7dc4b
1031
+ c899f992826f/b4a5d4cdd24f
1032
+ 7e209fbfc30a/228cfab99c18
1033
+ cc5d7b5ffe5f/a65362b944c5
1034
+ 35fe923f0708/1e9d49ba49ce
1035
+ 6a7893a95949/c857791a52d9
1036
+ 5ccb9f8bb152/95c6bd867dd3
1037
+ 9fbdc1b9addd/4fef27a2bcfe
1038
+ f751cd1dd4cb/30fc48456017
1039
+ b4548bee81e8/ac1aea5d7662
1040
+ 2f8bf4c9f5a9/84fd26e74fc8
1041
+ 53a0ebc8cdd7/1f5f757e8352
1042
+ 19bf83635edc/80fedad5c461
1043
+ f4b30d6e69ee/f33b8e7eb273
1044
+ feb80bdbd4c8/85aee1e38c3e
1045
+ 38c043d7c241/b05596a5fc1a
1046
+ d87cd69ba8aa/467721e1e585
1047
+ 8660c476ad4e/ba8afd325db5
1048
+ 3703b9656a3b/99dee6d5d778
1049
+ b0ed58591574/07cab4e9eb8d
1050
+ f6dafd2c360b/52b4757cf0bf
1051
+ 2b4c137dd462/02e92d8399e7
1052
+ d78eba22d7c5/e50aa5e6dbd1
1053
+ 01d03c276180/1a3e3e8c6cc6
1054
+ cc2b71c37954/0afe325331cc
1055
+ 0d282fe7068c/e15e1ad9fa6f
1056
+ e5a9e3974157/f71df5640a8d
1057
+ e88537baf51e/0ba4ebb2950c
1058
+ 7badf5d1437f/9679b4aa677f
1059
+ 8940602358e0/54fb0877d030
1060
+ 1481013caabc/ea567c4fb6b7
1061
+ e21e87360463/31f3791efb97
1062
+ 3739666fd620/7bfbc36c4dc3
dfr.py ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+
3
+ import torch
4
+ import torch.nn as nn
5
+ import torch.nn.functional as F
6
+
7
+ from .vision_encoders import build_vision_encoder
8
+
9
+ logger = logging.getLogger("glint")
10
+
11
+
12
+ def build_projector(config):
13
+ if config.model_type == "mlp":
14
+ model = MLP(config)
15
+ else:
16
+ raise NotImplementedError()
17
+
18
+ return model
19
+
20
+
21
+ def get_activation(activation_name):
22
+ activation_map = {"silu": nn.SiLU(), "relu": nn.ReLU(), "gelu": nn.GELU(), "tanh": nn.Tanh()}
23
+ activation_name = activation_name.lower()
24
+ if activation_name not in activation_map:
25
+ raise ValueError(f"Unknown activation: {activation_name}. Available: {list(activation_map.keys())}")
26
+ return activation_map[activation_name]
27
+
28
+
29
+ class MLP(nn.Module):
30
+ def __init__(self, config):
31
+ super().__init__()
32
+ self.config = config
33
+
34
+ activation = get_activation(getattr(config, "activation", "silu"))
35
+ dropout = getattr(config, "dropout", 0.0)
36
+ num_layers = getattr(config, "num_layers", 3)
37
+
38
+ layers = []
39
+ layers.append(nn.Linear(config.input_dim, config.hidden_dim))
40
+ layers.append(activation)
41
+ if dropout > 0:
42
+ layers.append(nn.Dropout(dropout))
43
+
44
+ for _ in range(num_layers - 2):
45
+ layers.append(nn.Linear(config.hidden_dim, config.hidden_dim))
46
+ layers.append(activation)
47
+ if dropout > 0:
48
+ layers.append(nn.Dropout(dropout))
49
+
50
+ layers.append(nn.Linear(config.hidden_dim, config.out_dim))
51
+
52
+ self.mlp = nn.Sequential(*layers)
53
+
54
+ def forward(self, x):
55
+ return self.mlp(x)
56
+
57
+
58
+ class DFRLoss(nn.Module):
59
+ def __init__(
60
+ self,
61
+ use_token_wise=True,
62
+ **kwargs,
63
+ ):
64
+ super().__init__()
65
+ self.use_token_wise = use_token_wise
66
+
67
+ def forward(
68
+ self,
69
+ proj_student_features,
70
+ teacher_features,
71
+ ):
72
+ outputs = dict()
73
+
74
+ if isinstance(proj_student_features, list):
75
+ total_loss = 0.0
76
+ n = 0
77
+ for ps, ts in zip(proj_student_features, teacher_features):
78
+ if isinstance(ps, dict):
79
+ for k in ps.keys():
80
+ total_loss += self._compute_loss(ps[k], ts[k])
81
+ n += 1
82
+ else:
83
+ total_loss += self._compute_loss(ps, ts)
84
+ n += 1
85
+ loss = total_loss / max(n, 1)
86
+
87
+ elif isinstance(proj_student_features, dict):
88
+ total_loss = 0
89
+ num_pairs = len(proj_student_features)
90
+ for key in proj_student_features.keys():
91
+ proj_student = proj_student_features[key]
92
+ teacher = teacher_features[key]
93
+ total_loss += self._compute_loss(proj_student, teacher)
94
+ loss = total_loss / num_pairs
95
+ else:
96
+ loss = self._compute_loss(proj_student_features, teacher_features)
97
+
98
+ losses = {
99
+ "dfr_loss": loss,
100
+ "loss": loss,
101
+ }
102
+ outputs["losses"] = losses
103
+
104
+ return outputs
105
+
106
+ def _compute_loss(self, proj_student, teacher):
107
+ proj_student = F.normalize(proj_student, p=2, dim=-1)
108
+ teacher = F.normalize(teacher, p=2, dim=-1)
109
+
110
+ if self.use_token_wise:
111
+ similarity = torch.sum(proj_student * teacher, dim=-1)
112
+ loss = (1.0 - similarity).mean()
113
+ else:
114
+ proj_student_global = proj_student.mean(dim=1)
115
+ teacher_global = teacher.mean(dim=1)
116
+ similarity = torch.sum(proj_student_global * teacher_global, dim=-1)
117
+ loss = (1.0 - similarity).mean()
118
+
119
+ loss = loss.mean()
120
+ return loss
121
+
122
+
123
+ class DFRModule(nn.Module):
124
+ def __init__(self, dfr_config):
125
+ super().__init__()
126
+ self.config = dfr_config
127
+ self.use_cache = getattr(dfr_config, "use_cache", False)
128
+
129
+ if not self.use_cache:
130
+ self.vision_teacher_model = build_vision_encoder(dfr_config.vfm_teacher_config)
131
+ else:
132
+ logger.info("DFRModule: use_cache=True, skipping teacher model loading")
133
+
134
+ self.layer_mapping = dfr_config.layer_mapping
135
+ student_layers = self.layer_mapping["student_layers"]
136
+ teacher_layers = self.layer_mapping["teacher_layers"]
137
+
138
+ self._validate_layer_mapping(student_layers, teacher_layers)
139
+ self.num_layer_pairs = len(student_layers)
140
+
141
+ self._build_projectors(dfr_config.projector_config, student_layers, teacher_layers)
142
+
143
+ def _validate_layer_mapping(self, student_layers, teacher_layers):
144
+ if len(student_layers) != len(teacher_layers):
145
+ raise ValueError(
146
+ f"student_layer and teacher_layer must have same length. "
147
+ f"Got {len(student_layers)} and {len(teacher_layers)}"
148
+ )
149
+
150
+ def _build_projectors(self, projector_config, student_layers, teacher_layers):
151
+ use_multiple_projectors = self.layer_mapping.get("use_multiple_projectors", False)
152
+
153
+ if use_multiple_projectors and self.num_layer_pairs > 1:
154
+ self.projector = nn.ModuleDict()
155
+ for s_layer, t_layer in zip(student_layers, teacher_layers):
156
+ projector_key = f"projector_{s_layer}_{t_layer}"
157
+ self.projector[projector_key] = build_projector(projector_config)
158
+ self.use_multiple_projectors = True
159
+ else:
160
+ self.projector = build_projector(projector_config)
161
+ self.use_multiple_projectors = False
162
+
163
+ def forward(self, pixel_values, student_hidden_states, cached_teacher_features=None):
164
+ student_layers = self.layer_mapping["student_layers"]
165
+ teacher_layers = self.layer_mapping["teacher_layers"]
166
+
167
+ if cached_teacher_features is not None:
168
+ teacher_hidden_states = cached_teacher_features
169
+ else:
170
+ with torch.no_grad():
171
+ teacher_outputs = self.vision_teacher_model(pixel_values, output_hidden_states=True)
172
+
173
+ results = {
174
+ "teacher_features": {},
175
+ "proj_student_features": {},
176
+ }
177
+
178
+ for s_layer, t_layer in zip(student_layers, teacher_layers):
179
+ student_feat = student_hidden_states[s_layer]
180
+
181
+ if cached_teacher_features is not None:
182
+ teacher_feat = teacher_hidden_states[t_layer]
183
+ teacher_feat = teacher_feat.to(dtype=student_feat.dtype)
184
+ else:
185
+ teacher_feat = teacher_outputs.hidden_states[t_layer]
186
+
187
+ proj_student_feat = self._project_student_features(student_feat, s_layer, t_layer)
188
+
189
+ results["teacher_features"][f"layer_{s_layer}_{t_layer}"] = teacher_feat
190
+ results["proj_student_features"][f"layer_{s_layer}_{t_layer}"] = proj_student_feat
191
+
192
+ return results
193
+
194
+ def _project_student_features(self, student_feat, s_layer, t_layer):
195
+ if self.use_multiple_projectors:
196
+ projector_key = f"projector_{s_layer}_{t_layer}"
197
+ return self.projector[projector_key](student_feat)
198
+ else:
199
+ return self.projector(student_feat)
inference.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Score a sentence against a chest CT volume, save its similarity map as NIfTI and score the 18 CT-RATE findings.
2
+
3
+ python inference.py --volume volume.nii.gz --text "There is a lung nodule."
4
+ """
5
+
6
+ import argparse
7
+ import os
8
+ import warnings
9
+
10
+ import torch
11
+ from transformers import AutoModel, AutoTokenizer
12
+
13
+ from utils import (
14
+ load_ct_volume,
15
+ model_inference,
16
+ model_inference_multiple_text,
17
+ save_similarity_map,
18
+ similarity_scores_to_volume,
19
+ )
20
+
21
+ warnings.filterwarnings("ignore", category=UserWarning)
22
+
23
+ REPO_DIR = os.path.dirname(os.path.abspath(__file__))
24
+
25
+ CT_RATE_LABELS = [
26
+ "Medical material",
27
+ "Arterial wall calcification",
28
+ "Cardiomegaly",
29
+ "Pericardial effusion",
30
+ "Coronary artery wall calcification",
31
+ "Hiatal hernia",
32
+ "Lymphadenopathy",
33
+ "Emphysema",
34
+ "Atelectasis",
35
+ "Lung nodule",
36
+ "Lung opacity",
37
+ "Pulmonary fibrotic sequela",
38
+ "Pleural effusion",
39
+ "Mosaic attenuation pattern",
40
+ "Peribronchial thickening",
41
+ "Consolidation",
42
+ "Bronchiectasis",
43
+ "Interlobular septal thickening",
44
+ ]
45
+
46
+
47
+ def load_model(device=None, dtype=torch.float32):
48
+ device = device or ("cuda" if torch.cuda.is_available() else "cpu")
49
+ tokenizer = AutoTokenizer.from_pretrained(REPO_DIR)
50
+ model = AutoModel.from_pretrained(REPO_DIR, trust_remote_code=True, dtype=dtype).to(device).eval()
51
+ return {"tokenizer": tokenizer, "model": model}
52
+
53
+
54
+ def main():
55
+ parser = argparse.ArgumentParser(description=__doc__.splitlines()[0])
56
+ parser.add_argument("--volume", default="volume.nii.gz", help="NIfTI CT volume")
57
+ parser.add_argument("--text", default="There is a lung nodule.")
58
+ parser.add_argument("--output", default="similarity_map.nii.gz", help="similarity map (NIfTI)")
59
+ parser.add_argument(
60
+ "--ct_output", default="ct_preprocessed.nii.gz", help="preprocessed CT on the same grid (NIfTI)"
61
+ )
62
+ parser.add_argument(
63
+ "--raw_spacing", type=float, nargs=3, default=None, help="voxel spacing if the NIfTI affine is unreliable"
64
+ )
65
+ args = parser.parse_args()
66
+
67
+ models = load_model()
68
+ pixel_values, affine = load_ct_volume(args.volume, raw_spacing=args.raw_spacing, return_affine=True)
69
+
70
+ prob, scores = model_inference(pixel_values, args.text, **models)
71
+ print(f"{args.text!r}: probability {prob.item():.3f}")
72
+ volume = similarity_scores_to_volume(scores, models["model"])
73
+ save_similarity_map(volume, affine, args.output, pixel_values, args.ct_output)
74
+ print(f"similarity map saved to {args.output} (CT: {args.ct_output})")
75
+
76
+ prompts = [f"There is {label}" for label in CT_RATE_LABELS] # zero-shot evaluation prompts
77
+ probs, _ = model_inference_multiple_text(pixel_values, prompts, **models)
78
+ for label, p in zip(CT_RATE_LABELS, probs.flatten().tolist()):
79
+ print(f" {label:42s} {p:.3f}")
80
+
81
+
82
+ if __name__ == "__main__":
83
+ main()
losses.py ADDED
@@ -0,0 +1,607 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+
3
+ import numpy as np
4
+ import torch
5
+ import torch.distributed as dist
6
+ import torch.nn as nn
7
+ import torch.nn.functional as F
8
+ from entmax import entmax_bisect
9
+
10
+ from .dfr import DFRLoss # noqa: F401
11
+
12
+ logger = logging.getLogger("glint")
13
+
14
+
15
+ def pad_and_gather(tensor):
16
+ local_size = torch.tensor(tensor.size(), device=tensor.device)
17
+
18
+ all_sizes = [torch.zeros_like(local_size) for _ in range(dist.get_world_size())]
19
+ dist.all_gather(all_sizes, local_size)
20
+
21
+ max_size = torch.stack(all_sizes).max(dim=0)[0]
22
+
23
+ padded_tensor = torch.zeros(max_size.tolist(), device=tensor.device)
24
+ padded_tensor[: local_size[0]] = tensor
25
+
26
+ gathered_tensors = dist.nn.all_gather(padded_tensor)
27
+
28
+ gathered_tensors = [g[: s[0]] for g, s in zip(gathered_tensors, all_sizes)]
29
+
30
+ gathered_tensors = torch.cat(gathered_tensors, dim=0)
31
+
32
+ return gathered_tensors
33
+
34
+
35
+ def pad_and_gather_2nd_dim(tensor, mask):
36
+ local_size = torch.tensor(tensor.size(), device=tensor.device)
37
+
38
+ if local_size[1] == 0:
39
+ local_size = torch.tensor([local_size[0], 1, local_size[2]], device=tensor.device)
40
+ tensor = torch.zeros(
41
+ (local_size[0], 1, local_size[2]),
42
+ device=tensor.device,
43
+ requires_grad=True,
44
+ )
45
+ mask = torch.zeros((local_size[0], 1), device=mask.device, dtype=torch.bool)
46
+
47
+ all_sizes = [torch.zeros_like(local_size) for _ in range(dist.get_world_size())]
48
+ dist.all_gather(all_sizes, local_size)
49
+
50
+ max_len = max([i[1].item() for i in all_sizes])
51
+
52
+ padded_tensor = torch.zeros((local_size[0], max_len, local_size[2]), device=tensor.device)
53
+ padded_tensor[:, : local_size[1]] = tensor
54
+
55
+ padded_mask = torch.zeros((local_size[0], max_len), device=mask.device)
56
+ padded_mask[:, : local_size[1]] = mask
57
+
58
+ gathered_tensors = dist.nn.all_gather(padded_tensor)
59
+ gathered_masks = dist.nn.all_gather(padded_mask)
60
+
61
+ gathered_tensors = torch.cat(gathered_tensors, dim=0)
62
+ gathered_masks = torch.cat(gathered_masks, dim=0)
63
+
64
+ return gathered_tensors, gathered_masks
65
+
66
+
67
+ def _build_projection(embed_dim, hidden_dim, mode="mlp"):
68
+ if mode == "identity":
69
+ return nn.Identity()
70
+ if mode == "linear":
71
+ return nn.Linear(embed_dim, hidden_dim)
72
+ if mode == "mlp":
73
+ return nn.Sequential(
74
+ nn.Linear(embed_dim, hidden_dim),
75
+ nn.GELU(),
76
+ nn.Linear(hidden_dim, embed_dim),
77
+ )
78
+ raise ValueError(f"Unknown projection mode: {mode}")
79
+
80
+
81
+ class GatedConfidenceShift(nn.Module):
82
+ def __init__(
83
+ self,
84
+ embed_dim=768,
85
+ gate_hidden_dim=768,
86
+ sem_hidden_dim=768,
87
+ gate_proj_mode="mlp",
88
+ sem_proj_mode="identity",
89
+ gate_log_temperature=2.302585,
90
+ shift_w_init=0.0,
91
+ shift_w_no_weight_decay=True,
92
+ ):
93
+ super().__init__()
94
+
95
+ self.text_gate_proj = _build_projection(embed_dim, gate_hidden_dim, gate_proj_mode)
96
+ self.vision_gate_proj = _build_projection(embed_dim, gate_hidden_dim, gate_proj_mode)
97
+ self.gate_log_temperature = nn.Parameter(torch.FloatTensor([gate_log_temperature]))
98
+
99
+ self.text_sem_proj = _build_projection(embed_dim, sem_hidden_dim, sem_proj_mode)
100
+ self.vision_sem_proj = _build_projection(embed_dim, sem_hidden_dim, sem_proj_mode)
101
+
102
+ self.shift_w = nn.Parameter(torch.tensor(float(shift_w_init)))
103
+ if shift_w_no_weight_decay:
104
+ self.shift_w._no_weight_decay = True
105
+
106
+ def _compute_gate_evidence(self, gate):
107
+ w = entmax_bisect(gate, alpha=2.0, n_iter=50, dim=-1)
108
+ return (w * gate).sum(dim=-1)
109
+
110
+ def forward(self, text_features, vision_tokens, need_attn_weights=False, repeat=True, **kwargs):
111
+ if repeat:
112
+ query = text_features.unsqueeze(0).expand(vision_tokens.shape[0], text_features.shape[0], -1)
113
+ else:
114
+ assert text_features.dim() == 3
115
+ query = text_features
116
+
117
+ text_gate = F.normalize(self.text_gate_proj(query), p=2, dim=-1)
118
+ vision_gate = F.normalize(self.vision_gate_proj(vision_tokens), p=2, dim=-1)
119
+ gate_scores = torch.bmm(text_gate, vision_gate.permute(0, 2, 1))
120
+
121
+ gate = torch.sigmoid(gate_scores * self.gate_log_temperature.exp())
122
+ weight = gate
123
+
124
+ gate_evidence = self._compute_gate_evidence(gate)
125
+ shift = self.shift_w * gate_evidence
126
+
127
+ sem_text_norm = F.normalize(self.text_sem_proj(query), p=2, dim=-1)
128
+ sem_patches_norm = F.normalize(self.vision_sem_proj(vision_tokens), p=2, dim=-1)
129
+
130
+ aggregated = torch.bmm(weight, sem_patches_norm)
131
+ aggregated_norm = F.normalize(aggregated, p=2, dim=-1)
132
+ cos_sim = (sem_text_norm * aggregated_norm).sum(dim=-1)
133
+ logits = (cos_sim + shift).T
134
+
135
+ if need_attn_weights:
136
+ sem_scores = torch.bmm(sem_text_norm, sem_patches_norm.permute(0, 2, 1))
137
+ if "loss_temperature" in kwargs:
138
+ scaled_sem = (sem_scores / kwargs["loss_temperature"]).sigmoid()
139
+ elif "logit_scale" in kwargs:
140
+ scaled_sem = (sem_scores * kwargs["logit_scale"] + kwargs.get("logit_bias", 0.0)).sigmoid()
141
+ else:
142
+ scaled_sem = sem_scores.sigmoid()
143
+
144
+ similarity_scores = [scaled_sem * weight]
145
+ _comp = {"gate": gate, "semantic": scaled_sem, "weight": weight}
146
+ else:
147
+ similarity_scores = None
148
+ _comp = None
149
+
150
+ return logits, similarity_scores, _comp
151
+
152
+
153
+ def multi_positive_nce_loss(
154
+ logits,
155
+ group_map,
156
+ temperature,
157
+ additional_neg_mask=None,
158
+ ):
159
+ scaled_logits = torch.exp(logits / temperature)
160
+ np_total = group_map.size(0)
161
+ pos_logits = scaled_logits[torch.arange(np_total), group_map]
162
+
163
+ row_loss = get_row_loss(
164
+ scaled_logits[:np_total],
165
+ pos_logits,
166
+ )
167
+
168
+ neg_mask = torch.ones_like(scaled_logits)
169
+
170
+ if additional_neg_mask is not None:
171
+ neg_mask[-len(additional_neg_mask) :, :] = additional_neg_mask
172
+
173
+ neg_mask[torch.arange(np_total), group_map] = 0
174
+
175
+ column_loss = get_col_loss(
176
+ scaled_logits,
177
+ pos_logits,
178
+ neg_mask,
179
+ group_map,
180
+ )
181
+
182
+ losses = {}
183
+ losses["per_text_loss"] = row_loss.mean()
184
+ losses["per_image_loss"] = column_loss.mean()
185
+
186
+ losses["mpnce_loss"] = (losses["per_text_loss"] + losses["per_image_loss"]) / 2
187
+
188
+ losses["loss"] = losses["mpnce_loss"]
189
+
190
+ return losses
191
+
192
+
193
+ def multi_positive_nce_local_loss(
194
+ logits_per_text,
195
+ logits_per_image,
196
+ group_map,
197
+ local_group_map,
198
+ local_group_map_per_image,
199
+ temperature,
200
+ local_rank,
201
+ B_local,
202
+ additional_neg_mask=None,
203
+ ):
204
+ logits_per_text = torch.exp(logits_per_text / temperature)
205
+ pos_logits_per_text = logits_per_text[torch.arange(logits_per_text.size(0)), local_group_map]
206
+
207
+ row_loss = get_row_loss(
208
+ logits_per_text,
209
+ pos_logits_per_text,
210
+ )
211
+
212
+ logits_per_image = torch.exp(logits_per_image / temperature)
213
+
214
+ local_start_idx = torch.where(group_map == local_rank * B_local)[0][0]
215
+ local_end_idx = local_start_idx + len(local_group_map_per_image)
216
+
217
+ pos_text_indices = torch.LongTensor(range(local_start_idx, local_end_idx))
218
+
219
+ pos_logits_per_image = logits_per_image[pos_text_indices, local_group_map_per_image]
220
+
221
+ neg_mask = torch.ones_like(logits_per_image)
222
+
223
+ if additional_neg_mask is not None:
224
+ neg_mask[-len(additional_neg_mask) :, :] = additional_neg_mask
225
+
226
+ neg_mask[pos_text_indices, local_group_map_per_image] = 0
227
+
228
+ column_loss = get_col_loss(
229
+ logits_per_image,
230
+ pos_logits_per_image,
231
+ neg_mask,
232
+ local_group_map_per_image,
233
+ )
234
+
235
+ losses = {}
236
+ losses["per_text_loss"] = row_loss.mean()
237
+ losses["per_image_loss"] = column_loss.mean()
238
+
239
+ losses["mpnce_loss"] = (losses["per_text_loss"] + losses["per_image_loss"]) / 2
240
+
241
+ losses["loss"] = losses["mpnce_loss"]
242
+ return losses
243
+
244
+
245
+ def get_row_loss(
246
+ logits: torch.Tensor,
247
+ pos_logits: torch.Tensor,
248
+ eps: float = 1e-8,
249
+ ):
250
+ row_sum_logits = logits.sum(dim=1)
251
+ p_row = pos_logits / (row_sum_logits + eps)
252
+
253
+ return -torch.log(p_row + eps)
254
+
255
+
256
+ def get_col_loss(
257
+ logits: torch.Tensor,
258
+ pos_logits: torch.Tensor,
259
+ neg_mask: torch.Tensor,
260
+ group_map: torch.Tensor,
261
+ eps: float = 1e-8,
262
+ ):
263
+ neg_logits = logits * neg_mask
264
+ sum_neg_logits = neg_logits.sum(dim=0)
265
+ sum_neg_logits = sum_neg_logits[group_map]
266
+ p_column = pos_logits / (pos_logits + sum_neg_logits + eps)
267
+
268
+ return -torch.log(p_column + eps)
269
+
270
+
271
+ class LossFunctions(nn.Module):
272
+ def __init__(self, loss_cfg, **kwargs):
273
+ super().__init__()
274
+ self.loss_ratio = dict()
275
+ self.loss_dict = nn.ModuleDict()
276
+ for loss_type, ratio in zip(loss_cfg["apply"], loss_cfg["ratio"]):
277
+ logger.info(f"Build {loss_type} loss function ...")
278
+ if loss_cfg[loss_type] is None:
279
+ loss_cfg[loss_type] = dict()
280
+ if torch.distributed.is_available() and torch.distributed.is_initialized():
281
+ loss_cfg[loss_type]["rank"] = torch.distributed.get_rank()
282
+ loss_cfg[loss_type]["world_size"] = torch.distributed.get_world_size()
283
+ self.loss_dict[loss_type] = LOSS_REGISTRY[loss_type](**loss_cfg[loss_type])
284
+ self.loss_ratio[loss_type] = ratio
285
+
286
+
287
+ class AlignmentLoss(nn.Module):
288
+ def __init__(
289
+ self,
290
+ vl_logit_type="gate_confidence_shift",
291
+ vl_logit_kwargs={},
292
+ loss_type="mpnce",
293
+ loss_kwargs={},
294
+ local_loss=False,
295
+ **kwargs,
296
+ ):
297
+ super().__init__()
298
+
299
+ self.vl_logit_type = vl_logit_type
300
+ self.init_vl_logit_kwargs(vl_logit_kwargs)
301
+
302
+ self.loss_type = loss_type
303
+ self.init_loss_kwargs(loss_kwargs)
304
+
305
+ self.local_loss = local_loss
306
+
307
+ def forward(
308
+ self,
309
+ enc_sents,
310
+ vision_tokens,
311
+ forward_text_model=None,
312
+ ddp_gather=True,
313
+ need_attn_weights=False,
314
+ compute_loss=True,
315
+ text_feats_list=None,
316
+ neg_enc_sents=None,
317
+ neg_text_feats_list=None,
318
+ **kwargs,
319
+ ):
320
+ outputs = {}
321
+
322
+ B_local = len(vision_tokens)
323
+ local_rank = dist.get_rank() if (ddp_gather and dist.is_initialized()) else 0
324
+
325
+ text_features, group_map, local_text_features, local_group_map = self.get_text_features(
326
+ enc_sents, forward_text_model, ddp_gather, text_feats_list
327
+ )
328
+
329
+ local_vision_tokens = vision_tokens
330
+ if ddp_gather and dist.is_initialized():
331
+ vision_tokens = torch.cat(dist.nn.all_gather(vision_tokens), dim=0)
332
+
333
+ if not compute_loss:
334
+ logits_outputs = self.compute_logits(text_features, vision_tokens, need_attn_weights)
335
+
336
+ logits = logits_outputs["logits"]
337
+
338
+ if self.loss_type == "mpnce":
339
+ logits = logits / self.loss_temperature.exp()
340
+
341
+ logits_outputs["logits"] = logits
342
+ outputs.update(logits_outputs)
343
+ return outputs
344
+
345
+ if neg_enc_sents or neg_text_feats_list:
346
+ hidden_dim = vision_tokens.shape[-1]
347
+
348
+ (
349
+ neg_text_features,
350
+ neg_text_mask,
351
+ local_neg_text_features,
352
+ local_neg_text_mask,
353
+ ) = self.get_neg_text_features(
354
+ neg_enc_sents,
355
+ forward_text_model,
356
+ hidden_dim,
357
+ ddp_gather,
358
+ neg_text_feats_list,
359
+ device=vision_tokens.device,
360
+ )
361
+ else:
362
+ (
363
+ neg_text_features,
364
+ neg_text_mask,
365
+ local_neg_text_features,
366
+ local_neg_text_mask,
367
+ ) = (None, None, None, None)
368
+
369
+ if not (self.local_loss and self.training):
370
+ logits_outputs = self.compute_logits(text_features, vision_tokens, need_attn_weights)
371
+ logits = logits_outputs["logits"]
372
+
373
+ if neg_text_features is not None:
374
+ neg_logits_outputs = self.compute_logits(
375
+ neg_text_features, vision_tokens, need_attn_weights, repeat=False
376
+ )
377
+
378
+ logits = torch.cat([logits, neg_logits_outputs["logits"]], dim=0)
379
+
380
+ outputs["logits"] = logits
381
+
382
+ losses = self.compute_loss(
383
+ logits,
384
+ group_map,
385
+ additional_neg_mask=neg_text_mask,
386
+ text_features=text_features,
387
+ )
388
+
389
+ else:
390
+ logits_outputs_per_text = self.compute_logits(local_text_features, vision_tokens, need_attn_weights)
391
+ logits_per_text = logits_outputs_per_text["logits"]
392
+ outputs["logits_per_text"] = logits_per_text
393
+
394
+ logits_outputs_per_image = self.compute_logits(text_features, local_vision_tokens, need_attn_weights)
395
+ logits_per_image = logits_outputs_per_image["logits"]
396
+
397
+ if local_neg_text_features is not None:
398
+ neg_logits_outputs = self.compute_logits(
399
+ local_neg_text_features,
400
+ local_vision_tokens,
401
+ need_attn_weights,
402
+ repeat=False,
403
+ )
404
+
405
+ logits_per_image = torch.cat([logits_per_image, neg_logits_outputs["logits"]], dim=0)
406
+
407
+ outputs["logits_per_image"] = logits_per_image
408
+ local_group_map_per_image = local_group_map - local_rank * B_local
409
+
410
+ losses = self.compute_local_loss(
411
+ logits_per_text,
412
+ logits_per_image,
413
+ group_map,
414
+ local_group_map,
415
+ local_group_map_per_image,
416
+ local_rank,
417
+ B_local,
418
+ additional_neg_mask=local_neg_text_mask,
419
+ text_features=text_features,
420
+ )
421
+
422
+ outputs["losses"] = losses
423
+ return outputs
424
+
425
+ def get_feats_list(self, text_feats_list, ddp_gather=True):
426
+ text_features = list()
427
+ group_list = list()
428
+
429
+ B_local = sum([len(i) for i in text_feats_list])
430
+ local_rank = dist.get_rank() if (ddp_gather and dist.is_initialized()) else 0
431
+
432
+ local_index = 0
433
+ for i, features in enumerate(text_feats_list):
434
+ for j, feats in enumerate(features):
435
+ text_features.append(feats)
436
+ group_list.extend([local_index + local_rank * B_local] * feats.size(0))
437
+ local_index += 1
438
+
439
+ return text_features, group_list
440
+
441
+ def get_text_features(
442
+ self,
443
+ enc_sents,
444
+ forward_text_model,
445
+ ddp_gather=True,
446
+ text_feats_list=None,
447
+ ):
448
+ if text_feats_list is not None:
449
+ text_features, group_list = self.get_feats_list(text_feats_list, ddp_gather)
450
+ else:
451
+ text_features = list()
452
+ group_list = list()
453
+
454
+ B_local = len(enc_sents)
455
+ local_rank = dist.get_rank() if (ddp_gather and dist.is_initialized()) else 0
456
+
457
+ for i, kp in enumerate(enc_sents):
458
+ feats = forward_text_model(kp)
459
+
460
+ feat = feats["text_features"]
461
+ text_features.append(feat)
462
+
463
+ global_index = i + local_rank * B_local
464
+ group_list.extend([global_index] * feat.size(0))
465
+
466
+ text_features = torch.cat(text_features, dim=0)
467
+ group_map = torch.tensor(group_list, device=text_features.device)
468
+
469
+ local_text_features = text_features
470
+ local_group_map = group_map
471
+
472
+ if ddp_gather and dist.is_initialized():
473
+ text_features = pad_and_gather(text_features)
474
+
475
+ group_map = pad_and_gather(group_map)
476
+ group_map = group_map.long()
477
+
478
+ return text_features, group_map, local_text_features, local_group_map
479
+
480
+ def get_neg_feats_list(self, neg_text_feats_list, hidden_dim=None, device=None):
481
+ text_features = list()
482
+ for i, features in enumerate(neg_text_feats_list):
483
+ for j, feats in enumerate(features):
484
+ text_features.append(feats)
485
+
486
+ return text_features
487
+
488
+ def get_neg_text_features(
489
+ self,
490
+ neg_enc_sents,
491
+ forward_text_model,
492
+ hidden_dim,
493
+ ddp_gather=True,
494
+ neg_text_feats_list=None,
495
+ device=None,
496
+ ):
497
+ if neg_text_feats_list is not None:
498
+ neg_feats_list = self.get_neg_feats_list(neg_text_feats_list, hidden_dim, device)
499
+ else:
500
+ neg_feats_list = list()
501
+
502
+ for i, kp in enumerate(neg_enc_sents):
503
+ if isinstance(kp["input_ids"], torch.Tensor):
504
+ feats = forward_text_model(kp)
505
+ feat = feats["text_features"]
506
+ else:
507
+ feat = torch.zeros((0, hidden_dim)).to(device)
508
+
509
+ neg_feats_list.append(feat)
510
+
511
+ neg_text_features = torch.nn.utils.rnn.pad_sequence(neg_feats_list, batch_first=True, padding_value=0)
512
+
513
+ neg_text_mask = torch.zeros(
514
+ len(neg_feats_list),
515
+ neg_text_features.size(1),
516
+ dtype=torch.bool,
517
+ device=neg_text_features.device,
518
+ )
519
+ for i, feat in enumerate(neg_feats_list):
520
+ neg_text_mask[i, : feat.size(0)] = True
521
+
522
+ local_neg_text_features = neg_text_features
523
+ local_neg_text_mask = neg_text_mask
524
+
525
+ if ddp_gather and dist.is_initialized():
526
+ neg_text_features, neg_text_mask = pad_and_gather_2nd_dim(neg_text_features, neg_text_mask)
527
+
528
+ local_neg_text_mask = local_neg_text_mask.T
529
+ neg_text_mask = neg_text_mask.T
530
+
531
+ return (
532
+ neg_text_features,
533
+ neg_text_mask,
534
+ local_neg_text_features,
535
+ local_neg_text_mask,
536
+ )
537
+
538
+ def init_vl_logit_kwargs(self, vl_logit_kwargs):
539
+ self.vl_logit_kwargs = {}
540
+ if self.vl_logit_type != "gate_confidence_shift":
541
+ raise NotImplementedError(f"Unsupported vl_logit_type: {self.vl_logit_type}")
542
+ vl_logit_kwargs.pop("attn_temperature", None)
543
+ self.sga = GatedConfidenceShift(**vl_logit_kwargs)
544
+
545
+ def compute_logits(self, text_features, vision_tokens, need_attn_weights, repeat=True):
546
+ outputs = {}
547
+
548
+ sim_scale_kwargs = {}
549
+ if hasattr(self, "loss_temperature"):
550
+ sim_scale_kwargs["loss_temperature"] = self.loss_temperature.exp()
551
+
552
+ logits, attn_weights_list, sim_components = self.sga(
553
+ text_features,
554
+ vision_tokens,
555
+ need_attn_weights,
556
+ repeat=repeat,
557
+ **sim_scale_kwargs,
558
+ **self.vl_logit_kwargs,
559
+ )
560
+ outputs["logits"] = logits
561
+ outputs["attn_weights"] = attn_weights_list
562
+ if sim_components is not None:
563
+ outputs["sim_components"] = sim_components
564
+ return outputs
565
+
566
+ def init_loss_kwargs(self, loss_kwargs):
567
+ self.loss_kwargs = {}
568
+ if self.loss_type != "mpnce":
569
+ raise NotImplementedError(f"Unsupported loss_type: {self.loss_type}")
570
+ self.loss_temperature = nn.Parameter(torch.FloatTensor([np.log(loss_kwargs["temperature"])]))
571
+
572
+ def compute_loss(self, logits, group_map, additional_neg_mask=None, **kwargs):
573
+ return multi_positive_nce_loss(
574
+ logits,
575
+ group_map,
576
+ additional_neg_mask=additional_neg_mask,
577
+ temperature=self.loss_temperature.exp(),
578
+ **self.loss_kwargs,
579
+ )
580
+
581
+ def compute_local_loss(
582
+ self,
583
+ logits_per_text,
584
+ logits_per_image,
585
+ group_map,
586
+ local_group_map,
587
+ local_group_map_per_image,
588
+ local_rank,
589
+ B_local,
590
+ additional_neg_mask=None,
591
+ **kwargs,
592
+ ):
593
+ return multi_positive_nce_local_loss(
594
+ logits_per_text,
595
+ logits_per_image,
596
+ group_map,
597
+ local_group_map,
598
+ local_group_map_per_image,
599
+ temperature=self.loss_temperature.exp(),
600
+ local_rank=local_rank,
601
+ B_local=B_local,
602
+ additional_neg_mask=additional_neg_mask,
603
+ **self.loss_kwargs,
604
+ )
605
+
606
+
607
+ LOSS_REGISTRY = {"AlignmentLoss": AlignmentLoss, "DFRLoss": DFRLoss}
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b1e2e8c6afe5b38e39b066f2bad1c17e95e33027defad8ae2436b14573368ba5
3
+ size 1708162556
modeling_glint.py ADDED
@@ -0,0 +1,386 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+
3
+ import torch
4
+ import torch.nn as nn
5
+ import torch.nn.functional as F
6
+
7
+ from .align_layers import build_align_layer
8
+ from .common_layers import BasePreTrainedModel
9
+ from .configuration_glint import GLINTConfig
10
+ from .losses import LossFunctions
11
+ from .text_encoders import build_text_encoder
12
+ from .vision_encoders import build_vision_encoder
13
+
14
+ logger = logging.getLogger("glint")
15
+
16
+
17
+ class GLINTModel(BasePreTrainedModel):
18
+ config_class = GLINTConfig
19
+ # only relevant when vision_only=True drops these submodules; in VLM mode every key loads
20
+ _keys_to_ignore_on_load_unexpected = [
21
+ r"^text_model\.",
22
+ r"^align_layer\.",
23
+ r"^loss_fns\.",
24
+ r"^dfr_module\.",
25
+ r"^vision_layer_norm\.",
26
+ r"^text_layer_norm\.",
27
+ ]
28
+
29
+ def build_vision_model(self, config):
30
+ vision_config = config.vision_config
31
+ vision_model = build_vision_encoder(vision_config)
32
+
33
+ return vision_model
34
+
35
+ def build_text_model(self, config):
36
+ text_config = config.text_config
37
+ text_model = build_text_encoder(text_config)
38
+
39
+ return text_model
40
+
41
+ def build_align_layer_model(self, config):
42
+ align_layer_config = config.align_layer_config
43
+ align_layer = build_align_layer(align_layer_config)
44
+
45
+ return align_layer
46
+
47
+ def build_dfr_module(self, config):
48
+ from .dfr import DFRModule
49
+
50
+ dfr_module = DFRModule(config.dfr_config)
51
+ return dfr_module
52
+
53
+ def __init__(self, config: GLINTConfig):
54
+ super().__init__(config)
55
+
56
+ logger.info("Build vision model ...")
57
+ self.vision_model = self.build_vision_model(config)
58
+
59
+ if getattr(config, "vision_only", False):
60
+ logger.info("vision_only=True: skipping text model, align layer, losses and DFR module.")
61
+ return
62
+
63
+ logger.info("Build text model ...")
64
+ self.text_model = self.build_text_model(config)
65
+
66
+ logger.info("Build align layer model ...")
67
+ self.align_layer = self.build_align_layer_model(config)
68
+
69
+ logger.info("Build loss functions ...")
70
+ loss_cfg = config.kwargs["loss"]
71
+
72
+ self.loss_fns = LossFunctions(loss_cfg)
73
+
74
+ if hasattr(config, "dfr_config") and config.dfr_config is not None:
75
+ logger.info("Build dfr module ...")
76
+ self.dfr_module = self.build_dfr_module(config)
77
+
78
+ self.vision_layer_norm = (
79
+ nn.LayerNorm(config.align_layer_config.hidden_size) if config.use_vision_layer_norm else None
80
+ )
81
+ self.text_layer_norm = nn.LayerNorm(config.text_config.hidden_size) if config.use_text_layer_norm else None
82
+
83
+ self.compute_logits_type = config.kwargs.get("compute_logits_type")
84
+ self.module_to_update = config.kwargs.get("module_to_update")
85
+
86
+ def forward_vision_model(self, pixel_values, output_hidden_states=False):
87
+ vision_model_type = self.config.vision_config.model_type
88
+
89
+ vision_hidden_states = None
90
+
91
+ use_cls_token = getattr(self.config.vision_config, "use_cls_token", False)
92
+
93
+ if vision_model_type == "dinov2":
94
+ vision_outputs = self.vision_model(pixel_values, output_hidden_states=output_hidden_states)
95
+ vision_tokens = vision_outputs["last_hidden_state"]
96
+ if not use_cls_token:
97
+ vision_tokens = vision_tokens[:, 1:, :]
98
+ vision_hidden_states = vision_outputs.get("hidden_states", None)
99
+
100
+ elif vision_model_type == "dinov3_vit":
101
+ vision_outputs = self.vision_model(pixel_values, output_hidden_states=output_hidden_states)
102
+ original_output = vision_outputs["last_hidden_state"]
103
+ patch_tokens = original_output[:, 1 + self.config.vision_config.num_register_tokens :, :]
104
+ if use_cls_token:
105
+ cls_token = original_output[:, :1, :]
106
+ vision_tokens = torch.cat([cls_token, patch_tokens], dim=1)
107
+ else:
108
+ vision_tokens = patch_tokens
109
+
110
+ vision_hidden_states = vision_outputs.get("hidden_states", None)
111
+
112
+ elif vision_model_type == "vjepa2":
113
+ vision_outputs = self.vision_model(
114
+ pixel_values, skip_predictor=True, output_hidden_states=output_hidden_states
115
+ )
116
+ vision_tokens = vision_outputs["last_hidden_state"]
117
+ vision_hidden_states = vision_outputs.get("hidden_states", None)
118
+ elif vision_model_type == "vjepa2.1":
119
+ vision_outputs = self.vision_model(pixel_values, output_hidden_states=output_hidden_states)
120
+ vision_tokens = vision_outputs["last_hidden_state"]
121
+ vision_hidden_states = vision_outputs.get("hidden_states", None)
122
+ else:
123
+ raise NotImplementedError
124
+
125
+ outputs = {}
126
+
127
+ vision_tokens = self.align_layer(vision_tokens)
128
+
129
+ if self.vision_layer_norm is not None:
130
+ vision_tokens = self.vision_layer_norm(vision_tokens)
131
+
132
+ outputs["vision_tokens"] = vision_tokens
133
+ outputs["vision_hidden_states"] = vision_hidden_states
134
+
135
+ return outputs
136
+
137
+ def forward_text_model(self, encoded_input):
138
+ text_outputs = {}
139
+
140
+ text_model_type = self.config.text_config.model_type
141
+ if text_model_type == "mpnet":
142
+ model_output = self.text_model(encoded_input["input_ids"], attention_mask=encoded_input["attention_mask"])
143
+ token_embeddings = model_output[0]
144
+
145
+ else:
146
+ raise NotImplementedError
147
+
148
+ if self.config.text_config.use_cls_token:
149
+ text_features = token_embeddings[:, 0, :]
150
+ else:
151
+ input_mask_expanded = (
152
+ encoded_input["attention_mask"].unsqueeze(-1).expand(token_embeddings.size()).to(token_embeddings.dtype)
153
+ )
154
+ text_features = torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(
155
+ input_mask_expanded.sum(1), min=1e-9
156
+ )
157
+
158
+ if self.text_layer_norm is not None:
159
+ text_features = self.text_layer_norm(text_features)
160
+
161
+ text_outputs["text_features"] = text_features
162
+ text_outputs["text_features_norm"] = F.normalize(text_features, p=2, dim=1)
163
+
164
+ return text_outputs
165
+
166
+ def forward(
167
+ self,
168
+ pixel_values=None,
169
+ enc_sents=None,
170
+ neg_enc_sents=None,
171
+ return_loss=True,
172
+ forward_accum_outputs=False,
173
+ forward_accum_loss=False,
174
+ **kwargs,
175
+ ):
176
+ if forward_accum_outputs:
177
+ return self.forward_accum_outputs(
178
+ pixel_values=pixel_values,
179
+ enc_sents=enc_sents,
180
+ neg_enc_sents=neg_enc_sents,
181
+ **kwargs,
182
+ )
183
+
184
+ if forward_accum_loss:
185
+ return self.forward_accum_loss(**kwargs)
186
+
187
+ if getattr(self.config, "vision_only", False):
188
+ return self.vision_model(pixel_values)
189
+
190
+ outputs = {}
191
+ use_dfr_module = hasattr(self, "dfr_module") and self.dfr_module is not None
192
+ vision_outputs = self.forward_vision_model(pixel_values, output_hidden_states=use_dfr_module)
193
+
194
+ if use_dfr_module:
195
+ dfr_outputs = self.dfr_module(
196
+ pixel_values=pixel_values,
197
+ student_hidden_states=vision_outputs["vision_hidden_states"],
198
+ cached_teacher_features=kwargs.get("cached_teacher_features"),
199
+ )
200
+ outputs.update(dfr_outputs)
201
+
202
+ outputs.update(vision_outputs)
203
+
204
+ if return_loss:
205
+ loss = 0
206
+ losses = {}
207
+
208
+ for loss_type, loss_fn in self.loss_fns.loss_dict.items():
209
+ loss_ratio = self.loss_fns.loss_ratio[loss_type]
210
+
211
+ if loss_fn.__class__.__name__ == "AlignmentLoss":
212
+ loss_outputs = loss_fn(
213
+ enc_sents=enc_sents,
214
+ neg_enc_sents=neg_enc_sents,
215
+ vision_tokens=outputs["vision_tokens"],
216
+ forward_text_model=self.forward_text_model,
217
+ )
218
+ _losses = loss_outputs["losses"]
219
+ loop_loss = _losses.pop("loss")
220
+ losses.update(_losses)
221
+
222
+ elif loss_fn.__class__.__name__ == "DFRLoss":
223
+ loss_outputs = loss_fn(
224
+ proj_student_features=outputs["proj_student_features"],
225
+ teacher_features=outputs["teacher_features"],
226
+ )
227
+ _losses = loss_outputs["losses"]
228
+ loop_loss = _losses.pop("loss")
229
+ losses.update(_losses)
230
+
231
+ else:
232
+ raise NotImplementedError
233
+
234
+ loss += loop_loss * loss_ratio
235
+
236
+ losses["loss"] = loss
237
+
238
+ outputs["loss"] = loss
239
+ outputs["losses"] = losses
240
+
241
+ return outputs
242
+
243
+ def compute_logits(
244
+ self,
245
+ pixel_values,
246
+ enc_sents,
247
+ **kwargs,
248
+ ):
249
+ vision_outputs = self.forward_vision_model(pixel_values)
250
+
251
+ outputs = {}
252
+
253
+ if self.compute_logits_type == "vl_alignment":
254
+ loss_fn = self.loss_fns.loss_dict["AlignmentLoss"]
255
+
256
+ splited_sentences = [
257
+ {
258
+ "input_ids": enc_sents[0]["input_ids"][i : i + 1],
259
+ "attention_mask": enc_sents[0]["attention_mask"][i : i + 1],
260
+ }
261
+ for i in range(enc_sents[0]["input_ids"].size(0))
262
+ ]
263
+
264
+ loss_outputs = loss_fn(
265
+ splited_sentences,
266
+ vision_outputs["vision_tokens"],
267
+ self.forward_text_model,
268
+ ddp_gather=False,
269
+ need_attn_weights=True,
270
+ compute_loss=False,
271
+ )
272
+ outputs.update(loss_outputs)
273
+
274
+ similarity_scores = loss_outputs["attn_weights"][0]
275
+ if getattr(self.config.vision_config, "use_cls_token", False):
276
+ similarity_scores = similarity_scores[:, :, 1:]
277
+ outputs["similarity_scores"] = similarity_scores
278
+
279
+ if "sim_components" in loss_outputs:
280
+ comp = loss_outputs["sim_components"]
281
+ if getattr(self.config.vision_config, "use_cls_token", False):
282
+ comp = {k: v[:, :, 1:] for k, v in comp.items()}
283
+ outputs["sim_components"] = comp
284
+
285
+ logits = loss_outputs["logits"]
286
+ logits = logits.T
287
+
288
+ else:
289
+ raise NotImplementedError
290
+
291
+ outputs["logits"] = logits
292
+ return outputs
293
+
294
+ def forward_accum_outputs(
295
+ self,
296
+ pixel_values,
297
+ enc_sents=None,
298
+ neg_enc_sents=None,
299
+ **kwargs,
300
+ ):
301
+ use_dfr_module = hasattr(self, "dfr_module") and self.dfr_module is not None
302
+
303
+ outputs = {}
304
+
305
+ vision_outputs = self.forward_vision_model(pixel_values, output_hidden_states=use_dfr_module)
306
+ outputs.update(vision_outputs)
307
+
308
+ if use_dfr_module:
309
+ dfr_outputs = self.dfr_module(
310
+ pixel_values=pixel_values,
311
+ student_hidden_states=vision_outputs["vision_hidden_states"],
312
+ cached_teacher_features=kwargs.get("cached_teacher_features"),
313
+ )
314
+ outputs.update(dfr_outputs)
315
+
316
+ text_outputs = []
317
+ for kp in enc_sents:
318
+ text_outputs.append(self.forward_text_model(kp)["text_features"])
319
+
320
+ text_outputs = {"text_features": text_outputs}
321
+ outputs.update(text_outputs)
322
+
323
+ if neg_enc_sents is not None:
324
+ negative_text_outputs = []
325
+ for kp in neg_enc_sents:
326
+ if isinstance(kp["input_ids"], torch.Tensor):
327
+ negative_text_outputs.append(self.forward_text_model(kp)["text_features"])
328
+ else:
329
+ negative_text_outputs.append(
330
+ torch.zeros((0, self.config.text_config.hidden_size)).to(pixel_values.device)
331
+ )
332
+
333
+ negative_text_outputs = {"negative_text_features": negative_text_outputs}
334
+ outputs.update(negative_text_outputs)
335
+
336
+ if "ids_mask" in kwargs:
337
+ outputs["ids_mask"] = kwargs["ids_mask"]
338
+ outputs["mask"] = kwargs["mask"]
339
+
340
+ return outputs
341
+
342
+ def forward_accum_loss(
343
+ self,
344
+ vision_tokens,
345
+ text_features,
346
+ negative_text_features=None,
347
+ **kwargs,
348
+ ):
349
+ outputs = {}
350
+ losses = {}
351
+ loss = 0
352
+
353
+ for loss_type, loss_fn in self.loss_fns.loss_dict.items():
354
+ loss_ratio = self.loss_fns.loss_ratio[loss_type]
355
+
356
+ if loss_fn.__class__.__name__ == "AlignmentLoss":
357
+ loss_outputs = loss_fn(
358
+ enc_sents=None,
359
+ neg_enc_sents=None,
360
+ vision_tokens=vision_tokens,
361
+ forward_text_model=None,
362
+ text_feats_list=text_features,
363
+ neg_text_feats_list=negative_text_features,
364
+ )
365
+ _losses = loss_outputs["losses"]
366
+ loop_loss = _losses.pop("loss")
367
+ losses.update(_losses)
368
+ elif loss_fn.__class__.__name__ == "DFRLoss":
369
+ loss_outputs = loss_fn(
370
+ proj_student_features=kwargs.get("proj_student_features"),
371
+ teacher_features=kwargs.get("teacher_features"),
372
+ )
373
+ _losses = loss_outputs["losses"]
374
+ loop_loss = _losses.pop("loss")
375
+ losses.update(_losses)
376
+ else:
377
+ raise NotImplementedError
378
+
379
+ loss += loop_loss * loss_ratio
380
+
381
+ losses["loss"] = loss
382
+
383
+ outputs["loss"] = loss
384
+ outputs["losses"] = losses
385
+
386
+ return outputs
text_encoders.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import MPNetConfig, MPNetModel
2
+
3
+
4
+ def build_text_encoder(config):
5
+ if config.model_type == "mpnet":
6
+ fields = config.to_dict()
7
+ fields.pop("model_type", None)
8
+ return MPNetModel(MPNetConfig(**fields))
9
+ else:
10
+ raise NotImplementedError(f"Unsupported text model_type: {config.model_type}")
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "added_tokens_decoder": {
3
+ "0": {
4
+ "content": "<s>",
5
+ "lstrip": false,
6
+ "normalized": false,
7
+ "rstrip": false,
8
+ "single_word": false,
9
+ "special": true
10
+ },
11
+ "1": {
12
+ "content": "<pad>",
13
+ "lstrip": false,
14
+ "normalized": false,
15
+ "rstrip": false,
16
+ "single_word": false,
17
+ "special": true
18
+ },
19
+ "2": {
20
+ "content": "</s>",
21
+ "lstrip": false,
22
+ "normalized": false,
23
+ "rstrip": false,
24
+ "single_word": false,
25
+ "special": true
26
+ },
27
+ "3": {
28
+ "content": "<unk>",
29
+ "lstrip": false,
30
+ "normalized": true,
31
+ "rstrip": false,
32
+ "single_word": false,
33
+ "special": true
34
+ },
35
+ "104": {
36
+ "content": "[UNK]",
37
+ "lstrip": false,
38
+ "normalized": false,
39
+ "rstrip": false,
40
+ "single_word": false,
41
+ "special": true
42
+ },
43
+ "30526": {
44
+ "content": "<mask>",
45
+ "lstrip": true,
46
+ "normalized": false,
47
+ "rstrip": false,
48
+ "single_word": false,
49
+ "special": true
50
+ }
51
+ },
52
+ "bos_token": "<s>",
53
+ "clean_up_tokenization_spaces": true,
54
+ "cls_token": "<s>",
55
+ "do_lower_case": true,
56
+ "eos_token": "</s>",
57
+ "mask_token": "<mask>",
58
+ "max_length": 128,
59
+ "model_max_length": 512,
60
+ "pad_to_multiple_of": null,
61
+ "pad_token": "<pad>",
62
+ "pad_token_type_id": 0,
63
+ "padding_side": "right",
64
+ "sep_token": "</s>",
65
+ "stride": 0,
66
+ "strip_accents": null,
67
+ "tokenize_chinese_chars": true,
68
+ "tokenizer_class": "MPNetTokenizer",
69
+ "truncation_side": "right",
70
+ "truncation_strategy": "longest_first",
71
+ "unk_token": "[UNK]"
72
+ }
utils.py ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Inference helpers for the GLINT-CT vision-language model.
2
+
3
+ CT volumes are preprocessed with the same MONAI pipeline used during GLINT
4
+ training/zero-shot evaluation (orientation IPL, resample to 1.5/0.75/0.75 mm,
5
+ HU window [-1000, 1000] -> [-1, 1], 240x384x384), then regrouped into
6
+ ``[num_frames=80, 3, 384, 384]`` and ImageNet-normalised.
7
+ """
8
+
9
+ import numpy as np
10
+ import torch
11
+
12
+ # GLINT-CT pretraining preprocessing (glint/configs/chest_ct_monai.yaml)
13
+ CT_MONAI_CONFIG = {
14
+ "orientation": "IPL",
15
+ "target_spacing": (1.5, 0.75, 0.75),
16
+ "roi_size": (240, 480, 480),
17
+ "final_size": (240, 384, 384),
18
+ "hu_range": (-1000.0, 1000.0),
19
+ "normalize_range": (-1.0, 1.0),
20
+ }
21
+
22
+
23
+ def build_ct_transform(orientd=True, raw_spacing=None):
24
+ from monai.transforms import (
25
+ CenterSpatialCropd,
26
+ Compose,
27
+ EnsureChannelFirstd,
28
+ EnsureTyped,
29
+ Lambdad,
30
+ LoadImaged,
31
+ Orientationd,
32
+ Resized,
33
+ ScaleIntensityRanged,
34
+ Spacingd,
35
+ SpatialPadd,
36
+ )
37
+
38
+ cfg = CT_MONAI_CONFIG
39
+ b_min, b_max = cfg["normalize_range"]
40
+
41
+ def _patch_affine(img):
42
+ if raw_spacing is not None and hasattr(img, "affine"):
43
+ sx, sy, sz = (float(x) for x in raw_spacing)
44
+ a = torch.eye(4, dtype=img.affine.dtype, device=img.affine.device)
45
+ a[0, 0], a[1, 1], a[2, 2] = sx, sy, sz
46
+ img.affine = a
47
+ return img
48
+
49
+ steps = [
50
+ LoadImaged(keys=["image"], image_only=False),
51
+ EnsureChannelFirstd(keys=["image"]),
52
+ *([Orientationd(keys=["image"], axcodes=cfg["orientation"])] if orientd else []),
53
+ *([Lambdad(keys=["image"], func=_patch_affine)] if raw_spacing is not None else []),
54
+ ScaleIntensityRanged(
55
+ keys=["image"],
56
+ a_min=cfg["hu_range"][0],
57
+ a_max=cfg["hu_range"][1],
58
+ b_min=b_min,
59
+ b_max=b_max,
60
+ clip=True,
61
+ ),
62
+ Spacingd(keys=["image"], pixdim=cfg["target_spacing"], mode="bilinear"),
63
+ CenterSpatialCropd(keys=["image"], roi_size=cfg["roi_size"]),
64
+ SpatialPadd(keys=["image"], spatial_size=cfg["roi_size"], mode="constant", constant_values=b_min),
65
+ Resized(keys=["image"], spatial_size=cfg["final_size"], mode="trilinear"),
66
+ EnsureTyped(keys=["image"], dtype=torch.float32),
67
+ ]
68
+ return Compose(steps)
69
+
70
+
71
+ def normalize_pixel_values_videos(pixel_values_videos):
72
+ """(D, H, W) in [-1, 1] -> (num_frames, 3, H, W) ImageNet-normalised."""
73
+ s = pixel_values_videos.shape
74
+ num_channels = 3
75
+ pixel_values_videos = pixel_values_videos.reshape(-1, num_channels, s[-2], s[-1])
76
+
77
+ pixel_values_videos = (pixel_values_videos + 1) / 2
78
+
79
+ image_mean = torch.tensor([0.485, 0.456, 0.406], device=pixel_values_videos.device).view(1, 3, 1, 1)
80
+ image_std = torch.tensor([0.229, 0.224, 0.225], device=pixel_values_videos.device).view(1, 3, 1, 1)
81
+ pixel_values_videos = (pixel_values_videos - image_mean) / image_std
82
+
83
+ return pixel_values_videos
84
+
85
+
86
+ def load_ct_volume(volume, orientd=True, raw_spacing=None, return_affine=False):
87
+ """Load and preprocess a CT volume.
88
+
89
+ volume : path to a NIfTI (.nii/.nii.gz) file, or a (240, 384, 384) tensor/ndarray in HU that is
90
+ already on the preprocessed grid (IPL, 1.5/0.75/0.75 mm resampled, cropped/padded, resized);
91
+ only the HU window is applied to arrays. Returns pixel_values of shape
92
+ (1, num_frames, 3, H, W), plus the 4x4 world affine of the preprocessed grid if
93
+ ``return_affine`` (None for array input).
94
+ """
95
+ affine = None
96
+ if isinstance(volume, str):
97
+ transform = build_ct_transform(orientd=orientd, raw_spacing=raw_spacing)
98
+ out = transform({"image": volume})
99
+ image = out["image"].squeeze(0) # (1, D, H, W) -> (D, H, W)
100
+ affine = np.asarray(out["image"].affine, dtype=np.float64)
101
+ else:
102
+ image = torch.as_tensor(np.asarray(volume), dtype=torch.float32)
103
+ if tuple(image.shape) != tuple(CT_MONAI_CONFIG["final_size"]):
104
+ raise ValueError(
105
+ f"Array input must be on the preprocessed grid {CT_MONAI_CONFIG['final_size']}, got {tuple(image.shape)}"
106
+ )
107
+ (a_min, a_max), (b_min, b_max) = CT_MONAI_CONFIG["hu_range"], CT_MONAI_CONFIG["normalize_range"]
108
+ image = (image.clamp(a_min, a_max) - a_min) / (a_max - a_min) * (b_max - b_min) + b_min
109
+
110
+ pixel_values_videos = normalize_pixel_values_videos(image).unsqueeze(0) # (1, num_frames, 3, H, W)
111
+ return (pixel_values_videos, affine) if return_affine else pixel_values_videos
112
+
113
+
114
+ def similarity_scores_to_volume(similarity_scores, model, target_shape=CT_MONAI_CONFIG["final_size"]):
115
+ """Per-token scores ``[1, 1, num_tokens]`` -> (D, H, W) map on the preprocessed grid (trilinear)."""
116
+ vc = model.config.vision_config
117
+ patch_size = getattr(vc, "patch_size", None) or 16
118
+ frame_length = vc.num_channels * (getattr(vc, "tubelet_size", None) or 2)
119
+ grid = (vc.input_slices // frame_length, vc.img_size // patch_size, vc.img_size // patch_size)
120
+
121
+ volume = similarity_scores.float().reshape(grid)
122
+ if target_shape is not None:
123
+ volume = torch.nn.functional.interpolate(
124
+ volume[None, None], size=tuple(target_shape), mode="trilinear", align_corners=False
125
+ )[0, 0]
126
+ return volume
127
+
128
+
129
+ def save_similarity_map(similarity_volume, affine, save_path, pixel_values=None, ct_save_path=None):
130
+ """Save the similarity map (and optionally the preprocessed CT) as NIfTI in world space.
131
+
132
+ With the affine from ``load_ct_volume(..., return_affine=True)`` the map overlays the
133
+ original CT in ITK-SNAP / 3D Slicer. ``pixel_values`` + ``ct_save_path`` also save the
134
+ preprocessed volume (HU window [-1000, 1000]) on the same grid.
135
+ """
136
+ import nibabel as nib
137
+
138
+ sim = similarity_volume.detach().float().cpu().numpy() if torch.is_tensor(similarity_volume) else similarity_volume
139
+ nib.save(nib.Nifti1Image(sim.astype(np.float32), affine), save_path)
140
+
141
+ if pixel_values is not None and ct_save_path is not None:
142
+ mean = torch.tensor([0.485, 0.456, 0.406]).view(1, 3, 1, 1)
143
+ std = torch.tensor([0.229, 0.224, 0.225]).view(1, 3, 1, 1)
144
+ frames = pixel_values[0].detach().float().cpu() * std + mean # (num_frames, 3, H, W) in [0, 1]
145
+ hu = (frames.reshape(-1, *frames.shape[-2:]) * 2 - 1) * 1000.0
146
+ nib.save(nib.Nifti1Image(hu.numpy().astype(np.float32), affine), ct_save_path)
147
+
148
+
149
+ def _as_pixel_values(volume, raw_spacing):
150
+ if torch.is_tensor(volume) and volume.dim() == 5: # already preprocessed by load_ct_volume
151
+ return volume
152
+ return load_ct_volume(volume, raw_spacing=raw_spacing)
153
+
154
+
155
+ @torch.no_grad()
156
+ def model_inference(volume, text, model, tokenizer, raw_spacing=None):
157
+ """Return (similarity_prob, similarity_scores) for one CT volume and one phrase.
158
+
159
+ similarity_prob : scalar sigmoid probability that the phrase applies.
160
+ similarity_scores : per-token similarity in [0, 1] over the V-JEPA video tokens
161
+ (shape [1, 1, num_tokens]); ``similarity_scores_to_volume``
162
+ maps it onto the preprocessed CT grid.
163
+
164
+ volume may also be the ``pixel_values`` returned by ``load_ct_volume``.
165
+ """
166
+ pixel_values = _as_pixel_values(volume, raw_spacing).to(model.device, dtype=model.dtype)
167
+
168
+ tokenized_text = tokenizer(
169
+ text,
170
+ padding=True,
171
+ truncation=True,
172
+ return_tensors="pt",
173
+ ).to(model.device)
174
+
175
+ output = model.compute_logits(pixel_values, [tokenized_text])
176
+ similarity_prob = output["logits"].sigmoid()
177
+ return similarity_prob, output.get("similarity_scores")
178
+
179
+
180
+ @torch.no_grad()
181
+ def model_inference_multiple_text(volume, text_list, model, tokenizer, raw_spacing=None):
182
+ pixel_values = _as_pixel_values(volume, raw_spacing).to(model.device, dtype=model.dtype)
183
+ enc = tokenizer(text_list, padding=True, truncation=True, return_tensors="pt").to(model.device)
184
+ output = model.compute_logits(pixel_values, [enc])
185
+ return output["logits"].sigmoid(), output.get("similarity_scores")
vision_encoders.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch.nn as nn
2
+ from transformers import Dinov2Config, Dinov2Model, DINOv3ViTConfig, DINOv3ViTModel, VJEPA2Config, VJEPA2Model
3
+
4
+
5
+ def _hf_config(config_class, config):
6
+ fields = config.to_dict()
7
+ fields.pop("model_type", None)
8
+ return config_class(**fields)
9
+
10
+
11
+ def build_vision_encoder(config):
12
+ if config.model_type == "dinov2":
13
+ model = Dinov2Model(_hf_config(Dinov2Config, config))
14
+ nn.init.trunc_normal_(model.embeddings.mask_token, std=0.02)
15
+
16
+ elif config.model_type == "dinov3_vit":
17
+ model = DINOv3ViTModel(_hf_config(DINOv3ViTConfig, config))
18
+ nn.init.trunc_normal_(model.embeddings.mask_token, std=0.02)
19
+
20
+ elif config.model_type == "vjepa2":
21
+ model = VJEPA2Model(_hf_config(VJEPA2Config, config))
22
+
23
+ elif config.model_type == "vjepa2.1":
24
+ from .vjepa21_encoder import VJEPA21Encoder
25
+
26
+ model = VJEPA21Encoder(config)
27
+
28
+ else:
29
+ raise NotImplementedError()
30
+
31
+ return model
vjepa21_encoder.py ADDED
@@ -0,0 +1,1106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """V-JEPA 2.1 encoder.
2
+
3
+ Adapted from https://github.com/facebookresearch/vjepa2
4
+ Copyright (c) Meta Platforms, Inc. and affiliates. MIT License (LICENSES/MIT.txt)
5
+ drop_path from timm (https://github.com/huggingface/pytorch-image-models).
6
+ Copyright 2020 Ross Wightman. Apache License 2.0 (LICENSES/Apache-2.0.txt)
7
+ """
8
+
9
+ import logging
10
+ import math
11
+
12
+ import torch
13
+
14
+ logger = logging.getLogger("glint")
15
+
16
+
17
+ def _no_grad_trunc_normal_(tensor, mean, std, a, b):
18
+ def norm_cdf(x):
19
+ return (1.0 + math.erf(x / math.sqrt(2.0))) / 2.0
20
+
21
+ with torch.no_grad():
22
+ lower = norm_cdf((a - mean) / std)
23
+ upper = norm_cdf((b - mean) / std)
24
+
25
+ tensor.uniform_(2 * lower - 1, 2 * upper - 1)
26
+
27
+ tensor.erfinv_()
28
+
29
+ tensor.mul_(std * math.sqrt(2.0))
30
+ tensor.add_(mean)
31
+
32
+ tensor.clamp_(min=a, max=b)
33
+ return tensor
34
+
35
+
36
+ def trunc_normal_(tensor, mean=0.0, std=1.0, a=-2.0, b=2.0):
37
+ return _no_grad_trunc_normal_(tensor, mean, std, a, b)
38
+
39
+
40
+ def repeat_interleave_batch(x, B, repeat):
41
+ N = len(x) // B
42
+ x = torch.cat([torch.cat([x[i * B : (i + 1) * B] for _ in range(repeat)], dim=0) for i in range(N)], dim=0)
43
+ return x
44
+
45
+
46
+ def apply_masks(x, masks, concat=True):
47
+ all_x = []
48
+ for m in masks:
49
+ mask_keep = m.unsqueeze(-1).repeat(1, 1, x.size(-1))
50
+ all_x += [torch.gather(x, dim=1, index=mask_keep)]
51
+ if not concat:
52
+ return all_x
53
+
54
+ return torch.cat(all_x, dim=0)
55
+
56
+
57
+ import torch.nn as nn # noqa: E402
58
+
59
+
60
+ class PatchEmbed3D(nn.Module):
61
+ def __init__(
62
+ self,
63
+ patch_size=16,
64
+ tubelet_size=2,
65
+ in_chans=3,
66
+ embed_dim=768,
67
+ ):
68
+ super().__init__()
69
+ self.patch_size = patch_size
70
+ self.tubelet_size = tubelet_size
71
+
72
+ self.proj = nn.Conv3d(
73
+ in_channels=in_chans,
74
+ out_channels=embed_dim,
75
+ kernel_size=(tubelet_size, patch_size, patch_size),
76
+ stride=(tubelet_size, patch_size, patch_size),
77
+ )
78
+
79
+ def forward(self, x, **kwargs):
80
+ B, C, T, H, W = x.shape
81
+ x = self.proj(x).flatten(2).transpose(1, 2)
82
+ return x
83
+
84
+
85
+ import torch.nn.functional as F # noqa: E402
86
+ from torch.nn.attention import SDPBackend, sdpa_kernel # noqa: E402
87
+
88
+
89
+ def drop_path(x, drop_prob=0.0, training=False, scale_by_keep=True):
90
+ if drop_prob == 0.0 or not training:
91
+ return x
92
+ keep_prob = 1 - drop_prob
93
+ shape = (x.shape[0],) + (1,) * (x.ndim - 1)
94
+ random_tensor = x.new_empty(shape).bernoulli_(keep_prob)
95
+ if keep_prob > 0.0 and scale_by_keep:
96
+ random_tensor.div_(keep_prob)
97
+ return x * random_tensor
98
+
99
+
100
+ def rotate_queries_or_keys(x, pos, n_registers, has_cls_first):
101
+ B, num_heads, N, D = x.size()
102
+ assert D % 2 == 0, "Embedding dimension must be a multiple of 2 for block matrix rotation"
103
+
104
+ n_cls = 1 if has_cls_first else 0
105
+ start_ctx = n_cls
106
+ end_ctx = N - n_registers
107
+
108
+ x_cls = x[..., :n_cls, :] if n_cls else None
109
+ x_ctx = x[..., start_ctx:end_ctx, :]
110
+ x_reg = x[..., end_ctx:, :] if n_registers > 0 else None
111
+
112
+ omega = torch.arange(D // 2, dtype=x.dtype, device=x.device)
113
+ omega /= D / 2.0
114
+ omega = 1.0 / 10000**omega
115
+ freq = torch.einsum("..., f -> ... f", pos, omega)
116
+
117
+ emb_sin = freq.sin()
118
+ emb_cos = freq.cos()
119
+
120
+ emb_sin = emb_sin.repeat_interleave(2, dim=-1)
121
+ emb_cos = emb_cos.repeat_interleave(2, dim=-1)
122
+
123
+ y = x_ctx.unflatten(-1, (-1, 2))
124
+ y1, y2 = y.unbind(
125
+ dim=-1,
126
+ )
127
+ y = torch.stack((-y2, y1), dim=-1)
128
+ y = y.flatten(-2)
129
+ out_ctx = (x_ctx * emb_cos) + (y * emb_sin)
130
+
131
+ parts = []
132
+ if n_cls:
133
+ parts.append(x_cls)
134
+ parts.append(out_ctx)
135
+ if n_registers:
136
+ parts.append(x_reg)
137
+ out = torch.cat(parts, dim=-2)
138
+
139
+ return out
140
+
141
+
142
+ class DropPath(nn.Module):
143
+ def __init__(self, drop_prob=None):
144
+ super(DropPath, self).__init__()
145
+ self.drop_prob = drop_prob
146
+
147
+ def forward(self, x):
148
+ return drop_path(x, self.drop_prob, self.training)
149
+
150
+ def extra_repr(self) -> str:
151
+ return "p={}".format(self.drop_prob)
152
+
153
+
154
+ class MLP(nn.Module):
155
+ def __init__(
156
+ self,
157
+ in_features,
158
+ hidden_features=None,
159
+ out_features=None,
160
+ act_layer=nn.GELU,
161
+ drop=0.0,
162
+ ):
163
+ super().__init__()
164
+ out_features = out_features or in_features
165
+ hidden_features = hidden_features or in_features
166
+ self.fc1 = nn.Linear(in_features, hidden_features)
167
+ self.act = act_layer()
168
+ self.fc2 = nn.Linear(hidden_features, out_features)
169
+ self.drop = nn.Dropout(drop)
170
+
171
+ def forward(self, x):
172
+ x = self.fc1(x)
173
+ x = self.act(x)
174
+ x = self.drop(x)
175
+ x = self.fc2(x)
176
+ x = self.drop(x)
177
+ return x
178
+
179
+
180
+ class SwiGLUFFN(nn.Module):
181
+ def __init__(
182
+ self,
183
+ in_features,
184
+ hidden_features=None,
185
+ out_features=None,
186
+ act_layer=nn.SiLU,
187
+ drop=0.0,
188
+ wide_silu=True,
189
+ ):
190
+ super().__init__()
191
+ out_features = out_features or in_features
192
+ swiglu_hidden_features = hidden_features = hidden_features or in_features
193
+ if wide_silu:
194
+ swiglu_hidden_features = int(2 * hidden_features / 3)
195
+ align_as = 8
196
+ swiglu_hidden_features = (swiglu_hidden_features + align_as - 1) // align_as * align_as
197
+ self.fc1 = nn.Linear(in_features, swiglu_hidden_features)
198
+ self.fc2 = nn.Linear(in_features, swiglu_hidden_features)
199
+ self.act = act_layer()
200
+ self.fc3 = nn.Linear(swiglu_hidden_features, out_features)
201
+
202
+ def forward(self, x):
203
+ x1 = self.fc1(x)
204
+ x2 = self.fc2(x)
205
+ hidden = F.silu(x1) * x2
206
+ return self.fc3(hidden)
207
+
208
+
209
+ class RoPEAttention(nn.Module):
210
+ def __init__(
211
+ self,
212
+ dim,
213
+ num_heads=8,
214
+ qkv_bias=False,
215
+ qk_scale=None,
216
+ attn_drop=0.0,
217
+ proj_drop=0.0,
218
+ use_sdpa=True,
219
+ grid_size=14,
220
+ is_causal=False,
221
+ n_registers=0,
222
+ has_cls_first=False,
223
+ interpolate_rope=False,
224
+ patch_size=16,
225
+ ):
226
+ super().__init__()
227
+ self.num_heads = num_heads
228
+ self.head_dim = head_dim = dim // num_heads
229
+ self.scale = qk_scale or head_dim**-0.5
230
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
231
+ self.attn_drop = nn.Dropout(attn_drop)
232
+ self.proj = nn.Linear(dim, dim)
233
+ self.proj_drop_prob = proj_drop
234
+ self.proj_drop = nn.Dropout(proj_drop)
235
+ self.use_sdpa = use_sdpa
236
+ self.d_dim = int(2 * ((head_dim // 3) // 2))
237
+ self.h_dim = int(2 * ((head_dim // 3) // 2))
238
+ self.w_dim = int(2 * ((head_dim // 3) // 2))
239
+ self.grid_size = grid_size
240
+ self.is_causal = is_causal
241
+ self.n_registers = n_registers
242
+ self.has_cls_first = has_cls_first
243
+ self.interpolate_rope = interpolate_rope
244
+ self.pretrained_patch_size = patch_size
245
+ if patch_size == 14:
246
+ self.pretrained_grid_size = int(252 / patch_size)
247
+ elif patch_size == 16:
248
+ self.pretrained_grid_size = int(256 / patch_size)
249
+
250
+ def _get_frame_pos(self, ids, H_patches=None, W_patches=None):
251
+ if H_patches is None or W_patches is None:
252
+ tokens_per_frame = int(self.grid_size * self.grid_size)
253
+ else:
254
+ tokens_per_frame = int(H_patches * W_patches)
255
+ return ids // tokens_per_frame
256
+
257
+ def _get_height_pos(self, ids, H_patches=None, W_patches=None):
258
+ if H_patches is None or W_patches is None:
259
+ tokens_per_frame = int(self.grid_size * self.grid_size)
260
+ tokens_per_row = self.grid_size
261
+ else:
262
+ tokens_per_frame = int(H_patches * W_patches)
263
+ tokens_per_row = W_patches
264
+ frame_ids = self._get_frame_pos(ids, H_patches, W_patches)
265
+ ids = ids - tokens_per_frame * frame_ids
266
+ return ids // tokens_per_row
267
+
268
+ def separate_positions(self, ids, H_patches=None, W_patches=None):
269
+ if H_patches is None or W_patches is None:
270
+ tokens_per_frame = int(self.grid_size * self.grid_size)
271
+ tokens_per_row = self.grid_size
272
+ else:
273
+ tokens_per_frame = int(H_patches * W_patches)
274
+ tokens_per_row = W_patches
275
+ frame_ids = self._get_frame_pos(ids, H_patches, W_patches)
276
+ height_ids = self._get_height_pos(ids, H_patches, W_patches)
277
+ width_ids = (ids - tokens_per_frame * frame_ids) - tokens_per_row * height_ids
278
+ return 1.0 * frame_ids, 1.0 * height_ids, 1.0 * width_ids
279
+
280
+ def forward(
281
+ self,
282
+ x,
283
+ mask=None,
284
+ T=None,
285
+ H_patches=None,
286
+ W_patches=None,
287
+ return_attn=False,
288
+ ):
289
+ B, N, C = x.size()
290
+ N_ctx = N - self.n_registers
291
+ grid_depth = int(N_ctx // (self.grid_size * self.grid_size))
292
+
293
+ qkv = self.qkv(x).unflatten(-1, (3, self.num_heads, -1)).permute(2, 0, 3, 1, 4)
294
+ q, k, v = qkv[0], qkv[1], qkv[2]
295
+
296
+ if mask is not None:
297
+ mask = mask.unsqueeze(1).repeat(1, self.num_heads, 1)
298
+ d_mask, h_mask, w_mask = self.separate_positions(mask, H_patches, W_patches)
299
+ else:
300
+ if T is None or H_patches is None or W_patches is None:
301
+ mask = torch.arange(int(grid_depth * self.grid_size * self.grid_size), device=x.device)
302
+ else:
303
+ mask = torch.arange(int(T * H_patches * W_patches), device=x.device)
304
+ d_mask, h_mask, w_mask = self.separate_positions(mask, H_patches, W_patches)
305
+
306
+ if self.interpolate_rope:
307
+ if H_patches is None:
308
+ H_patches = int(self.grid_size)
309
+ if W_patches is None:
310
+ W_patches = int(self.grid_size)
311
+ h_mask = h_mask * (self.pretrained_grid_size - 1) / (H_patches - 1)
312
+ w_mask = w_mask * (self.pretrained_grid_size - 1) / (W_patches - 1)
313
+
314
+ s = 0
315
+ qd = rotate_queries_or_keys(
316
+ q[..., s : s + self.d_dim],
317
+ pos=d_mask,
318
+ n_registers=self.n_registers,
319
+ has_cls_first=self.has_cls_first,
320
+ )
321
+ kd = rotate_queries_or_keys(
322
+ k[..., s : s + self.d_dim],
323
+ pos=d_mask,
324
+ n_registers=self.n_registers,
325
+ has_cls_first=self.has_cls_first,
326
+ )
327
+ s += self.d_dim
328
+ qh = rotate_queries_or_keys(
329
+ q[..., s : s + self.h_dim],
330
+ pos=h_mask,
331
+ n_registers=self.n_registers,
332
+ has_cls_first=self.has_cls_first,
333
+ )
334
+ kh = rotate_queries_or_keys(
335
+ k[..., s : s + self.h_dim],
336
+ pos=h_mask,
337
+ n_registers=self.n_registers,
338
+ has_cls_first=self.has_cls_first,
339
+ )
340
+ s += self.h_dim
341
+ qw = rotate_queries_or_keys(
342
+ q[..., s : s + self.w_dim],
343
+ pos=w_mask,
344
+ n_registers=self.n_registers,
345
+ has_cls_first=self.has_cls_first,
346
+ )
347
+ kw = rotate_queries_or_keys(
348
+ k[..., s : s + self.w_dim],
349
+ pos=w_mask,
350
+ n_registers=self.n_registers,
351
+ has_cls_first=self.has_cls_first,
352
+ )
353
+ s += self.w_dim
354
+
355
+ if s < self.head_dim:
356
+ qr = q[..., s:]
357
+ kr = k[..., s:]
358
+ q = torch.cat([qd, qh, qw, qr], dim=-1)
359
+ k = torch.cat([kd, kh, kw, kr], dim=-1)
360
+ else:
361
+ q = torch.cat([qd, qh, qw], dim=-1)
362
+ k = torch.cat([kd, kh, kw], dim=-1)
363
+
364
+ q = q.to(v.dtype)
365
+ k = k.to(v.dtype)
366
+
367
+ if self.use_sdpa:
368
+ with sdpa_kernel([SDPBackend.FLASH_ATTENTION, SDPBackend.EFFICIENT_ATTENTION, SDPBackend.MATH]):
369
+ x = F.scaled_dot_product_attention(q, k, v, dropout_p=self.proj_drop_prob, is_causal=self.is_causal)
370
+ attn = None
371
+ else:
372
+ attn = (q @ k.transpose(-2, -1)) * self.scale
373
+ attn = attn.softmax(dim=-1)
374
+ attn = self.attn_drop(attn)
375
+ x = attn @ v
376
+
377
+ x = x.transpose(1, 2).reshape(B, N, C)
378
+ x = self.proj(x)
379
+ x = self.proj_drop(x)
380
+ if return_attn:
381
+ return x, attn
382
+ else:
383
+ return x, None
384
+
385
+
386
+ class Attention(nn.Module):
387
+ def __init__(
388
+ self,
389
+ dim,
390
+ num_heads=8,
391
+ qkv_bias=False,
392
+ qk_scale=None,
393
+ attn_drop=0.0,
394
+ proj_drop=0.0,
395
+ use_sdpa=True,
396
+ is_causal=False,
397
+ ):
398
+ super().__init__()
399
+ self.num_heads = num_heads
400
+ head_dim = dim // num_heads
401
+ self.scale = qk_scale or head_dim**-0.5
402
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
403
+ self.attn_drop = nn.Dropout(attn_drop)
404
+ self.proj = nn.Linear(dim, dim)
405
+ self.proj_drop_prob = proj_drop
406
+ self.proj_drop = nn.Dropout(proj_drop)
407
+ self.use_sdpa = use_sdpa
408
+ self.is_causal = is_causal
409
+
410
+ def forward(self, x):
411
+ B, N, C = x.shape
412
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
413
+ q, k, v = qkv[0], qkv[1], qkv[2]
414
+
415
+ if self.use_sdpa:
416
+ with sdpa_kernel([SDPBackend.FLASH_ATTENTION, SDPBackend.EFFICIENT_ATTENTION, SDPBackend.MATH]):
417
+ x = F.scaled_dot_product_attention(q, k, v, dropout_p=self.proj_drop_prob, is_causal=self.is_causal)
418
+ attn = None
419
+ else:
420
+ attn = (q @ k.transpose(-2, -1)) * self.scale
421
+ attn = attn.softmax(dim=-1)
422
+ attn = self.attn_drop(attn)
423
+ x = attn @ v
424
+
425
+ x = x.transpose(1, 2).reshape(B, N, C)
426
+ x = self.proj(x)
427
+ x = self.proj_drop(x)
428
+ return x
429
+
430
+
431
+ class Block(nn.Module):
432
+ def __init__(
433
+ self,
434
+ dim,
435
+ num_heads,
436
+ mlp_ratio=4.0,
437
+ qkv_bias=False,
438
+ qk_scale=None,
439
+ drop=0.0,
440
+ attn_drop=0.0,
441
+ drop_path=0.0,
442
+ act_layer=nn.GELU,
443
+ wide_silu=True,
444
+ norm_layer=nn.LayerNorm,
445
+ use_sdpa=True,
446
+ is_causal=False,
447
+ grid_size=16,
448
+ use_rope=False,
449
+ n_registers=0,
450
+ has_cls_first=False,
451
+ interpolate_rope=False,
452
+ patch_size=16,
453
+ **kwargs,
454
+ ):
455
+ super().__init__()
456
+ self.norm1 = norm_layer(dim)
457
+ self.use_rope = use_rope
458
+ if use_rope:
459
+ self.attn = RoPEAttention(
460
+ dim,
461
+ num_heads=num_heads,
462
+ qkv_bias=qkv_bias,
463
+ qk_scale=qk_scale,
464
+ attn_drop=attn_drop,
465
+ use_sdpa=use_sdpa,
466
+ is_causal=is_causal,
467
+ grid_size=grid_size,
468
+ proj_drop=drop,
469
+ n_registers=n_registers,
470
+ has_cls_first=has_cls_first,
471
+ interpolate_rope=interpolate_rope,
472
+ patch_size=patch_size,
473
+ )
474
+ else:
475
+ self.attn = Attention(
476
+ dim,
477
+ num_heads=num_heads,
478
+ qkv_bias=qkv_bias,
479
+ qk_scale=qk_scale,
480
+ attn_drop=attn_drop,
481
+ use_sdpa=use_sdpa,
482
+ is_causal=is_causal,
483
+ proj_drop=drop,
484
+ )
485
+
486
+ self.drop_path = DropPath(drop_path) if drop_path > 0.0 else nn.Identity()
487
+ self.norm2 = norm_layer(dim)
488
+ mlp_hidden_dim = int(dim * mlp_ratio)
489
+ if act_layer is nn.SiLU:
490
+ self.mlp = SwiGLUFFN(
491
+ in_features=dim,
492
+ hidden_features=mlp_hidden_dim,
493
+ act_layer=act_layer,
494
+ wide_silu=wide_silu,
495
+ drop=drop,
496
+ )
497
+ else:
498
+ self.mlp = MLP(
499
+ in_features=dim,
500
+ hidden_features=mlp_hidden_dim,
501
+ act_layer=act_layer,
502
+ drop=drop,
503
+ )
504
+
505
+ def forward(
506
+ self,
507
+ x,
508
+ mask=None,
509
+ T=None,
510
+ H_patches=None,
511
+ W_patches=None,
512
+ return_attn=False,
513
+ mode="video",
514
+ ):
515
+ if self.use_rope:
516
+ y, attn = self.attn(
517
+ self.norm1(x),
518
+ mask=mask,
519
+ T=T,
520
+ H_patches=H_patches,
521
+ W_patches=W_patches,
522
+ return_attn=return_attn,
523
+ )
524
+ else:
525
+ y = self.attn(self.norm1(x))
526
+ attn = None
527
+ x = x + self.drop_path(y)
528
+ x = x + self.drop_path(self.mlp(self.norm2(x)))
529
+ if return_attn:
530
+ return x, attn
531
+ else:
532
+ return x, None
533
+
534
+
535
+ class Lambda_LinearWarmupHold:
536
+ def __init__(self, lambda_value: float, start_iter: int = 15_000, end_iter: int = 30_000):
537
+ assert end_iter > start_iter, "end_iter must be > start_iter"
538
+ self.lambda_value = float(lambda_value)
539
+ self.start = int(start_iter)
540
+ self.end = int(end_iter)
541
+ self.span = self.end - self.start
542
+
543
+ def value(self, global_iter: int) -> float:
544
+ if global_iter < self.start:
545
+ return 0.0
546
+ if global_iter >= self.end:
547
+ return self.lambda_value
548
+ alpha = (global_iter - self.start) / self.span
549
+ return self.lambda_value * alpha
550
+
551
+
552
+ from functools import partial # noqa: E402
553
+
554
+
555
+ class VisionTransformer(nn.Module):
556
+ def __init__(
557
+ self,
558
+ img_size=(224, 224),
559
+ patch_size=16,
560
+ num_frames=1,
561
+ tubelet_size=2,
562
+ in_chans=3,
563
+ embed_dim=768,
564
+ depth=12,
565
+ num_heads=12,
566
+ mlp_ratio=4.0,
567
+ qkv_bias=True,
568
+ qk_scale=None,
569
+ drop_rate=0.0,
570
+ attn_drop_rate=0.0,
571
+ drop_path_rate=0.0,
572
+ norm_layer=nn.LayerNorm,
573
+ init_std=0.02,
574
+ out_layers=None,
575
+ uniform_power=False,
576
+ use_silu=False,
577
+ wide_silu=True,
578
+ use_sdpa=True,
579
+ use_activation_checkpointing=False,
580
+ is_causal=False,
581
+ use_rope=False,
582
+ init_type: str = "default",
583
+ handle_nonsquare_inputs=True,
584
+ img_temporal_dim_size=None,
585
+ n_registers=0,
586
+ has_cls_first=False,
587
+ interpolate_rope=False,
588
+ modality_embedding=True,
589
+ n_output_distillation=4,
590
+ **kwargs,
591
+ ):
592
+ super().__init__()
593
+ self.num_features = self.embed_dim = embed_dim
594
+ self.num_heads = num_heads
595
+ self.out_layers = out_layers
596
+ self.init_type = init_type
597
+ self.handle_nonsquare_inputs = handle_nonsquare_inputs
598
+ self.img_temporal_dim_size = img_temporal_dim_size
599
+
600
+ if type(img_size) is int:
601
+ img_size = (img_size, img_size)
602
+ self.img_height, self.img_width = img_size
603
+ self.patch_size = patch_size
604
+ self.num_frames = num_frames
605
+ self.tubelet_size = tubelet_size
606
+ self.is_video = num_frames > 1
607
+
608
+ self.use_activation_checkpointing = use_activation_checkpointing
609
+
610
+ dpr = [x.item() for x in torch.linspace(0, drop_path_rate, depth)]
611
+
612
+ if self.is_video:
613
+ self.patch_embed = PatchEmbed3D(
614
+ patch_size=patch_size,
615
+ tubelet_size=tubelet_size,
616
+ in_chans=in_chans,
617
+ embed_dim=embed_dim,
618
+ )
619
+ self.num_patches = (num_frames // tubelet_size) * (img_size[0] // patch_size) * (img_size[1] // patch_size)
620
+ else:
621
+ self.patch_embed = PatchEmbed3D(
622
+ patch_size=patch_size,
623
+ tubelet_size=1,
624
+ in_chans=in_chans,
625
+ embed_dim=embed_dim,
626
+ )
627
+ self.num_patches = (img_size[0] // patch_size) * (img_size[1] // patch_size)
628
+
629
+ if self.img_temporal_dim_size is not None:
630
+ if not isinstance(self.img_temporal_dim_size, int):
631
+ raise ValueError(f"img_temporal_dim_size must be an int, got {self.img_temporal_dim_size}")
632
+ self.patch_embed_img = PatchEmbed3D(
633
+ patch_size=patch_size,
634
+ tubelet_size=1,
635
+ in_chans=in_chans,
636
+ embed_dim=embed_dim,
637
+ )
638
+ else:
639
+ self.patch_embed_img = None
640
+
641
+ self.uniform_power = uniform_power
642
+
643
+ self.use_rope = use_rope
644
+ self.blocks = nn.ModuleList(
645
+ [
646
+ Block(
647
+ use_rope=use_rope,
648
+ grid_size=img_size[0] // patch_size,
649
+ grid_depth=num_frames // tubelet_size,
650
+ dim=embed_dim,
651
+ num_heads=num_heads,
652
+ mlp_ratio=mlp_ratio,
653
+ use_sdpa=use_sdpa,
654
+ is_causal=is_causal,
655
+ qkv_bias=qkv_bias,
656
+ qk_scale=qk_scale,
657
+ drop=drop_rate,
658
+ act_layer=nn.SiLU if use_silu else nn.GELU,
659
+ wide_silu=wide_silu,
660
+ attn_drop=attn_drop_rate,
661
+ drop_path=dpr[i],
662
+ norm_layer=norm_layer,
663
+ n_registers=n_registers,
664
+ has_cls_first=has_cls_first,
665
+ interpolate_rope=interpolate_rope,
666
+ patch_size=patch_size,
667
+ )
668
+ for i in range(depth)
669
+ ]
670
+ )
671
+
672
+ self.attn_out = False
673
+ self.init_std = init_std
674
+ self.apply(self._init_weights)
675
+ self._rescale_blocks()
676
+
677
+ if depth == 12:
678
+ self.hierarchical_layers = [2, 5, 8, 11]
679
+ if n_output_distillation == 4:
680
+ self.out_layers_distillation = [2, 5, 8, 11]
681
+ elif n_output_distillation == 1:
682
+ self.out_layers_distillation = [11]
683
+
684
+ elif depth == 24:
685
+ self.hierarchical_layers = [5, 11, 17, 23]
686
+ if n_output_distillation == 4:
687
+ self.out_layers_distillation = [5, 11, 17, 23]
688
+ elif n_output_distillation == 1:
689
+ self.out_layers_distillation = [23]
690
+
691
+ elif depth == 40:
692
+ self.hierarchical_layers = [9, 19, 29, 39]
693
+ if n_output_distillation == 4:
694
+ self.out_layers_distillation = [9, 19, 29, 39]
695
+ elif n_output_distillation == 1:
696
+ self.out_layers_distillation = [39]
697
+
698
+ elif depth == 48:
699
+ self.hierarchical_layers = [11, 23, 37, 47]
700
+ if n_output_distillation == 4:
701
+ self.out_layers_distillation = [11, 23, 37, 47]
702
+ elif n_output_distillation == 1:
703
+ self.out_layers_distillation = [47]
704
+ else:
705
+ print("Check the code! ;)")
706
+ self.norms_block = nn.ModuleList([norm_layer(embed_dim) for _ in range(len(self.hierarchical_layers))])
707
+
708
+ self.cls_token = None
709
+ self.return_hierarchical = False
710
+
711
+ self.modality_embedding = False
712
+ if modality_embedding:
713
+ self.img_mod_embed = nn.Parameter(torch.zeros(1, 1, embed_dim))
714
+ self.video_mod_embed = nn.Parameter(torch.zeros(1, 1, embed_dim))
715
+ nn.init.normal_(self.img_mod_embed, std=1e-6)
716
+ nn.init.normal_(self.video_mod_embed, std=1e-6)
717
+ self.modality_embedding = True
718
+
719
+ def _init_weights(self, m):
720
+ if isinstance(m, nn.LayerNorm):
721
+ nn.init.constant_(m.bias, 0)
722
+ nn.init.constant_(m.weight, 1.0)
723
+ return
724
+ if self.init_type == "default":
725
+ if isinstance(m, nn.Linear):
726
+ trunc_normal_(m.weight, std=self.init_std)
727
+ if isinstance(m, nn.Linear) and m.bias is not None:
728
+ nn.init.constant_(m.bias, 0)
729
+ elif isinstance(m, nn.Conv2d):
730
+ trunc_normal_(m.weight, std=self.init_std)
731
+ if m.bias is not None:
732
+ nn.init.constant_(m.bias, 0)
733
+ elif isinstance(m, nn.Conv3d):
734
+ trunc_normal_(m.weight, std=self.init_std)
735
+ if m.bias is not None:
736
+ nn.init.constant_(m.bias, 0)
737
+
738
+ elif self.init_type == "xavier_uniform":
739
+ if isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d) or isinstance(m, nn.Conv3d):
740
+ nn.init.xavier_uniform_(m.weight)
741
+ if m.bias is not None:
742
+ nn.init.constant_(m.bias, 0)
743
+ elif self.init_type == "xavier_normal":
744
+ if isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d) or isinstance(m, nn.Conv3d):
745
+ nn.init.xavier_normal_(m.weight)
746
+ if m.bias is not None:
747
+ nn.init.constant_(m.bias, 0)
748
+ else:
749
+ raise ValueError(f"Unknown init type {self.init_type}")
750
+
751
+ def _rescale_blocks(self):
752
+ def rescale(param, layer_id):
753
+ param.div_(math.sqrt(2.0 * layer_id))
754
+
755
+ for layer_id, layer in enumerate(self.blocks):
756
+ rescale(layer.attn.proj.weight.data, layer_id + 1)
757
+ rescale(layer.mlp.fc2.weight.data, layer_id + 1)
758
+
759
+ def get_num_layers(self):
760
+ return len(self.blocks)
761
+
762
+ def no_weight_decay(self):
763
+ return {}
764
+
765
+ def check_temporal_dim(self, shape) -> bool:
766
+ if self.img_temporal_dim_size is not None:
767
+ if shape[2] == self.img_temporal_dim_size:
768
+ return True
769
+
770
+ return False
771
+
772
+ def forward(self, x, masks=None, training=False):
773
+ if masks is not None and not isinstance(masks, list):
774
+ masks = [masks]
775
+
776
+ if x.ndim == 4:
777
+ _, _, H, W = x.shape
778
+ T = 1
779
+ elif x.ndim == 5:
780
+ _, _, T, H, W = x.shape
781
+ if self.check_temporal_dim(x.shape):
782
+ T = T // 1
783
+ else:
784
+ T = T // self.tubelet_size
785
+
786
+ H_patches = H // self.patch_size
787
+ W_patches = W // self.patch_size
788
+ if not self.handle_nonsquare_inputs:
789
+ T = H_patches = W_patches = None
790
+
791
+ if self.check_temporal_dim(x.shape):
792
+ assert self.patch_embed_img is not None
793
+ x = self.patch_embed_img(x)
794
+ mode = "img"
795
+ if self.modality_embedding:
796
+ x += self.img_mod_embed.repeat(x.shape[0], 1, 1)
797
+ else:
798
+ x = self.patch_embed(x)
799
+ mode = "video"
800
+ if self.modality_embedding:
801
+ x += self.video_mod_embed.repeat(x.shape[0], 1, 1)
802
+
803
+ if masks is not None:
804
+ x = apply_masks(x, masks)
805
+ masks = torch.cat(masks, dim=0)
806
+
807
+ outs = []
808
+ hier = []
809
+ for i, blk in enumerate(self.blocks):
810
+ if self.use_activation_checkpointing:
811
+ x, attn = torch.utils.checkpoint.checkpoint(
812
+ blk,
813
+ x,
814
+ masks,
815
+ T=T,
816
+ H_patches=H_patches,
817
+ W_patches=W_patches,
818
+ use_reentrant=False,
819
+ return_attn=self.attn_out,
820
+ mode=mode,
821
+ )
822
+ else:
823
+ x, attn = blk(
824
+ x,
825
+ mask=masks,
826
+ T=T,
827
+ H_patches=H_patches,
828
+ W_patches=W_patches,
829
+ return_attn=self.attn_out,
830
+ mode=mode,
831
+ )
832
+
833
+ if self.out_layers is not None and i in self.out_layers:
834
+ out_idx = self.hierarchical_layers.index(i)
835
+ out_norm = self.norms_block[out_idx](x)
836
+ outs.append(out_norm)
837
+
838
+ if i in self.out_layers_distillation:
839
+ out_idx = self.hierarchical_layers.index(i)
840
+ hier.append(self.norms_block[out_idx](x))
841
+
842
+ if self.out_layers is not None:
843
+ return outs
844
+
845
+ if training or self.return_hierarchical:
846
+ hier = torch.cat(hier, dim=2)
847
+ return hier
848
+ else:
849
+ x = self.norms_block[-1](x)
850
+ return x
851
+
852
+
853
+ def vit_base(patch_size=16, **kwargs):
854
+ model = VisionTransformer(
855
+ patch_size=patch_size,
856
+ embed_dim=768,
857
+ depth=12,
858
+ num_heads=12,
859
+ mlp_ratio=4,
860
+ qkv_bias=True,
861
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
862
+ **kwargs,
863
+ )
864
+ return model
865
+
866
+
867
+ def vit_large(patch_size=16, **kwargs):
868
+ model = VisionTransformer(
869
+ patch_size=patch_size,
870
+ embed_dim=1024,
871
+ depth=24,
872
+ num_heads=16,
873
+ mlp_ratio=4,
874
+ qkv_bias=True,
875
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
876
+ **kwargs,
877
+ )
878
+ return model
879
+
880
+
881
+ def vit_huge(patch_size=16, **kwargs):
882
+ model = VisionTransformer(
883
+ patch_size=patch_size,
884
+ embed_dim=1280,
885
+ depth=32,
886
+ num_heads=16,
887
+ mlp_ratio=4,
888
+ qkv_bias=True,
889
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
890
+ **kwargs,
891
+ )
892
+ return model
893
+
894
+
895
+ def vit_giant_xformers(patch_size=16, **kwargs):
896
+ model = VisionTransformer(
897
+ patch_size=patch_size,
898
+ embed_dim=1408,
899
+ depth=40,
900
+ num_heads=22,
901
+ mlp_ratio=48 / 11,
902
+ qkv_bias=True,
903
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
904
+ **kwargs,
905
+ )
906
+ return model
907
+
908
+
909
+ def vit_gigantic_xformers(patch_size=16, **kwargs):
910
+ model = VisionTransformer(
911
+ patch_size=patch_size,
912
+ embed_dim=1664,
913
+ depth=48,
914
+ num_heads=26,
915
+ mlp_ratio=64 / 13,
916
+ qkv_bias=True,
917
+ norm_layer=partial(nn.LayerNorm, eps=1e-6),
918
+ **kwargs,
919
+ )
920
+ return model
921
+
922
+
923
+ VIT_EMBED_DIMS = {
924
+ "vit_base": 768,
925
+ "vit_large": 1024,
926
+ "vit_huge": 1280,
927
+ "vit_giant_xformers": 1408,
928
+ "vit_gigantic_xformers": 1664,
929
+ }
930
+
931
+ ARCH_MAP = {
932
+ "vjepa2_1_vit_base_384": (vit_base, 1),
933
+ "vjepa2_1_vit_large_384": (vit_large, 1),
934
+ "vjepa2_1_vit_giant_384": (vit_giant_xformers, 4),
935
+ "vjepa2_1_vit_gigantic_384": (vit_gigantic_xformers, 4),
936
+ }
937
+
938
+
939
+ class VisionEncoderOutput:
940
+ def __init__(self, last_hidden_state, hidden_states=None):
941
+ self.last_hidden_state = last_hidden_state
942
+ self.hidden_states = hidden_states
943
+
944
+ def __getitem__(self, key):
945
+ return getattr(self, key)
946
+
947
+ def get(self, key, default=None):
948
+ return getattr(self, key, default)
949
+
950
+
951
+ class VJEPA21Encoder(nn.Module):
952
+ def __init__(self, config):
953
+ super().__init__()
954
+ self.config = config
955
+ arch = getattr(config, "arch", "vjepa2_1_vit_large_384")
956
+ img_size = getattr(config, "img_size", 384)
957
+ num_frames = getattr(config, "num_frames", 80)
958
+ n_out = getattr(config, "n_output_distillation", None)
959
+ use_ckpt = getattr(config, "use_activation_checkpointing", False)
960
+
961
+ if arch not in ARCH_MAP:
962
+ raise ValueError(f"Unknown arch '{arch}'. Choose from {list(ARCH_MAP.keys())}")
963
+ factory_fn, default_n_out = ARCH_MAP[arch]
964
+ if n_out is None:
965
+ n_out = default_n_out
966
+
967
+ self.encoder = factory_fn(
968
+ img_size=(img_size, img_size),
969
+ num_frames=num_frames,
970
+ tubelet_size=2,
971
+ use_sdpa=True,
972
+ use_silu=False,
973
+ wide_silu=True,
974
+ uniform_power=False,
975
+ use_rope=True,
976
+ img_temporal_dim_size=1,
977
+ interpolate_rope=True,
978
+ n_output_distillation=n_out,
979
+ use_activation_checkpointing=use_ckpt,
980
+ )
981
+
982
+ self.use_hierarchical = getattr(config, "use_hierarchical", False)
983
+ self.encoder.return_hierarchical = self.use_hierarchical
984
+
985
+ n_levels = len(self.encoder.out_layers_distillation)
986
+ self._hidden_size = self.encoder.embed_dim * n_levels if self.use_hierarchical else self.encoder.embed_dim
987
+
988
+ ckpt_path = getattr(config, "pretrained_checkpoint", None)
989
+ if ckpt_path:
990
+ import os
991
+
992
+ if not os.path.isabs(ckpt_path):
993
+ pretrained_dir = getattr(config, "pretrained_dir", "")
994
+ ckpt_path = os.path.join(pretrained_dir, ckpt_path)
995
+ load_vjepa21_checkpoint(self, ckpt_path)
996
+
997
+ @property
998
+ def hidden_size(self):
999
+ return self._hidden_size
1000
+
1001
+ def gradient_checkpointing_enable(self, gradient_checkpointing_kwargs=None):
1002
+ self.encoder.use_activation_checkpointing = True
1003
+
1004
+ def gradient_checkpointing_disable(self):
1005
+ self.encoder.use_activation_checkpointing = False
1006
+
1007
+ def save_pretrained(self, save_directory, **kwargs):
1008
+ import os
1009
+
1010
+ from safetensors.torch import save_file
1011
+
1012
+ os.makedirs(save_directory, exist_ok=True)
1013
+
1014
+ self.config.save_pretrained(save_directory)
1015
+
1016
+ save_file(self.state_dict(), os.path.join(save_directory, "model.safetensors"))
1017
+ logger.info(f"VJEPA21Encoder saved to {save_directory}")
1018
+
1019
+ def forward(self, pixel_values, output_hidden_states=False, **kwargs):
1020
+ x = pixel_values.permute(0, 2, 1, 3, 4).contiguous()
1021
+
1022
+ if output_hidden_states:
1023
+ if self.encoder.check_temporal_dim(x.shape):
1024
+ x_tok = self.encoder.patch_embed_img(x)
1025
+ if self.encoder.modality_embedding:
1026
+ x_tok = x_tok + self.encoder.img_mod_embed
1027
+ else:
1028
+ x_tok = self.encoder.patch_embed(x)
1029
+ if self.encoder.modality_embedding:
1030
+ x_tok = x_tok + self.encoder.video_mod_embed
1031
+
1032
+ _, _, T, H, W = x.shape
1033
+ T_p = T // (1 if self.encoder.check_temporal_dim(x.shape) else self.encoder.tubelet_size)
1034
+ H_p, W_p = H // self.encoder.patch_size, W // self.encoder.patch_size
1035
+
1036
+ hidden_states = [x_tok]
1037
+ h = x_tok
1038
+ for blk in self.encoder.blocks:
1039
+ h, _ = blk(h, mask=None, T=T_p, H_patches=H_p, W_patches=W_p)
1040
+ hidden_states.append(h)
1041
+
1042
+ if self.use_hierarchical:
1043
+ hier = []
1044
+ for idx in self.encoder.out_layers_distillation:
1045
+ out_idx = self.encoder.hierarchical_layers.index(idx)
1046
+ hier.append(self.encoder.norms_block[out_idx](hidden_states[idx]))
1047
+ features = torch.cat(hier, dim=2)
1048
+ else:
1049
+ features = self.encoder.norms_block[-1](hidden_states[-1])
1050
+
1051
+ return VisionEncoderOutput(last_hidden_state=features, hidden_states=tuple(hidden_states))
1052
+
1053
+ features = self.encoder(x, masks=None, training=self.use_hierarchical and self.training)
1054
+ return VisionEncoderOutput(last_hidden_state=features, hidden_states=None)
1055
+
1056
+
1057
+ def load_vjepa21_checkpoint(model, checkpoint_path, strict=False):
1058
+ import os
1059
+
1060
+ if not os.path.exists(checkpoint_path):
1061
+ raise FileNotFoundError(f"V-JEPA 2.1 checkpoint not found: {checkpoint_path}")
1062
+
1063
+ if os.path.isdir(checkpoint_path):
1064
+ st_file = os.path.join(checkpoint_path, "model.safetensors")
1065
+ if not os.path.exists(st_file):
1066
+ raise FileNotFoundError(f"Directory {checkpoint_path} is missing model.safetensors")
1067
+ from safetensors.torch import load_file
1068
+
1069
+ logger.info(f"Detected VJEPA21Encoder safetensors dir: {checkpoint_path}")
1070
+ state_dict = load_file(st_file)
1071
+ missing, unexpected = model.load_state_dict(state_dict, strict=strict)
1072
+ n_loaded = len(state_dict) - len(unexpected)
1073
+ logger.info(
1074
+ f"V-JEPA 2.1 safetensors loaded: {n_loaded} keys, {len(missing)} missing, {len(unexpected)} unexpected"
1075
+ )
1076
+ if missing:
1077
+ logger.info(f" Missing (first 10): {missing[:10]}")
1078
+ if unexpected:
1079
+ logger.info(f" Unexpected (first 10): {unexpected[:10]}")
1080
+ return model
1081
+
1082
+ state_dict = torch.load(checkpoint_path, map_location="cpu", weights_only=False)
1083
+
1084
+ if "ema_encoder" in state_dict:
1085
+ logger.info("Detected V-JEPA 2.1 format (ema_encoder)")
1086
+ state_dict = state_dict["ema_encoder"]
1087
+ elif "target_encoder" in state_dict:
1088
+ logger.info("Target Encoder only detected")
1089
+ state_dict = state_dict["target_encoder"]
1090
+ elif "model" in state_dict:
1091
+ state_dict = state_dict["model"]
1092
+
1093
+ cleaned = {}
1094
+ for k, v in state_dict.items():
1095
+ cleaned[k.replace("module.", "").replace("backbone.", "")] = v
1096
+
1097
+ mapped = {f"encoder.{k}": v for k, v in cleaned.items()}
1098
+
1099
+ missing, unexpected = model.load_state_dict(mapped, strict=strict)
1100
+ n_loaded = len(mapped) - len(unexpected)
1101
+ logger.info(f"V-JEPA 2.1 loaded: {n_loaded} keys, {len(missing)} missing, {len(unexpected)} unexpected")
1102
+ if missing:
1103
+ logger.info(f" Missing (first 10): {missing[:10]}")
1104
+ if unexpected:
1105
+ logger.info(f" Unexpected (first 10): {unexpected[:10]}")
1106
+ return model
vocab.txt ADDED
The diff for this file is too large to render. See raw diff