|
2 | 2 | "cells": [ |
3 | 3 | { |
4 | 4 | "cell_type": "code", |
5 | | - "execution_count": null, |
| 5 | + "execution_count": 28, |
6 | 6 | "id": "87bdb42e", |
7 | 7 | "metadata": {}, |
8 | 8 | "outputs": [], |
|
22 | 22 | }, |
23 | 23 | { |
24 | 24 | "cell_type": "code", |
25 | | - "execution_count": 2, |
| 25 | + "execution_count": 29, |
26 | 26 | "id": "66608e09", |
27 | 27 | "metadata": {}, |
28 | 28 | "outputs": [], |
|
39 | 39 | }, |
40 | 40 | { |
41 | 41 | "cell_type": "code", |
42 | | - "execution_count": null, |
| 42 | + "execution_count": 30, |
43 | 43 | "id": "53a1bc5c", |
44 | 44 | "metadata": {}, |
45 | 45 | "outputs": [], |
|
206 | 206 | }, |
207 | 207 | { |
208 | 208 | "cell_type": "code", |
209 | | - "execution_count": 4, |
| 209 | + "execution_count": 31, |
210 | 210 | "id": "90648527", |
211 | 211 | "metadata": {}, |
212 | 212 | "outputs": [], |
213 | 213 | "source": [ |
214 | | - "auth = \"d83bd9af-be31-47ca-ae1a-dcb34207daf6\"\n", |
| 214 | + "auth = \"6aed3476-ac43-412f-8ee7-9d066024e661\"\n", |
215 | 215 | "buildcompiler = BuildCompiler(None, \"https://synbiohub.org\", auth)\n", |
216 | 216 | "\n", |
217 | 217 | "buildcompiler.index_collections(\n", |
|
223 | 223 | }, |
224 | 224 | { |
225 | 225 | "cell_type": "code", |
226 | | - "execution_count": 5, |
| 226 | + "execution_count": 32, |
227 | 227 | "id": "99d093a8", |
228 | 228 | "metadata": {}, |
229 | 229 | "outputs": [ |
|
232 | 232 | "output_type": "stream", |
233 | 233 | "text": [ |
234 | 234 | "Plasmids: [Plasmid:\n", |
235 | | - " Name: pB0032_BC_B_C\n", |
236 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0032_BC/1\n", |
| 235 | + " Name: pB0034_BC_B_C\n", |
| 236 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0034_BC/1\n", |
237 | 237 | " Strain: None\n", |
238 | 238 | " Fusion Sites: ['B', 'C'] Antibiotic Resistance: Ampicillin\n", |
239 | 239 | ", Plasmid:\n", |
240 | | - " Name: pE1010_CD_C_D\n", |
241 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pE1010_CD/1\n", |
| 240 | + " Name: pJ23106_AB_A_B\n", |
| 241 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23106_AB/1\n", |
242 | 242 | " Strain: None\n", |
243 | | - " Fusion Sites: ['C', 'D'] Antibiotic Resistance: Ampicillin\n", |
| 243 | + " Fusion Sites: ['A', 'B'] Antibiotic Resistance: Ampicillin\n", |
244 | 244 | ", Plasmid:\n", |
245 | | - " Name: pJ23106_GB_B_G\n", |
246 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23106_GB/1\n", |
| 245 | + " Name: pB0015_DF_D_F\n", |
| 246 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0015_DF/1\n", |
247 | 247 | " Strain: None\n", |
248 | | - " Fusion Sites: ['B', 'G'] Antibiotic Resistance: Ampicillin\n", |
| 248 | + " Fusion Sites: ['D', 'F'] Antibiotic Resistance: Ampicillin\n", |
249 | 249 | ", Plasmid:\n", |
250 | | - " Name: pB0033_BC_B_C\n", |
251 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0033_BC/1\n", |
| 250 | + " Name: pB0032_BC_B_C\n", |
| 251 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0032_BC/1\n", |
252 | 252 | " Strain: None\n", |
253 | 253 | " Fusion Sites: ['B', 'C'] Antibiotic Resistance: Ampicillin\n", |
254 | 254 | ", Plasmid:\n", |
255 | | - " Name: pJ23116_GB_B_G\n", |
256 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_GB/1\n", |
| 255 | + " Name: pJ23106_GB_B_G\n", |
| 256 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23106_GB/1\n", |
257 | 257 | " Strain: None\n", |
258 | 258 | " Fusion Sites: ['B', 'G'] Antibiotic Resistance: Ampicillin\n", |
259 | 259 | ", Plasmid:\n", |
|
262 | 262 | " Strain: None\n", |
263 | 263 | " Fusion Sites: ['B', 'F'] Antibiotic Resistance: Ampicillin\n", |
264 | 264 | ", Plasmid:\n", |
265 | | - " Name: pB0015_DE_D_E\n", |
266 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0015_DE/1\n", |
| 265 | + " Name: pJ23100_AB_A_B\n", |
| 266 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23100_AB/1\n", |
267 | 267 | " Strain: None\n", |
268 | | - " Fusion Sites: ['D', 'E'] Antibiotic Resistance: Ampicillin\n", |
| 268 | + " Fusion Sites: ['A', 'B'] Antibiotic Resistance: Ampicillin\n", |
| 269 | + ", Plasmid:\n", |
| 270 | + " Name: pE1010_CD_C_D\n", |
| 271 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pE1010_CD/1\n", |
| 272 | + " Strain: None\n", |
| 273 | + " Fusion Sites: ['C', 'D'] Antibiotic Resistance: Ampicillin\n", |
269 | 274 | ", Plasmid:\n", |
270 | 275 | " Name: pB0015_DG_D_G\n", |
271 | 276 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0015_DG/1\n", |
272 | 277 | " Strain: None\n", |
273 | 278 | " Fusion Sites: ['D', 'G'] Antibiotic Resistance: Ampicillin\n", |
274 | 279 | ", Plasmid:\n", |
275 | | - " Name: pJ23100_FB_B_F\n", |
276 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23100_FB/1\n", |
| 280 | + " Name: pB0033_BC_B_C\n", |
| 281 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0033_BC/1\n", |
277 | 282 | " Strain: None\n", |
278 | | - " Fusion Sites: ['B', 'F'] Antibiotic Resistance: Ampicillin\n", |
| 283 | + " Fusion Sites: ['B', 'C'] Antibiotic Resistance: Ampicillin\n", |
279 | 284 | ", Plasmid:\n", |
280 | | - " Name: pJ23100_GB_B_G\n", |
281 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23100_GB/1\n", |
| 285 | + " Name: pJ23106_EB_B_E\n", |
| 286 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23106_EB/1\n", |
282 | 287 | " Strain: None\n", |
283 | | - " Fusion Sites: ['B', 'G'] Antibiotic Resistance: Ampicillin\n", |
| 288 | + " Fusion Sites: ['B', 'E'] Antibiotic Resistance: Ampicillin\n", |
284 | 289 | ", Plasmid:\n", |
285 | 290 | " Name: pJ23116_EB_B_E\n", |
286 | 291 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_EB/1\n", |
|
292 | 297 | " Strain: None\n", |
293 | 298 | " Fusion Sites: ['B', 'E'] Antibiotic Resistance: Ampicillin\n", |
294 | 299 | ", Plasmid:\n", |
295 | | - " Name: pJ23106_AB_A_B\n", |
296 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23106_AB/1\n", |
| 300 | + " Name: pJ23100_GB_B_G\n", |
| 301 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23100_GB/1\n", |
297 | 302 | " Strain: None\n", |
298 | | - " Fusion Sites: ['A', 'B'] Antibiotic Resistance: Ampicillin\n", |
| 303 | + " Fusion Sites: ['B', 'G'] Antibiotic Resistance: Ampicillin\n", |
299 | 304 | ", Plasmid:\n", |
300 | 305 | " Name: pE0040_CD_C_D\n", |
301 | 306 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pE0040_CD/1\n", |
302 | 307 | " Strain: None\n", |
303 | 308 | " Fusion Sites: ['C', 'D'] Antibiotic Resistance: Ampicillin\n", |
304 | 309 | ", Plasmid:\n", |
305 | | - " Name: pJ23106_EB_B_E\n", |
306 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23106_EB/1\n", |
| 310 | + " Name: pJ23116_AB_A_B\n", |
| 311 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_AB/1\n", |
307 | 312 | " Strain: None\n", |
308 | | - " Fusion Sites: ['B', 'E'] Antibiotic Resistance: Ampicillin\n", |
| 313 | + " Fusion Sites: ['A', 'B'] Antibiotic Resistance: Ampicillin\n", |
| 314 | + ", Plasmid:\n", |
| 315 | + " Name: pJ23116_FB_B_F\n", |
| 316 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_FB/1\n", |
| 317 | + " Strain: None\n", |
| 318 | + " Fusion Sites: ['B', 'F'] Antibiotic Resistance: Ampicillin\n", |
309 | 319 | ", Plasmid:\n", |
310 | 320 | " Name: pE0030_CD_C_D\n", |
311 | 321 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pE0030_CD/1\n", |
312 | 322 | " Strain: None\n", |
313 | 323 | " Fusion Sites: ['C', 'D'] Antibiotic Resistance: Ampicillin\n", |
314 | 324 | ", Plasmid:\n", |
315 | | - " Name: pB0034_BC_B_C\n", |
316 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0034_BC/1\n", |
317 | | - " Strain: None\n", |
318 | | - " Fusion Sites: ['B', 'C'] Antibiotic Resistance: Ampicillin\n", |
319 | | - ", Plasmid:\n", |
320 | | - " Name: pJ23100_AB_A_B\n", |
321 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23100_AB/1\n", |
322 | | - " Strain: None\n", |
323 | | - " Fusion Sites: ['A', 'B'] Antibiotic Resistance: Ampicillin\n", |
324 | | - ", Plasmid:\n", |
325 | 325 | " Name: pB0015_DH_D_H\n", |
326 | 326 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0015_DH/1\n", |
327 | 327 | " Strain: None\n", |
328 | 328 | " Fusion Sites: ['D', 'H'] Antibiotic Resistance: Ampicillin\n", |
329 | 329 | ", Plasmid:\n", |
330 | | - " Name: pJ23116_FB_B_F\n", |
331 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_FB/1\n", |
| 330 | + " Name: pB0015_DE_D_E\n", |
| 331 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0015_DE/1\n", |
332 | 332 | " Strain: None\n", |
333 | | - " Fusion Sites: ['B', 'F'] Antibiotic Resistance: Ampicillin\n", |
| 333 | + " Fusion Sites: ['D', 'E'] Antibiotic Resistance: Ampicillin\n", |
334 | 334 | ", Plasmid:\n", |
335 | | - " Name: pB0015_DF_D_F\n", |
336 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0015_DF/1\n", |
| 335 | + " Name: pJ23116_GB_B_G\n", |
| 336 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_GB/1\n", |
337 | 337 | " Strain: None\n", |
338 | | - " Fusion Sites: ['D', 'F'] Antibiotic Resistance: Ampicillin\n", |
| 338 | + " Fusion Sites: ['B', 'G'] Antibiotic Resistance: Ampicillin\n", |
339 | 339 | ", Plasmid:\n", |
340 | | - " Name: pJ23116_AB_A_B\n", |
341 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23116_AB/1\n", |
| 340 | + " Name: pJ23100_FB_B_F\n", |
| 341 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pJ23100_FB/1\n", |
342 | 342 | " Strain: None\n", |
343 | | - " Fusion Sites: ['A', 'B'] Antibiotic Resistance: Ampicillin\n", |
| 343 | + " Fusion Sites: ['B', 'F'] Antibiotic Resistance: Ampicillin\n", |
344 | 344 | "]\n", |
345 | 345 | "Backbones: [Plasmid:\n", |
346 | | - " Name: DVK_FG_F_G\n", |
347 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/DVK_FG/1\n", |
348 | | - " Strain: None\n", |
349 | | - " Fusion Sites: ['F', 'G'] Antibiotic Resistance: Kanamycin\n", |
350 | | - ", Plasmid:\n", |
351 | | - " Name: DVK_AE_A_E\n", |
352 | | - " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/DVK_AE/1\n", |
353 | | - " Strain: None\n", |
354 | | - " Fusion Sites: ['A', 'E'] Antibiotic Resistance: Kanamycin\n", |
355 | | - ", Plasmid:\n", |
356 | 346 | " Name: DVK_GH_G_H\n", |
357 | 347 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/DVK_GH/1\n", |
358 | 348 | " Strain: None\n", |
|
362 | 352 | " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/DVK_EF/1\n", |
363 | 353 | " Strain: None\n", |
364 | 354 | " Fusion Sites: ['E', 'F'] Antibiotic Resistance: Kanamycin\n", |
| 355 | + ", Plasmid:\n", |
| 356 | + " Name: DVK_FG_F_G\n", |
| 357 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/DVK_FG/1\n", |
| 358 | + " Strain: None\n", |
| 359 | + " Fusion Sites: ['F', 'G'] Antibiotic Resistance: Kanamycin\n", |
| 360 | + ", Plasmid:\n", |
| 361 | + " Name: DVK_AE_A_E\n", |
| 362 | + " Definition: https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/DVK_AE/1\n", |
| 363 | + " Strain: None\n", |
| 364 | + " Fusion Sites: ['A', 'E'] Antibiotic Resistance: Kanamycin\n", |
365 | 365 | "]\n" |
366 | 366 | ] |
367 | 367 | } |
|
382 | 382 | }, |
383 | 383 | { |
384 | 384 | "cell_type": "code", |
385 | | - "execution_count": 6, |
| 385 | + "execution_count": 33, |
386 | 386 | "id": "9cdd18d0", |
387 | 387 | "metadata": {}, |
388 | 388 | "outputs": [], |
|
404 | 404 | }, |
405 | 405 | { |
406 | 406 | "cell_type": "code", |
407 | | - "execution_count": 7, |
| 407 | + "execution_count": 34, |
408 | 408 | "id": "d76dbdeb", |
409 | 409 | "metadata": {}, |
410 | 410 | "outputs": [ |
|
459 | 459 | }, |
460 | 460 | { |
461 | 461 | "cell_type": "code", |
462 | | - "execution_count": 8, |
| 462 | + "execution_count": 35, |
463 | 463 | "id": "3bcf02fb", |
464 | 464 | "metadata": {}, |
465 | 465 | "outputs": [ |
|
469 | 469 | "'Valid.'" |
470 | 470 | ] |
471 | 471 | }, |
472 | | - "execution_count": 8, |
| 472 | + "execution_count": 35, |
473 | 473 | "metadata": {}, |
474 | 474 | "output_type": "execute_result" |
475 | 475 | } |
|
480 | 480 | }, |
481 | 481 | { |
482 | 482 | "cell_type": "code", |
483 | | - "execution_count": 9, |
| 483 | + "execution_count": 36, |
484 | 484 | "id": "47bcde97", |
485 | 485 | "metadata": {}, |
486 | 486 | "outputs": [ |
|
768 | 768 | }, |
769 | 769 | { |
770 | 770 | "cell_type": "code", |
771 | | - "execution_count": 17, |
| 771 | + "execution_count": 37, |
772 | 772 | "id": "66b401f9", |
773 | 773 | "metadata": {}, |
774 | 774 | "outputs": [ |
775 | 775 | { |
776 | 776 | "name": "stdout", |
777 | 777 | "output_type": "stream", |
778 | 778 | "text": [ |
779 | | - "https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pE0040_CD/Fusion_Site_C_2/1\n", |
780 | | - "https://synbiohub.org/user/Gon/CIDARMoCloParts/Fusion_Site_C_sequence/1\n" |
| 779 | + "https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pE0040_CD/dva_backbone_core_5/1\n", |
| 780 | + "https://synbiohub.org/user/Gon/CIDARMoCloParts/dva_backbone_core_seq/1\n" |
781 | 781 | ] |
782 | 782 | } |
783 | 783 | ], |
|
793 | 793 | }, |
794 | 794 | { |
795 | 795 | "cell_type": "code", |
796 | | - "execution_count": null, |
| 796 | + "execution_count": 38, |
797 | 797 | "id": "32dddc4d", |
798 | 798 | "metadata": {}, |
| 799 | + "outputs": [ |
| 800 | + { |
| 801 | + "name": "stdout", |
| 802 | + "output_type": "stream", |
| 803 | + "text": [ |
| 804 | + "l0: ['Fusion_Site_B_2', 'B0034_3', 'Fusion_Site_C_4', 'dva_backbone_core_5']\n", |
| 805 | + "l1: ['Ligation_Scar_C', 'dvk_backbone_core', 'Ligation_Scar_D', 'Ligation_Scar_A', 'B0015', 'B0034', 'Ligation_Scar_B', 'E0030_yfp', 'J23100', 'Ligation_Scar_E']\n" |
| 806 | + ] |
| 807 | + } |
| 808 | + ], |
| 809 | + "source": [ |
| 810 | + "l0_plas = plas_doc.get(\n", |
| 811 | + " \"https://synbiohub.org/user/Gon/CIDARMoCloPlasmidsKit/pB0034_BC/1\"\n", |
| 812 | + ")\n", |
| 813 | + "l1_plas = transformation_doc.get(\n", |
| 814 | + " \"https://synbiohub.org/user/Gon/buildplanner_bacteerial_transformation/composite_1/1\"\n", |
| 815 | + ")\n", |
| 816 | + "\n", |
| 817 | + "print(\"l0:\", [comp.displayId for comp in l0_plas.getInSequentialOrder()])\n", |
| 818 | + "print(\"l1:\", [comp.displayId for comp in l1_plas.components])" |
| 819 | + ] |
| 820 | + }, |
| 821 | + { |
| 822 | + "cell_type": "code", |
| 823 | + "execution_count": 39, |
| 824 | + "id": "e4cddafc", |
| 825 | + "metadata": {}, |
| 826 | + "outputs": [], |
| 827 | + "source": [ |
| 828 | + "from buildcompiler.constants import PART_ROLES\n", |
| 829 | + "\n", |
| 830 | + "\n", |
| 831 | + "def is_single_part(plasmid: sbol2.ComponentDefinition, sbh) -> bool:\n", |
| 832 | + " num_components = len(plasmid.components)\n", |
| 833 | + "\n", |
| 834 | + " if num_components != 4:\n", |
| 835 | + " return False\n", |
| 836 | + " else:\n", |
| 837 | + " component_definitions = [\n", |
| 838 | + " get_or_pull(sbol2.Document(), sbh, comp.definition)\n", |
| 839 | + " for comp in plasmid.getInSequentialOrder()\n", |
| 840 | + " ]\n", |
| 841 | + "\n", |
| 842 | + " for index, comp in enumerate(component_definitions):\n", |
| 843 | + " if bool(set(comp.roles) & set(PART_ROLES)): # identify part index\n", |
| 844 | + " previous_component = component_definitions[(index - 1) % num_components]\n", |
| 845 | + " next_component = component_definitions[(index + 1) % num_components]\n", |
| 846 | + " print(previous_component, comp, next_component)\n", |
| 847 | + "\n", |
| 848 | + " if (\n", |
| 849 | + " RESTRICTION_ENZYME_ASSEMBLY_SCAR in previous_component.roles\n", |
| 850 | + " and RESTRICTION_ENZYME_ASSEMBLY_SCAR in next_component.roles\n", |
| 851 | + " ):\n", |
| 852 | + " return True\n", |
| 853 | + "\n", |
| 854 | + " return False" |
| 855 | + ] |
| 856 | + }, |
| 857 | + { |
| 858 | + "cell_type": "code", |
| 859 | + "execution_count": 40, |
| 860 | + "id": "8def50e5", |
| 861 | + "metadata": {}, |
| 862 | + "outputs": [ |
| 863 | + { |
| 864 | + "name": "stdout", |
| 865 | + "output_type": "stream", |
| 866 | + "text": [ |
| 867 | + "https://synbiohub.org/user/Gon/CIDARMoCloParts/Fusion_Site_B/1 https://synbiohub.org/user/Gon/CIDARMoCloParts/B0034/1 https://synbiohub.org/user/Gon/CIDARMoCloParts/Fusion_Site_C/1\n", |
| 868 | + "True\n", |
| 869 | + "False\n" |
| 870 | + ] |
| 871 | + } |
| 872 | + ], |
| 873 | + "source": [ |
| 874 | + "print(is_single_part(l0_plas, buildcompiler.sbh))\n", |
| 875 | + "print(is_single_part(l1_plas, buildcompiler.sbh))" |
| 876 | + ] |
| 877 | + }, |
| 878 | + { |
| 879 | + "cell_type": "code", |
| 880 | + "execution_count": null, |
| 881 | + "id": "00d7a782", |
| 882 | + "metadata": {}, |
799 | 883 | "outputs": [], |
800 | 884 | "source": [] |
801 | 885 | } |
|
0 commit comments